Posts

Declarative Functional APIs - A.K.A. Abusing Lambda Parameters

May 19 2018



Functional APIs are a joy to work with. Not only do they help eliminate certain bug categories, but they tend to be very flexible and reusable. Today I present a technique that has emerged while I was simplifying some lambda based APIs. C++17 makes template meta-programming much more palatable, I dare not imagine what this would look like in C++11.

Simplifying Compile-Time Options With if constexpr

November 20 2017



My latest little experiment relates to compile-time options and eliminating preprocessor checks in user code. I’m not a big fan of MACROs, especially when they are simply used to make compile-time branches. I am also not a fan of other techniques used to minimize this problem. With C++17, we now have a beautiful and simple tool that can help remove all these preprocessor checks, if constexpr.

Friendly Data-Oriented Entity-Component Managers

September 30 2017



In the past months, I’ve rewritten the entity-component system of my engine pet project about three times. Finally, something that ticks all the boxes has emerged. Today, I’d like to present this architecture. So far it has worked wonders for me, though I wouldn’t guarantee this to scale up to AAA sized projects. I still have much testing to do.

Static Duck Typing in C++

May 09 2017



A little while ago, I watched Jason Turner’s great cppcon talk, where he uses C++17 to write a commodore game. At that point, I decided it was quite time I confirm my (now proven false) beliefs on templates. If you ever want to convince a game programmer that templates are fine, show him that talk, and some assembly ;)

Not Impossible : Storing C++ Virtual Method Pointers in C Callbacks.

February 05 2017



A good friend challenged me while we where investigating vtables and various ways to create a reflection system without macros. He stated, “It is impossible to store a virtual method pointer in a C callback”. I decided to prove him wrong. Here, I present the result of this investigation.

GLSL Quicktip: Stringify Macro

February 05 2017



I’ve seen a lot of examples, tutorials and open-source code that use quotes to assign their shader programs to a const char*. Fully fledged engines would have a way to parse text-files, but if you are doing quick and dirty tests like me, you can use this macro to make editing easier.

Game Design Memory Lane - Legacy of Kain: Soul Reaver

October 10 2016



I’ve recently started playing old gems, classics, in an effort to further my game design knowledge, ideas and culture. The games I have chosen are completely new to me. It is truly interesting to delve into very old titles, especially when you remove the nostalgia factor. Here I write my thoughts, impressions and lessons learned from some of these games.

Eve Online - Dual monitor window on OS X

April 17 2016



This simple guide doesn’t require any third-party tools or apps.

A quick guide to help you get the most out of your monitors and Eve. Once you’ve played the game in all its dual screen glory, you will never go back. Lets get started!

Downloading Twitch replays is easy

March 10 2016

Somehow, due to either miss-information or a change it twitch’s apis, the web is filled with false information about livestreamer and downloading twitch replays. Lets fix that.

Crispy text in Unity3D

December 05 2015



We’ve all been there; you import a font into Unity3D, write some UI text and… its blurry [sadface]. Here is a quick reference on how to get buutiful crispy text in the engine.

Eve Online isn't hard, it is annoying

September 26 2015



I’ve recently subscribed for another month of Eve Online. I played a long time ago, and quit after space life got extremely boring and lonely. Last time I logged in, I did so with 4 friends during a discount period. What I write here are my personal thoughts, and some echoes of these long gone pilots. Once my gaming friends left Eve, everything changed. Why the game didn’t appeal to them could fuel a discussion on its’ own.

Fun with std::threads!

August 21 2015



I’ve recently gotten more and more involved with the Wine project. I am a gamer, after all, and having only a Mac laptop and OS X makes it somewhat hard to play games. While debugging wine logs, I’ve encountered a problem many face when using +relay. You can’t just ignore those 4 GB logs, as they often contain the exact reason, or more precisely, the exact location your game/software crashed. I use Sublime Text to read those, it is so far the most performant editor when handling huge text files, quickly and easily dealing with gigabytes of logs. Consider me impressed.

Adding a huge image gallery to wordpress.com

July 23 2015



I am hitting many of the imposed limits on my free blog. I recently wanted to share a ton of textures, but since they were to big for the free space allowed, I resorted to a little “trick” if you will. I ended up creating a script to generate a huge html thumbnail gallery, using a table. It seemed like the best of the available options.

LibAV, libAO and QT5 audio player tutorial.

April 11 2015



A while back I was working on some audio prototyping. I made a simple audio player prototype and was experiencing with different audio plugin APIs. I decided to use libAV (not libavcodec from ffmpeg) for the simple reason that its’ documentation is much much better than ffmpeg. I highly recommend to take advantage of that. There are many examples, code snippets and explanations here. Of course, API documentation is a bit dry when you first start using a library, so here is a tutorial and a good base you can use to build upon.

Thoughts on releasing music under CC licenses.

March 20 2015



A few years back, I released 2 tracks on OpenGameArt. I hadn’t composed any musical pieces in many years, and I took the opportunity to try something new. Not only dip my toes into musical composition again, but also share my work with the world. All my previous songs had never been heard by anyone other than close friends. The experience was nerve-racking but very satisfying.