Game Programmer

Tomorrow Engine

The Tomorrow Engine is a custom turn based strategy engine that is written in C++ and runs on PC and PS4. The focus on of the engine being implementing deterministic card games with flexible gameplay extendibility using Lua Scripting.

The engine went through three development phases: Concept phase, production phase and release phase. The result of the last phase was the production of the card game "Reptoads" which the engine used as target to extend and enhance the functionality from the production phase..

Duration:

4 Months (Engine) + 2 Months (Game)

Team Size:

11 Programmers, 5 Designers, 8 Artists and 1 Producer

Engine:

Custom Engine: Tomorrow Engine

Roles:

Engine, Gameplay and Network Programmer

Platforms:

Technologies:

Lua Scripting Pipeline

One of the biggest goals for the project for me was to have a custom engine where the gameplay can be customized in an easy and flexible manner. The best way to achive this in my view is to allow players and developers to script gameplay behaviour.

Using a handy C++ library 'Sol 2.0' the process of binding and extending functionality from C++ towards the scripting environment in Lua.

With a range of functionality exposed from gameplay programmers towards designers to use in Lua script files a small team of three designers were able to implement card gameplay behaviour with the 'Reptoads' game we developed.

Event, HTTP and UI Handling

For this project I took the responsibility to help with engine and gameplay programming. Because of this I implemented a lot of event, HTTP and UI behaviour for the game to function.

For logging in I used the event system and implemented my own http-web-request and login-handler class that would handle all login related get/post requests and responses.

Using the UI layer format, I implemented menu and lobby screen behaviour to setup a game. Many network packet related to menuing and gameplay behaviour were implemented by me as well as team mates.

Creating C++ 17 helper functions

One of the biggest goals for the project for me was to have a custom engine where the gameplay can be customized in an easy and flexible manner. The best way to achive this in my view is to allow players and developers to script gameplay behaviour.

During this project I created two small helper classes that would help programmers with handling the behaviour on the server side combined with variables being processed through scripting.

The Gameplay and Match helper both tried to do small things effectively, handling card decks, setting up games through with console commands and handling specific containers and classes quickly.

Game using the engine: Reptoads

The biggest achievement from this project was that our engine was chosen by multi-disciplinary team to develop a small turn based stratergy game for. This turned out to be a card game called 'Reptoads'.

Together with other programmers, designers and visual artists guided by a producer we were able to handle the engines pros and cons to publish using solely the engine and it's libraries.

We had a live demo of our game where we had 6 laptops that could create lobbies, join a lobby and play a coop game together to the end. It was possible to also play together with a laptop and PS4 during a demo.

Handling PlayStation 4

Our biggest goal for this engine was to have most of it's codebase to be compatible working cross platform on the PC and PS4.

I was in charge to make sure the Lua scripting setup would work on both platforms, building the language into a special library file for the PS4. Other important features I made multi-platform was handling HTTP(S) web-requests and gameplay specific code so that both platforms could be identical in the workings.

For all the features I implemented, I had to go through the PS4 SDK and make sure that our behaviour was following the TRC and the general guildlines set by Sony. Some of these were hard to follow as we had limited time to do those right.

Assisting the Reptoads Team

We continued developing and improving the Tomorrow Engine while the game team was working on their game. This made it difficult balancing to continue production and both support the team with the many problems they encountered using our engine.

We would have dedicated hours where we helped the team with their problems and engine working hours. This was difficult for me as often I wanted to help them out of their problems whenever they were blocked.

Luckily this never caused conflicts between people but it made the life of designers and visual artists sometimes a bit extra difficult as they were left with less features they were hoping for until later moments.

Contact me!

Website created by Jesse Roffel.