Explore an open sea and the decaying archipelago of Strandville in Wavetale, a story-driven action-adventure game introducing you to fed-up fishermen, secretive hermits
– and maybe a pirate or two.
Traverse calm waters and surging waves as Sigrid, a young girl who befriends a mysterious shadow that provides her with the power to walk on water.
Speed through the waves, swing yourself from housetops with your net, and defeat an old nemesis to save the citizens of the islands.
All with a bit of help from the shadows down below—and your cranky grandmother.
I came into this project when it was roughly halfway to the finish line
Level Scripting
For Wavetale, I set up the quest chains for 1 level where the base level design was already created by Andreas Beijer.
I maintained my own levels and others with bugfixing, setting up sidequests and implementing dialogue.
Towards the final months of the project I worked on stitching the seperate levels questlines together into a whole and towards the very end of the project I was maintaining all levels of the game.
Boss scripting
I was in charge of setting up two of the boss encounters in the game.
A lot of the boss scripting was to trigger the different boss animations at appropriate points and position the boss depending on animation and phase.
In order to not have the boss encounter be too punishing I set up checkpoints during the encounter so that the setback isn't too big after dying.
Triggers to force the player camera to focus on set points is used to help players navigating the encounter.
In this screenshot you can see the basic structure of the boss scripting section I helped set up for the boss in Candle Hill.
Each different phase of the boss is grouped seperatly so that I can call the desired group when it's specific phase is to be triggered.
The structuring helps out a lot during bug fixing also, if I know a issue I encounter is in a specific boss phase then I know which group to look in.
Credit to lead level designer Kyle Buck-Thompson for creating the base structure for this encounter that I then continued working on.
Level Design
Although my main role was level scripting I also got the chance to do some level design work.
For the level I was assigned to (Plaza) I designed some smaller puzzle/traverse gameplay islands to go with the questline.
My idea behind those islands (8 in total) was that the view of the island from a distance should reveal where the objective is located.
Then when you get closer you will see what you have to do in order to reach that objective.
Mentoring
A few months after i joined the project I was put in charge of mentoring two new level scripters.
This came at a perfect time as this is when I would have otherwise had a downtime period due to the level I was assigned to not being ready for me to work on it just yet.
Teaching them how to setup scripting for quest chains, showing them my workflow, showing them issues I've encountered and lessons I've learned and always being available to answer questions and helping out when needed.
I would also make sure they set up their hierarchy in a way that make it easy for other level scripters to understand and being able to work in their assigned levels.
Playtesting
Probably the biggest time consumer for me during production.
I constantly playtested my level to the point where I couldn't find any more bugs and that it was fun to play, well balanced and meshed well with the other levels.
All of us level scripters on the project would often playtest eachothers levels to provide bug reports and feedback.
Later on in the project we had assistance from a fanstastic QA team.
They would report all bugs they found with detailed steps on how to reproduce the issue with screenshots and video captures to go with.
This would make it a whole lot easier to find and fix bugs and issues found in the levels. They would also play in a different way than I would and were able to find lots of bugs and issues that I never would have found on my own.
Challenges
Joining mid-project was a big challenge. While others knew everything about the game, I knew nothing at all.
I also hadn't been working in game development for about 3 years so I was a bit rusty.
However with some help from a level designer who was leaving for a different project I was able to get into it pretty quickly.
A problem I encountered early on was that several key scripts I was going to be using weren't fully functional which I incorrectly assumed they would be.
This false assumption actually helped me develop a closer communication with colleagues of other disciplines, this was greatly beneficial.
Towards the very end when I had already started on a different project I was called back in for some last minute bug fixing. This was particularily challenging due to the fact that the changes I did would have to be 100% safe from breaking the game in any way.
A part from a different way of thinking I also had to test my fixes multiple times to deem them safe.
Due to the ongoing pandemic during my time on the project, I worked entirely from home. I imagined this would be a big issue, not being able to communicate well with my colleagues.
In the end though it worked out better than I could have imagined and allowed me to have a lot more free time after work that would otherwise be spent on commuting.
Action adventure single player game with platforming elements
PC, Playstation 4, Xbox and Nintendo Switch
Developed in Unity 3D at Thunderful Games
5-6 Hours of gameplay
Story driven single player experience with tons of lore
Sidequests
Collectible hidden objects
Achievements
Time challenge tracks
Asta Challenge
About 3 months into the project I was presented with a type of sidequest which would be a time challenge race track of sorts.
Since I was fairly familiar with the game at this point I had a clear picture in my mind of what I could do with this sidequest idea.
In a pair of weeks I was able to present a functional prototype with a finished race track to go with it. My prototype was well received but it was still almost on the cutting board.
With the help of enthusiastic colleagues and my thorough prototype and time estimations for implementation, the producer was convinced.
Editor view of part of an Asta Challenge race track.
My task would be to create 4 unique race tracks with graphical themes from the levels they were placed in.
Creating the race tracks took about 2 days per track which wasn't too bad. The bigger chunk of the work was to make sure they worked not only individually but also when the whole game was loaded in.
This was problematic due to the fact that dialogue with the host character of the race tracks only worked if there was only one of this NPC active at a time.
I managed to solve this by having the NPC be deactivated when leaving the zone and then reactivated when re-entering the zone after having first left. This was implemented for all 4 of the race tracks.
Dialogue
When the time came to implement dialogue from the script to the game, I was the first one to be shown how to do it.
The process consist of creating dialogue spreadsheets for all individual levels, then copying over dialogue from the script into these spreadsheets, then syncronizing in the spreadsheets into Unity and then assigning dialogue to triggers in the levels.
Unfortunately this process was very inconsistent. It was impossible for most of my colleagues to do this even if they followed all steps.
For me this meant that I would have to take ownership of this task. Which meant putting the entire script into the spreadsheets and syncronizing it into Unity while also manually importing recorded dialogue when it was ready to be used.
I would then repeat this process anytime there notable dialogue changes made.
In the end this was a very time consuming task which fortunately made me develop great communication with the writers.
This proved to be helpful when making requests for extra dialogue or for specific dialogue to be shortened to fit in with the level design.
Dialogue in action and a Journal Entry pickup (mid-right in the screenshot).
I placed about half of the total number of Journal Entries at appropriate locations within the game with varying difficulties (some are easy to find and some will only be found if actively looking for them).
Checkpoints
We created checkpoints for this game by using a special type of event. When triggered, every event under it is saved.
When a game is loaded where this specific checkpoint has been activated, all events located in this checkpoint will trigger. This also happens when the checkpoint is first triggered.
In order to have events that are only triggered when loading. We use the condition event "Event_If_Restore".
When playing without having loaded a checkpoint, triggering a checkpoint will trigger all events in the checkpoint except for those that are put under the "Event_If_Restore", these will only trigger when loading a checkpoint.
This allows us to teleport to player to specific locations when loading a checkpoint but preventing the teleportation from happening during normal play.
Correctly implementing all desired checkpoints in levels was for me at least was definitely the hardest task and required tons of tweaking to get right.
No art is made by me. I use art that was created by our talented artists and place it to look good, make sense and to create good level design.