Hi all. Kirpi is a framework I’ve been building as an alternative to mainstream game engines that produce large web builds for my small commercial web projects. Another motivation was simply coding games in Nim — a language I find elegant and enjoyable — while still getting strong performance. It’s still under active development.
https://github.com/erayzesen/kirpi
It uses Naylib as the backend, which is very well-maintained in our community. The graphics API takes inspiration from LÖVE2D because that style has proven itself to be extremely practical for code-centric game development. On the input side, it keeps the straightforward query patterns that I also find very convenient in raylib. For audio, the API stays simple and easy to work with.
Kirpi is designed with a minimal API aimed at small and possibly mid-sized games. I also plan to add a PixiJS backend in the future for the JavaScript target. In short, I take a pragmatic and low-cost approach to the backend, because what truly matters is a simple, sufficient API, the community modules that can grow around it, and the ability to run wherever it needs to. Another reason for this pragmatic approach is the number of abandoned projects in the Nim ecosystem. Even if this project were ever discontinued, it should still keep working thanks to choosing solid, well-established backends.
If you like the project and its direction, feel free to contribute. If we can mature this framework around the core needs, the ecosystem of modules built around it (or already existing ones) could enable some really great things.
sadly, Nico just stopped compiling at some point, I loved it
Er, why not create a PR to make it compile again...
The answer is always time and priorities.
Sending a PR requires diving into the project, debugging, setting up the pipelines. It takes time. And then you have to decide whether you can afford to invest this amount of time at this point in this thing against all other points and things.
To make things more complicated, I think Nico stopped working for me after it switched from JS backend to WASM for web builds, so there's an extra layer to debug apart from the actual code—WASM pipeline. Which means more time to invest.
I guess my usecase is not typical: creating games isn't something I'm obliged to do but a father-son bonding device :-)
If was really fun to spend a couple of hours after work with my son creating a fun little game for my wife. He would draw the pixel art, I would do the coding. Nico fitted perfectly with this flow.
Up until building the actual game became the bottleneck 😅 I want to spend a couple of hours creating a game, not debugging the engine 😁
I think I even made a presentation about using gamedev and Nico in particular as a leisure activity, probably for a NimConf 🤔 I never presented it but the slides must be somewhere out there.
Thanks. Based on my tests, the build configurations work well on the supported platforms. But the project is still under development, and I need a bit more time before it’s ready for a stable release. (I’ll share it here once it’s published.) When the stable version is out, I want to be sure everything is done correctly so I won’t have to introduce any backward-incompatible changes.
Sorry to hear about the trouble you had with Nico, but as someone who develops open-source projects, I can say that even without a PR, the issues you open for bugs and errors are worth gold for both the developer and the community. (At least that’s always been the case for me.)
as someone who develops open-source projects, I can say that even without a PR, the issues you open for bugs and errors are worth gold for both the developer and the community.
Well, I actually did report the issue back when I faced it :-)
Hello everyone again. Our first stable release(1.0.0) is now live. If you encounter any bugs, please report them, and if you have any questions, don’t hesitate to ask.
https://github.com/erayzesen/kirpi
You can install the project using Nimble.
nimble install kirpi Additionally, you can use the kirpi_app_template repository, which comes with ready-to-use build configurations for all platforms, to start a new project.
https://github.com/erayzesen/kirpi_app_template
The examples repo is here: https://github.com/erayzesen/kirpi-examples
I added some learning samples for the kirpi game framework. You can check out the source code and play the live demos directly in your browser.
https://github.com/erayzesen/kirpi?tab=readme-ov-file#learning-samples