
STATION TO STATION
GAME DESIGNER
Project role
UNREAL ENGINE 4
Engine
12 MONTHS
Duration
‘Station to Station’ is a minimalist & relaxing game about building railway connections. Grab your conductor’s hat and bring the voxel-art world to life through the magic of trains!
PAGE NAVIGATION
ABOUT
CONNECT THE WORLD
In Station to Station, your world starts small with a handful of rural structures. Place stations and create connections to foster growth and expansion. As you build more connections, your area will grow, transforming into a vibrant, lush environment full of life and color! To keep you on your toes, the game also features engaging puzzle elements, challenging you to optimize routes and solve logistical conundrums.
​
ADMIRE VOXEL-ART VIEWS
Hop on board and steam through colorful biomes. Breathe life into the dry desert sands, and transform the untamed mountain terrain. Build and watch your tranquil world come to life with an ever-widening tapestry of flora and fauna!
​
THRIVE
For those eager to put their management and planning skills to the test, each level offers optional challenges, stack bonuses, and unique mechanics tied to every biome! Whether you seek relaxation or mental stimulation, 'Station to Station' has something for everyone!


PROJECT ROLE
From February 6th 2023 on I have been part of the team creating Station to Station at Galaxy Grove. At this point the game was already in development for a few months by a small team. My first 4 months on the project were as part of an internship for my graduation track, after this I stayed on the team full time. My main responsibilities were:
As a game designer...
-
Creation of level design pipelines and tools to assist in level design
-
​Full ownership over the level design of the 40+ levels main campaign
-
Extensive playtesting, data gathering and data analysis of difficulty through campaign
-
Creation of set-ups for the custom game mode
-
Technical implementation of settings menu
-
Graphical settings, Screen settings, Audio Settings, Control Settings​
-
-
Technical support in implementing of audio assets and music​
CAMPAIGN
Procedural generation or handcrafted content?
My first task on the project was to determine the direction for the main campaign. Should levels be procedurally generated or should the levels be created by hand by me, the level designer. To determine the answer to this question I made a set of procedural levels and a set of handcrafted levels which were both tested internally and with a few external testers.

Handcrafted experience

Procedural generation
Creating a procedural level
The creation of procedural levels happened entirely in text files. Here you would set the level size, level biome, buildings, cards and props. The game then generates the landscape and buildings positions.
However, this would often lead to annoying or illogical buildings placements.

Notepad++ level file
The switch to handcrafted experiences
Because of the problems with the procedural levels, the handcrafted levels were chosen as the victor. These handcrafted experience levels were instead created with a combination of the text file, an image file and an editor tool created by co-worker Jordi van der Hulst.
Creating the levels allowed me to ensure the experience wouldn't be frustrating:
-
Enough space around buildings to place your stations
-
Buildings spread evenly through the map
-
Pathing designed to get the most out of the cards players can use
-
Visual consistency between levels in regions
The image files were created in photoshop, utilizing color channels to pass along different types of information so the game could turn it into a level:
Red Channel: Height map
Green Channel: Water
Blue Channel: Biome map
To aid in the process of creating these level texture images I created custom photoshop brushes to help detail cliffs edges, biome transitions and plan buildings layouts.

Custom dithering brush

Editor Tool for buildings
Playtesting and data analysis
Throughout the designing of the campaign I did large scale analysis of playtesting data. To make this task manageable I set up Google Sheets documents that would automatically take the data and calculate useful statistics and compile lists of data on specific topics. The data was automatically gathered and sent to a Google Sheet by the game using a small end of level survey.
​
By using this method of data analysis I could easily...
-
Find problematic levels for players
-
Find balance in optional challenges
-
See player retention
-
Establish difficulty curve
-
Find the fun

Playtest data analysis
Comparison Analysis
I also created a sheet to quickly compare the feedback from different build versions. This allowed me to see whether my iterations to the levels were actually having a positive overall effect on the campaign.
With 3000+ raw data entries received from the gameplay surveys this method of data analysis was crucial to understanding the difficulty progression of the levels and making targeted iterations for the betterment of the game.

Example received raw data

Comparison Sheet
SETTINGS MENU
Graphics settings
A large part of my work on the menu went into the game's graphics settings. While most of the graphics settings could be saved through the built in GameUserSettings system of Unreal Engine, I did have to create some of the environment and camera settings myself. These were saved and made through a struct, created in C++, that was then included in our save files.
Another important part of this menu was the User Benchmark settings. This would automatically tailor the graphics settings to those suitable for the player's system. For this system to work well I performed data analysis on gathered benchmark results on a wide variety of high and low end systems. Compiling all this data into the sheet helped determine the correct values to ensure great performance on the auto detected settings in most user cases.

User Benchmark Results

Graphics menu in game
Keyboard settings
Another complex system within this settings menu were the control rebind options. For this I blueprinted a system that would allow the rebinding of the controls in the game. This system was created from scratch by me using the Unreal Engine GetInputSettings nodes.
To push the quality of my work as high as I could I added multiple quality of life features to the menu such as:
-
Overwrite check: Warns the player when a key is already in use and if overwritten automatically unassigns the old key​​
-
Deleting keys: Hover over a key and press 'Delete' to instantly unassign the binding
-
Disabled keys: An array of keys that can not be found such as F11, which is already the full screen toggle

Keybind overwrite check

Keyboard menu in game
OTHER WORK
VFX implementation
I also spent a short while implementing VFX for our game. Here my work consisted of blueprint implementation of Niagara effects created and tweaked by one of the artists on the team. One of the most complex VFX systems in our game is the one of the smoke on our locomotives. The intensity of the smoke is affected by the angle of the locomotive. When the train goes downhill there is never any smoke, when the train goes uphill the smoke is always on and intensifies based on angle of the slope. When the train is going relatively horizontally it occasionally puffs out some smoke
Audio implementation
I also performed in a supporting role for the implementation of audio on the project together with audio outsource company SonicPicnic. For this I implemented audio in both our UI and various blueprint actors.