Gerda: A Flame in Winter
Narrative adventure about rescuing your husband from nazis in occupied Denmark. Prototype made during internship at PortaPlay.
Things I Worked With
- Unity
- Navmesh
- Player moves on navmesh by clicking on ground
- NPCs move on navmesh as specified by designer
- Animations
- Animator controllers for all characters
- Simple UI animations (fade, scale, position)
- UI
- Setting up the object and component structure for all UI
- Scriptable objects
- Items and quests the player can get
- Custom editors and windows
- To make life easier for designers
- Also a tool for cheating
- Navmesh
- Plugins and Packages
- PlayMaker
- Custom actions interacting with Unity and other plugins
- Dialogue System for Unity
- Custom speech bubble UI style
- Custom editor to give, remove, and check items and quests
- Custom editor to play animations
- PlayMaker actions
- Cinemachine
- Camera following player smoothly
- Camera looking at player and NPCs in conversation
- Cameras following NPCs in cutscenes
- Intro camera on track
- PlayMaker actions
- Highlighting System
- Outlining possible interactions when hovering them
- TextMesh Pro
- Used for all text
- PlayMaker
As this was only a prototype, there weren’t many people working on it. At the start we were two programmers and one designer, but after a short while the second programmer moved onto creating a new visual scripting system, leaving me as the only person writing code for the project. I sat in close physical proximity to the designer and almost exclusively worked on features he requested, to enable him to design the game and make the process as easy as possible for him. The rest of the time I would hunt for bugs and just fix, tweak, and polish the game as much as I could.
We used several plugins and packages, most prominently PlayMaker and Dialogue System for Unity, which allowed the designer to create the content for the game using visual scripting. I mainly worked with these plugins by writing custom actions for PlayMaker exposing functionality to the designer, and modifying the Dialogue System editor to interface with our system for items and quests.
Towards the end of the internship, the prototype was effectively done and had served its purpose of testing the concept internally, as well as showcasing it to potential investors and publishers. Around this time, the new visual scripting system was ready to be tested in the game, and so I moved onto replacing PlayMaker and the Dialogue System with this new system, which had been the plan from the beginning. I made a list of all PlayMaker actions we were using, and created actions with the same functionality in the new system. As this was the first real test for this new system, I inevitably found some bugs and things to improve, some of which were fixed by the original creator, and some by myself.
Dialogue System for Unity, as far as I see it, is a good general purpose dialogue system, but I had been forced to fight with it a fair bit to make it do exactly what we needed, and even then there were things beyond my control. Due to this, it was with great relief that I made a new dialogue system using the new visual scripting system. As I had been working with the old dialogue system for months, I knew exactly what we needed for the project, and was able to create just that in only two days. When this was all done, I spent the remainder of my internship working on improving the new visual scripting system, making the editors a bit nicer for example.
The internship taught me a lot about working with Unity and programming in C#. It also gave me valuable experience from working in a team and making a game full-time for several months.