Knights Journey


Engine: My own engine built on SFML API (SFML v2.4.1)

My Role: All Programming

Team Size: 4

Download Demo: Click Here

Source Code: Click Here

Description

Many Monsters have attacked the village and the people ask the brave knight for a rescue. Defeat all the monsters and banish their leader. A game create using a custom engine built on the SFML Graphics API.

I worked with 3 artists to produce this game where they did all the sprites, level design and animation and I did all the programming in C++. The SFML API is a 2D graphics library using OpenGL that makes rendering sprites and basic shapes easier. This is however all the API does, it only provides the basic tool for displaying a sprite. Physics, Collision, UI and even more complex sprite functions like sprite animations where all custom coded for this game. I created a mini engine that deals with all this using a basic components system seen in many engines today. The engine supports box collisions, physics complex enough to deal with forces, inertia, momentum and pushing and pulling objects. For the level designer on the project, I also created a level design tool allowing him to very easily program in sprites for the level. These sprites would have their collision and any physics needed to be setup automatically. I made this project at a time where I was still learning many concepts of programming so I am very proud to have been able to make all this in the time span of only one month and even with my better skills today I would change very little of that code.

The download links above include the exe for playing the game and the source code. If downloading the source code you will need SFML v2.4.1 for intellisense to recognize my code.

Project Technical Aspects

Created my own Mini Engine
Since SFML only deals with basic 2D rendering I has to create an engine for Physics, Collision, UI, Different Levels, and more complex sprite features such as sprite animations. The engine uses a component system that each class can add when constructed to provide the functionality. At the time I was familiar with the Unity Engine so I created the architecture of my own engine to be similar. This game made in my engine even uses scripts that I programmed and used as components or extensions of the class just like normal game engines.
Full Game not using an Engine
This was my second full game that did not use a game engine. This was of-course challenging since many of the mechanics were made from complete scratch. I had never intended to make a small engine for this game to work with on but since many of the mechanics used similar logic like collision, I had to generalize my code enough and it resulted me in creating an engine. Once my engine had all the functionality I needed, creating this game became simple since I just needed to use that functionality and script the behaviour.
Creating tools from scratch for artists
I was working with 3 other artists that were not as savy in programming as me and since at the time I was unable to create a full UI for adding art assets and managing them, I instead programmed wrapper classes that used my engine code and made the programming of many of the art functionalities simpler. The best example for this is the sprite animation class. The class supported sprite animations in any configuration and the user was able to specify different animation and which frames on the sprites sheet were used for it. I created a wrapper around this complex class that simply required the artist to fill in the arguments of a function and all the calculations would be done and saved for them to be used in the game.