top of page

ZEPPELIN RUSH

HeaderCapsule_460_2.png

ROLE

Core Engine/Tools Programmer

Producer

DESCRIPTION

A 2D "Tower Offense" Game made in a Custom Data-Driven C++ Game Engine. This project took place over the span of a year. Currently the team of Artists, Designers, Programmers and a Sound Designer are making the final touches for a release to Steam!

YEAR

2022-23

GENRE

Tower Offense

Language

C++

PLATFORM

Windows

Core Engine

Why Data-Driven?
A Data-Driven Engine is integral to rapid integration. It allows the designers to modify assets without recompiling the engine.

Below is an example asset in JSON. JSON is made up of objects, keys, and values. We used JSON because it is human readable and. Due to the time constraints of the project, a well formatted JSON file, for each object, was the next best thing to an editor GUI. 

This is a snippet from the Sprite Source Manager - essentially what loads and manages the textures in memory. The Build method has three instructions

  1. Make sure the texture isn't already in memory

  2. If not, read a JSON associated to the art asset

  3. Store the new SpriteSource object containing the data from JSON

Tools

IMGUI Custom Tools and Features
Sprite Source Importer

This is the most helpful tool to the team, specifically the Artist. Before, the Artists had to write up a JSON for each asset. While the JSON was uniform, it was still very time consuming. This tool allows the artist to drop an asset into the engine, preview the asset, give it a name or update a pre-existing import, and if it is a Sprite-Sheet declare how many rows an columns the sheet contains.

Gameplay

This is a snippet from the Tower Behavior header file. These methods organize the results of actions. Their purpose is very literal to their name. In a proper system, these methods would be assigned to events. Due to the nature of the project, an Event System wasn't a priority. In future projects, such a system is a must have.

Here is the do_attack method from the mentioned header file.

As the name implies it attacks the given target, once again a few main instructions.

  1. Check if the object can attack

  2. Apply damage to the target

  3. Trigger any audio/visual effects

bottom of page