Jack Boakes

Melbourne, Australia

Breakout

Breakout

After having enjoyed the gameplay, art and vibe of the game Gnomes by the Australian based indie developer DYSTOPIAN, I wanted to test out a similar workflow for the art and practice my pixel art skills.

Both my breakout clone and gnomes are rendered to a screen size of 640x360 pixels locked at 16:9 aspect ratio and scaled up for larger monitors with letterboxing. This allows for perfect pixel scaling on common screen sizes (3x for 1920x1080, 4x for 2560x1440 and 6x for 3840x2160). Restricting myself to a small canvas like this reduces the scope of the art, makes it harder to make mistakes since you have way less pixels to work with, especially for a non-traditional artist like myself.

On the technical side of things, I didn't want the boiler plate of an ECS and just went with a simple fat entity struct, which is simple enough for this size of game. All the game entities are initialised in the constructor and when the textures are loaded the correct texture ID is bound to the type of entity. This allows for an O(1) lookup of the entities texture when rendering in the draw stage.

By using a homogeneous entity struct I can loop over entities and check by flag instead of by type. For example I can loop over all MOVABLE entities and move them without caring about the domain type. Since this style of game has a minimal amount of entities on the screen at any one time, I chose not to construct or destruct new entities during gameplay or level resets. Instead, entities remain in memory, and level resets just toggle the bit flags rather than destroying and recreating entities.

← Back to projects