Oops, good catch, thank you! I am right in the middle of a refactoring pass and missed this part. It is fixed now.
27.08.2025 17:50 β π 1 π 0 π¬ 1 π 0@davidpol.bsky.social
Handcrafted game programming and custom game engines. https://innercomputing.com
Oops, good catch, thank you! I am right in the middle of a refactoring pass and missed this part. It is fixed now.
27.08.2025 17:50 β π 1 π 0 π¬ 1 π 0Just finished implementing asset hot-reloading and dynamic texture atlasing in the engine.
#gamedev #c #sdl
β’ Having access to _Alignof/alignof makes arena allocation nicer, as it can be wrapped in a macro that automatically passes the required alignment for the type (avoiding any waste caused by over-aligning for the worst case).
β’ Anonymous structs/unions make for more succinct code with nested types.
I just upgraded my C99 codebase to C11. It improves a few things here and there:
β’ I use forward declarations a lot. But it turns out redeclaring typedefs in the same scope, which is just fine in C++, is not legal in C99. I only learned about this when compiling with -pedantic for the first time.
A recent Fedora upgrade turned into a "Linux ecosystem: X11 and Wayland" crash course for me, so I wrote some quick notes about it in case they might be helpful. Or, in other words, why SDL 3 might still pick X11 over Wayland even on a Wayland-based distro.
www.innercomputing.com/blog/x11-way...
Some nice improvements for C/C++ programming coming in GCC 15.
developers.redhat.com/articles/202...
C has an official website now!
www.c-language.org
Yes, you can extend the idea depending on how you want to use them. I do single translation unit builds, so linking is not an issue.
02.03.2025 15:07 β π 0 π 0 π¬ 0 π 0Every time I encounter a void*-based collection implementation in C, my heart sinks. π
So I wrote some notes on writing generic collection code, as it turns out you can go pretty far without sacrificing type safety in the process.
#c #gamedev #indiedev
www.innercomputing.com/blog/generic...
Putting an actual end to the game in ante 8 would have made it clearer that this title is not really after the "Slay the Spire playing experience" (where beating the game is more like the actual beginning), but I wonder how such a design decision would have affected its reception.
28.02.2025 11:36 β π 0 π 0 π¬ 0 π 0Some #gamedesign notes by LocalThunk (of Balatro fame). It is very interesting to contrast the 'evergreen, comforting and low-stakes' type of experience the author intended with the way many players are interacting with the game.
localthunk.com/blog/solitaire
Running DOOM on TypeScript types might just be the endgame of the "Can it run DOOM?" subject matter.
www.youtube.com/watch?v=0mCs...
Just finished with the implementation of the 2D sprite renderer for my course. It uses the new GPU API in SDL 3, which is very nicely done.
Now moving on to writing how it all works! βοΈ
#gamedev #c #sdl
Exactly! I have also found that "using the right tool for the job" in practice often means ending up with a combination of different approaches in the same codebase.
05.02.2025 12:57 β π 1 π 0 π¬ 0 π 0Many games have a small and well-defined set of entity and component types, and these are probably better served by an ad-hoc architecture that avoids the rigidity and complexity an ECS would introduce. It can still be data-oriented, but just a simpler approach tailored to the problem at hand.
05.02.2025 11:50 β π 1 π 0 π¬ 1 π 0A data-oriented approach does not _require_ using an ECS architecture. I see ECS more useful when writing code that is intended to be used for a wide variety of different games, or as a way to manage the complexity with game designs involving a combinatorial explosion of behaviors.
05.02.2025 11:50 β π 1 π 0 π¬ 1 π 0Data-oriented programming is about understanding the shape of the data in your problem domain in order to maximize performance on contemporary hardware (and improve modularity in the process): What are the inputs and outputs? What is the transformation process?
www.youtube.com/watch?v=rX0I...
I try to present a non-dogmatic view on the ECS architecture, which is too often introduced as a "One True Way" of doing things nowadays. Many of the original resources on data-oriented programming do not even mention the term ECS in the first place!
gamesfromwithin.com/data-oriente...
Putting the final touches on the entity systems chapter of the course. It covers data-oriented programming and the implementation of an ECS in C, which is a very interesting exercise in terms of design decisions and data structures.
#gamedev #indiedev #gameengine #c #sdl
Orthodox C++ is a reasonable subset if you want to keep things minimal: gist.github.com/bkaradzic/2e...
And if you want to avoid the STL, there are interesting alternatives such as the EASTL, Sane C++ by @pagghiu.bsky.social or Bedrock by @jeremy.laumon.name.
This also means I can finally update this section of my game engine programming course, which makes me very happy.
22.01.2025 09:13 β π 1 π 0 π¬ 0 π 0SDL 3.2.0 is out! This is the first stable release of SDL 3, containing many notable changes and improvements. A particular highlight of mine is the new, compute-ready GPU API.
#gamedev #indiedev #gameengine #c #sdl
github.com/libsdl-org/S...
I wrote some more detailed notes on single translation unit builds in C that might be useful if you are interested in keeping a simple workflow. Sometimes, the best build system is having no build system in the first place.
#c #gamedev #indiedev
www.innercomputing.com/blog/single-...
Designated initializers and compound literals are awesome features of C99 that almost turn C into a new language, so I wrote a small blog post explaining how they work in order to spread the word.
#c #gamedev #indiedev
www.innercomputing.com/blog/designa...
SDL 3.1.8 is out! This pre-release version adds many goodies:
β’ Asynchronous I/O
β’ Main thread dispatching
β’ Desktop tray API
β’ Support for format strings in debug text rendering
#gamedev #indiedev #gameengine #c #sdl
github.com/libsdl-org/S...
Thank you, Michael! Different beasts indeed. π
04.01.2025 14:09 β π 0 π 0 π¬ 0 π 0I wrote some notes on how to get started with C programming. The process can be a bit overwhelming if trying to learn it all at once, and I have found that focusing your efforts on a smaller and more modern subset can be really helpful.
#c #gamedev #indiedev
www.innercomputing.com/blog/how-to-...
Oh I see, thank you! This is great to know, as it made me learn what I did left a pointless GRUB entry.
31.12.2024 14:26 β π 1 π 0 π¬ 0 π 0The solution was to uninstall the current kernel with 'sudo dnf remove' and set the latest as the default with 'sudo grub2-set-default'. A list with the names of the installed kernels can be retrieved with 'rpm -q kernel'.
31.12.2024 08:30 β π 0 π 0 π¬ 1 π 0Today I realized my Linux machine had been stuck with an older kernel version ever since I did the upgrade from Fedora 40 to 41.
'Manually messing with the kernels' rite of passage is now complete.
#framework #linux #fedora