Jens Petter

Game Programmer

ChickEngine

2018


I was in a team of 3 programmers during this project. One graphics programmer who was supposed to make a DirectX rendering pipeline for the engine, one gameplay / ai programmer who was supposed to make a small game in the engine that we were making and one engine programmer who was me who was supposed to make the engine and level editor where one can do functionality that would do engine related functionality.



Project info

  • Project: ChickEngine
  • Role(s): Engine programmer
  • Engine: Custom Engine
  • Platform: PC
  • Development time: 8 weeks
  • Team:
    1 eninge programmer
    1 graphics programmer
    1 gameplay programmer
My responsibilities

  • I was responbile for the whole engine in itself except for the graphics part of the engine (loading / drawing models and UI)

Engine features


Technical Design Document

A download link to the technical design document of this project where I wrote page 1 to 30 can be found here


This technical design document covers most of the high level features that are currently in the engine. This is for example the resource management or the ECS of the engine where I also go into multiple solutions to these implementations where in the end the best solution according to me is chosen for that specific implementation of the engine feature. This makes this document also a bit of a research document.


Engine UML

The class diagram UML of the engine itself is quite big. The engine itself starts with the “Application” class. The application class has managers under him such as the “GUIManager” and the “EntityManager”. These managers have their own class that runs “under” this manager class where this manager class of course manages these classes. I tried to simulate a system with this engine where there is one line of communication which goes as follows. The manager classes talk to the application class and the classes that are controlled by these managers talk to the specific manager class. This allows me to program in a way where I can see my managers as “modules” that I can program and pop in and out of the engine itself. There are a few situations where managers need to access other managers which is something that mainly happens with the “WindowManager” where this class needs to know which elements to draw which comes from another manager.


What I learned from this project

I learned a lot while making this engine, apart from learning how to make the actual engine I learned about Jenkins and how to set that up on our school server. I also learned about Javascript and Python a bit.

I also learned about teaem managament a bit more since we used Scrum for this project and I worked with other people who had a specific programming role in the project which was a first fo me.

Apart from learning a lot I also enjoyed this project a lot. I learned this project that I really like tools programming as well when focusing on Jenkins, Javascript and Python.

Let's have a chat!


I'm always happy to talk! Feel free to contact me at any time.