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 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 the 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 Programmer · Gameplay Programmer · 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 easily and flexibly. The best way to achieve this in my view is to allow players and developers to script gameplay behavior.

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 s mall team of three designers were able to implement card gameplay behavior 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 events handling, HTTP requests, and UI behavior for the game to function as a multiplayer game..

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 behavior to set up a game. Many network packet related to menuing and gameplay behavior was 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 easily and flexibly. The best way to achieve this in my view is to allow players and developers to script gameplay behavior.

During this project, I created two small helper classes that would help programmers with handling the behavior 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 a multi-disciplinary team to develop a small turn-based strategy game. 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 engine's pros and cons to publish using solely the engine and its 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 its 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. Another 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 behavior was following the TRC and the general guidelines 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 fewer features they were hoping for until later moments.

Contact me!

Website created by Jesse Roffel.