Posted by: Morten Nobel-Jørgensen | November 30, 2014

PolyPlane and the Kick engine

polyplaneAt this years (Autumn) Exile Jam I ended up creating a small game(like) thing called PolyPlane. Here is a few details of the implementation.

For a long time I have been fascinated by low poly 3D art. Inspired by the image below, I decided to create a game where you control an airplane.

Low Poly by Vitaliy Prusakov

Inspiration: “Low Poly” by Vitaliy Prusakov [Link]

Creating the game was also a nice opportunity to use my new (and slightly unfinished) game engine called Kick for something more that writing simple hello 3D world programs.

I started by modelling an airplane and some trees. The modelling of the terrain took a few iteration to get working – I ended up using a significant different terrain that used on the image above. For terrain I extruded some organic shapes from a 2D plane (think extruded height-curves), which were colored based on their height.

I also had to write an PLY model importer for the Kick engine to be able to import vertex-colored geometry. One nice thing using my own engine is to be able to design and tweak everything. The downside is when it doesn’t work there is only one person to blame 🙂

The engine is designed with crossplatform support in mind, which for instance means that the shaders can be cross-compiled from GLSL 330 to GLSL ES 2.0 on the fly. The engine also is built on top of SDL2 which also runs on most platforms. The code, however, is only tested on OS/X and WebGL (compiled using Emscripten). The engine includes a build-tool called emmake.js for compiling emscripten projects in an easy way.

The WebGL build can be found on GitHub Pages:
And the PolyPlane project can be found on GitHub:
Finally the Kick engine is also hosted on GitHub:


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


%d bloggers like this: