A Clojure and ClojureScript library for making games that run in both OpenGL and WebGL.
play-cljc is a game development library for Clojure and ClojureScript that allows developers to create games that run in both OpenGL (native) and WebGL (browser) environments. It solves the problem of cross-platform game development by using Clojure's cljc files and macros to share code between platforms without relying on WebAssembly or other complex abstractions.
Clojure and ClojureScript developers interested in game development, particularly those looking to build games that run both natively and in the browser with a unified codebase.
Developers choose play-cljc for its simplicity, transparency, and seamless cross-platform support, leveraging Clojure's strengths to avoid black-box solutions and maintain full control over their game code.
A Clojure and ClojureScript game library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Clojure's cljc files to share code between OpenGL and WebGL targets, enabling games to run natively and in the browser without WebAssembly, as emphasized in the README.
Leverages Clojure macros for efficient code sharing and abstraction, allowing developers to write unified logic for both platforms with minimal boilerplate.
Includes comprehensive example games and interactive 2D/3D demos, providing practical, hands-on guidance for developers to get started quickly.
Offers specialized libraries like tile-soup for map parsing and iglu for shader management, making it easy to add functionality without reinventing the wheel.
Relies on a subreddit and example-based learning, which may lack the depth of formal documentation and active support found in larger game dev ecosystems.
Requires familiarity with Clojure and its toolchain, such as the CLI tool for project generation, creating a steep learning curve for developers new to the language.
Focuses on rendering and core functionality, so advanced features like physics or particle systems need to be implemented manually or with external libraries, adding development overhead.