Expandable Data Processing Pipeline
Introduction
As part of my University degree I get to take part in a module which merges the games programmers with the game designers to get teams to build small games. My team consists of 8 people, 2 programmers (one of which is me) and 6 designers who are responsible for all the art assets and level design.
Together we made (or are still making at the time of writing) a top down squad based tactile shooter. You play as the police chief commanding officers around the city to complete missions and prevent crime. My task in all of this was to create tooling to allow designers to build levels faster, program any UI elements that require integration into systems and build a modular mission system.
Road Tool
Cities have roads and to build a functioning city the game needs a road system which allows cars and pedestrians to move across it with ease. It also can't take too long to place down otherwise the city will take too long to create and will limit the game to only small towns/villages. My solution to this was to build the city around a grid system. This could then be used place roads quickly which can then be linked together to allow thinks (like cars) to perform path finding through the road network to get from A to B.
Above you can see this in action, Using the arrows new road tiles are spawned and linked to existing roads. The type of road is also adjusted based on what is around it so that corners and intersections are automatically built out. Using this system, the level designer was able to create a large city in a few minutes. Since nothing is perfect there are buttons available to fix anything that may have been accidentally broken in the road system.
City Cars
Since I made the road system I was put in charge of getting cars to drive along them. In the game there is no direct control of cars so every car is essentially an NPC which just has to drive around to make the city feel busy. The cars AI that I made for this essentially looks at the road it is currently on and follows it until it gets to an intersection at which point it chooses a direction to turn into. There is some logic so that they don't drive through other cars and avoid dead ends. That's it, simple yet effective.
City Build Tool
Once the roads have been placed in a city it needs to be populated with buildings. Using another set of tools, I created allows designers to go in and design small city chunks which cover one or more tiles. These tiles are automatically placed around roads with the click of a button. The chunk placement tool then filters which pre-made sets fit into the selected tiles (see image).
So if a single tile is selected only sets which cover 1 tile, a 2 by 3 selection will show all 2 by 3 tiles, and so on. This allows basic city tiles to be placed and rotated automatically at a much faster rate than doing it manually, enabling faster iteration and larger cities.
Mission Planning
From the other tools we have been able to design cities and populate them with buildings. Now it comes to setting up the gameplay, with this comes another little tool which is used to setup missions. This allows you to go in and build missions by filling in the description text for the various UI elements, mission types along with mission related settings and rewards for completing the mission successfully.
With this you can setup multiple missions; set the difficulty, limit specific missions to certain areas, choose the enemy type, select the goal of the mission, etc. Essentially you can safely change all mission parameters in one window without having to worry about messing up the mission setup or breaking existing systems.
Awards
University of Huddersfield Games Showcase 2018
- Winner of "Best Technology In A Game"
- Nominated for "Best Game Programmer"
Game Republic Student Showcase 2018 - Link
- 2nd for "The Sumo Digital Award for Game Design"
- 2nd for "The Rockstar Award for Best Team"
- 3rd for "The Red Kite Games for Game Technology"