Edict.20170915

This fortnight saw a lot of Vulkan experimentation and further work towards consistent vertex buffer handling in asset loading and dynamic geometry generators.

Vulkan

Delving into Vulkan for a week was interesting, but very intimidating. There are an amazing number of concepts that need to be chained together to accomplish …

more ...

Functional Style Preprocessor Macros

The C preprocessor has a deservedly poor reputation as a means to define function-like code. However there aren’t many guaranteed alternatives for trivial code generation without resorting to external tools. I’ve been making use of it for some time to iterate over lists of types when manually instantiating …

more ...

Edict.20170904

The bulk of this weeks work focused on integration of game logic with the render libraries, chasing up toolchain issues, and investigating an OpenGL state management bug. I’m still well and truely focussed on fairly dry technical and internal development details here.

Simluation reintegration

We’re now back to …

more ...

Linux swap over loopback devices

Some Linux filesystems do not natively support swapfiles as they do not implement the required kernel calls or are unable to do so. Notable amongst this list of filesystem is btrfs, whose snapshot functionality I use to streamline my backup system.

Unfortunately, some systems I maintain have a chronic lack …

more ...

Gentoo pkg-config and cross-compilation

A note to myself (given that I’ve solved this issue a few times now).

If you’re attempting to cross-compile under Gentoo, and are using pkg-config, certain functionality will be silently disabled. Of particular note for my purposes is PKG_CONFIG_PATH, which I use as part of my autotools sub-package …

more ...

Debugging with Library Interposition

At some point when debugging one will encounter a scenario where it is desirable to modify or observe an application’s interaction with an external library (or the system). Various techniques are available, but few are quite as straightforward as ‘library interposition’: the practice of overriding references to symbols from …

more ...

KVM and WiFi

When developing cross-platform code, testing is critical. Access to various families of operating systems will allow rapid identification of (some) inadvertent platform specific assumptions. While there are some public testing services, like Travis CI, you will inevitably need to test locally at some point. I use a set of small …

more ...

Cross platform unit testing with Wine and Autotools

My current project targets the Windows and Linux operating systems. Development is primarily under Linux and uses the Autotools build system. Windows binaries are generated with the mingw cross compilers. This setup isn’t for everyone, but it suits me quite well.

For my testing needs I use Automake’s …

more ...

Coherent Noise Generation: First Principles

Randomness plays a key roll in many graphics and simulation techniques. Variations in behaviour can make simulations feel more alive. Randomised worlds can keep exploration alive in games.

Often a simple call to your language’s equivalent to rand for will suffice; perhaps modified by a non-uniform distribution. But what …

more ...