> [!info]- Article PGP Signature > > To verify this signature, use the public key on the [[Hello, World!|Home Page]] and follow the instructions linked there. > > ``` > -----BEGIN PGP SIGNATURE----- > -----END PGP SIGNATURE----- > ``` > ## Today's Topics: Starting a game-dev project ##### August 28th, 2025, ca. 20:00 -0400 --- ### Contributions - None today. Started a new _private_ repository to work on my game idea. ### Fun with Raylib Game development in C has come a long way with the surging popularity of new, tiny, and performant graphics APIs. One popular OpenGL-based API that's a lot of fun to use when writing in C is [raylib](https://www.raylib.com/). Guess what C3 has a nice bindings library for?? **Yep**. All you have to do is pull down the bindings library from the [C3 vendor repo](https://github.com/c3lang/vendor), and if you compile cURL into your instance of `c3c`, this comes with the `vendor-fetch` sub-command. #### Getting Started It was literally this easy: - Compile `c3c` according to [the instructions in the README](https://github.com/c3lang/c3c). - Or just *download the package* appropriate for your OS. - Initialize the new game project: `mkcd my-game && c3c init my-game`. - Fetch raylib5.5: `cd lib/; c3c vendor-fetch raylib55; cd ..`. - \[if you need to...\] Add the `"raylib55"` dependency name to `project.json` under the `dependencies` array. - Add skeleton code (below) to `src/main.c3`. - Run `c3c run`. Then run this sample code: ```swift module my_game; import raylib5::rl; fn void main() { rl::initWindow(800, 600, "Hi from C3!"); while (!rl::windowShouldClose()) { rl::beginDrawing(); rl::clearBackground(rl::GOLD); rl::endDrawing(); } rl::closeWindow(); } ``` Wow, you're already ready to start game development with C3! ![[cool.gif]] --- #### What Kind of Game is it? I'm interested in making a [bullet hell](https://en.wikipedia.org/wiki/Bullet_hell) style game in 2D, top-down. If you've ever played [Ginormo Sword](https://www.crazygames.com/game/ginormo-sword), it's basically that but missile-only and it will turn into a _bullet heaven_ game the further you progress. The one unique thing is that some levels will have bullet-hell style gameplay mixed with a movement-based strategy, where most entities and projectiles will only update as the player moves. Think of it as physics and enemy pathing only update as you press the arrow keys. And there will be other environmental mechanics based on that. So yeah, lots of physics involved. Level system. Difficulty. Whatever else. I'm trying not to let the scope of the project walk too far because I just want to finally make a game and earn street-cred with all the young kids, who hear I write software and then don't know what SHA-3 is or what single-packet authorization is. >:( \[*only joking, of course*\] --- ### Wrapping Up You may say I'm a masochist for starting this. You may also say I lied to myself and you last week when I put together that table of what I was going to work on. *You are right.* :( **However**, I still do plan to continue all of these revolving projects, somehow. I don't plan to stop the others just to pursue this game-dev idea. In fact, Ii can already tell there are going to be plenty of days when I can't stand the sight of this budding code library. I'm already not a very artsy person, so that's going to hinder me big-time when it comes to story and assets. Another thing that's probably going to hold me back is the fact that I'm sincerely just not a fan of using other peoples' stuff if I don't have to. Raylib is of course and exception here, but I'm not particularly interested in finding a physics engine that's already built on top of Raylib (for example). But... it would be cool to create one! (Let's not get any more big ideas, ok??) Anyway, that's enough for today. SEE YA.