David Pol's Avatar

David Pol

@davidpol.bsky.social

Handcrafted game programming and custom game engines. https://innercomputing.com

272 Followers  |  82 Following  |  51 Posts  |  Joined: 06.12.2023  |  2.2689

Latest posts by davidpol.bsky.social on Bluesky

Post image Post image

Making the course material pleasant to read involves a surprising amount of work and attention to detail. The latest addition: supporting light and dark variations for the images.

While there is always room for further tweaking, it is nice when the different pieces start to fit together.

10.08.2025 12:03 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

β€’ 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.

07.08.2025 13:29 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

07.08.2025 13:29 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
X11/Wayland in SDL 3 On why SDL 3 picks X11 over Wayland on some Wayland-based Linux distros.

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...

14.06.2025 14:21 β€” πŸ‘ 2    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Preview
6 usability improvements in GCC 15 | Red Hat Developer GCC 15 brings better error messages and diagnostics for your code, including prettier execution paths and easier-to-read compiler errors for C++ templates

Some nice improvements for C/C++ programming coming in GCC 15.

developers.redhat.com/articles/202...

11.04.2025 09:04 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
C language The homepage of the C programming language

C has an official website now!

www.c-language.org

19.03.2025 10:23 β€” πŸ‘ 6    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0

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    πŸ“Œ 0
Generic collections in C An overview of different approaches for emulating generics in C.

Every 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...

02.03.2025 14:09 β€” πŸ‘ 17    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0

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    πŸ“Œ 0
Preview
Solitaire β€” LocalThunk I have cited a few games as inspiration for Balatro in the past, but I wanted to talk about one in particular that hasn’t been mentioned much that arguably is the most important. I think if I had som...

Some #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

28.02.2025 11:33 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
TypeScript types can run DOOM
YouTube video by Michigan TypeScript TypeScript types can run DOOM

Running DOOM on TypeScript types might just be the endgame of the "Can it run DOOM?" subject matter.

www.youtube.com/watch?v=0mCs...

27.02.2025 07:09 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Introducing the Framework Desktop The Framework Desktop, a tiny 4.5L Mini-ITX desktop powered by AMD’s massive new Ryzen AI Max processors.

😍

frame.work/blog/introdu...

26.02.2025 11:38 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

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

23.02.2025 15:15 β€” πŸ‘ 16    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0

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    πŸ“Œ 0

Many 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    πŸ“Œ 0

A 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    πŸ“Œ 0
CppCon 2014: Mike Acton "Data-Oriented Design and C++"
YouTube video by CppCon CppCon 2014: Mike Acton "Data-Oriented Design and C++"

Data-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...

05.02.2025 11:50 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP) – Games from Within

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...

05.02.2025 11:50 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

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

05.02.2025 11:50 β€” πŸ‘ 8    πŸ” 3    πŸ’¬ 2    πŸ“Œ 0
Preview
Orthodox C++ Orthodox C++. GitHub Gist: instantly share code, notes, and snippets.

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.

22.01.2025 14:09 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

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    πŸ“Œ 0
Preview
Release 3.2.0 Β· libsdl-org/SDL Announcing the SDL 3 official release! SDL 3.0 is finally here! We have many many people to thank on the road to get here, but I'd like to call out special thanks to: @slouken and @icculus, lead d...

SDL 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...

22.01.2025 09:13 β€” πŸ‘ 10    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0
Single translation unit builds Because, sometimes, the best build system is having no build system.

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-...

19.01.2025 11:59 β€” πŸ‘ 10    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Designated initializers and compound literals in C A better way to initialize structs in modern C code.

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...

11.01.2025 11:40 β€” πŸ‘ 9    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Release 3.1.8 Β· libsdl-org/SDL This is an update to the SDL Stable ABI Preview. As promised, this update maintains ABI compatibility with 3.1.3, and has lots of bug fixes as we head towards 3.2.0 release. In addition, this updat...

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...

08.01.2025 14:03 β€” πŸ‘ 9    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Thank you, Michael! Different beasts indeed. πŸ™‚

04.01.2025 14:09 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
How to get started with C programming Some notes on making your learning journey a bit less daunting.

I 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-...

04.01.2025 10:02 β€” πŸ‘ 16    πŸ” 4    πŸ’¬ 0    πŸ“Œ 1

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    πŸ“Œ 0

The 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    πŸ“Œ 0
Post image

Today 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

31.12.2024 08:30 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@davidpol is following 20 prominent accounts