8 weeks Solo project

April 2016

Graphics, engine programming


Project Brief

Battleships is my first try to work with OpenGL. The task I was given was mainly to learn how does rendering work in game engines, including writing my own math library for matrix and vector operations. We were given a basic custom engine, made by one of the teachers at NHTV, that dealt with things such as setting up a window, OpenGL, shaders.

Besides understanding the renering pipeline in game engines we had to make a networked battleships game using the given framework. Teachers gave us a server executable that we would connect to, and send and receive packets using the RakNet library.

Project Result

Math library for vectors and matrices

Before starting this project I didn't even know what matrices are. After writing my own math library I understood why and how matrices and vectors are used in rendering, or in engines in general.

OpenGL and Shaders

I had no experience with any rendering APIs prior to this project. By the end of it, I understood the rendering pipeline, how to set up OpenGL, how shaders work. I wrote a basic Blinn-Phong shader, as well as set up spritesheet text rendering using FreeType.

Entity-Component System

To develop the Battleships game I wrote my own entity-component system on top of the framework I was given. I used templates for the first time to do that. This would be the design idea that I developed further when working on Tremble.


I did finish making battleships the game. Although it wasn't my primary focus during the project, the fact that I've made a game proves that both my rendering and the entity-component system work. I made a state machine for different the game states, wrote raycasting code to choose the tiles, and used RakNet to communicate with the server.