Binary Heaps in C
After conducting a short search for a decent implementation of a binary heap in C I ended up having to write one. Some requirements were: no dependencies, no dynamically allocated memory, no need to...
View ArticleTexture Atlases
Texture atlases for 2D games is a great optimization for batching together tons of different sprites (especially quads) with a very few number of draw calls. Making them is a pain. For pixel art or...
View Article2D Collision Detection Library – tinyc2
Collision detection is pretty hard. Making 2D games is pretty fun. Wouldn’t it be nice to make a cool 2D game without fiddly around forever with collisions? With the single-file C header library tinyc2...
View ArticleGame Localization and UTF-8
After some research I have decided a pretty good way to localize your game is to store all text in text files, in UTF-8 format. UTF-8 is super widely used and 100% backwards compatible with ASCII. Also...
View ArticleWriting a Game Engine in 2017
Writing a game engine in 2017, what does that look like? Should a developer download Unity? Gamemaker? Love2D? Almost certainly, correct? Why would anyone want to create a game engine… In 2017? This...
View ArticleMath Library Experiences
Here are the major points I’ve learned after trying out a variety of math libraries, both in my own time and my professional time, and after implementing a few styles with a variety of performance...
View ArticleCharacter Controllers
I created a demo called player2d by implementing a swept 2D character controller, showcasing a bunch of cute_headers in action. There are also a set of slides made for a talk at a local university...
View ArticleVirtual File Systems in Games
After a particularly elucidating conversation with Mattias Gustavsson on Twitter, I came to the delightful realization that a well utilized virtual path system can be make writing games a lot more fun....
View ArticleHash Tables, Sorting, and Security
I’d like to recommend Mattias Gustavsson’s hash table he has open sourced on github. The implementation stores a few arrays, the most interesting one is a layer of indirection between mapping hashes to...
View Articlestd::vector and Minimizing Includes
I like std::vector quite a bit except for a couple side-effects. Here are the side-effects I do not enjoy. Debug builds are slow due to copious debug checks. Constructors and destructors are *always*...
View ArticleError Codes and Error Handling
There is a longstanding and ongoing debate in the industry on whether exceptions or error codes are superior when it comes to handling and report errors. I will share my opinion. Error codes are...
View ArticleBase64 Encoding and some Opinions
Recently I had a need to do some base64 encoding in C. I was hoping to find two functions, one for encode and one for decode. base64 encoding is useful to transmit a byte array over text in a safe...
View ArticleCollision Detection in 2D or 3D – Some Steps for Success
These are my personal opinions about recommended readings for collision detection in either 2D or 3D. This post is intended to act as a jumpstart in order to avoid endless swaths of outdated, poorly...
View ArticleDatastructure APIs in C++
Designing a great data structure API is mostly a grey area with lots of room for opinions. Why care about my opinion? Well, take a peek at some of my headers on GitHub. If you think they might look...
View ArticleA Primer on sokol_gfx.h
sokol_gfx.h by Andre Weissflog is the best 3D API wrapper I’ve ever seen. It’s just the bare minimum common-slice between all the modern rendering APIs on today’s platforms, nothing more, with a very...
View ArticleECS and Data Structures
This post is more for beginners or hobbyists interested in learning a bit more about common data structures used in games nowadays (circa 2021) in C/C++, and talks a little bit about Entity Component...
View ArticlePretending emscripten_set_main_loop Doesn’t Exist with Coroutines
Writing a main loop for a game usually looks something like this, an infinite loop inside the main entry point. int main(int argc, const char** argv) { app_t* app = create_app(/* params */);...
View ArticleАнал с русской зрелкой
The post Анал с русской зрелкой first appeared on Анал со зрелой.
View ArticleДомашний анал со зрелой
The post Домашний анал со зрелой first appeared on Анал со зрелой.
View ArticleЖесткий анал со зрелой
The post Жесткий анал со зрелой first appeared on Анал со зрелой.
View Article