Loading...
If this takes more than a few seconds, please check your internet connection.
If this takes more than a few seconds, please check your internet connection.
A genre-defying phenomenon that will take you on a journey to stop a rubber duck from taking over the developer's game!
Duck Simulator 2 is the 2021 indie game by Orius Games, the sequal to Duck Simulator. It has overwhelmingly positive reviews on Steam, with 96% recommended on Steam, and 4.6 stars on Xbox.
I joined the team in June of 2023, 10 months after the previous, and supposedly "final" (x3) update had dropped. The primary developer, Orius himself, was looking to push out another final update, this time the actual final update (except for bug fixes). This included some major changes, like replacing the Discord connection with a new Orius Games account system, and adding mobile support.
My main focus was the save system. Previously, the game had used Unity's PlayerPrefs
in order to store all the save data, but since we wanted to add cloud save, this wouldn't work anymore. I opted to use a fairly simple system, involving a serializable class and a singleton to hold it. I used Json.NET
, aka Newtonsoft.Json
, in order to convert the class into a format that could be written to disk. The main reason I used Newtonsoft over Unity's built-in JsonUtility
was that it was already in the project, although I later found out that it was a good choice, as JsonUtility
doesn't support the C# Dictionary
class.
// Snippet from SaveData.cs
// RpgEnemy is an Enum
using System;
using System.Collections.Generic;
[Serializable]
public class SaveData
{
// ...
public Dictionary<RpgEnemy, bool> Fable_Talked = new() { { RpgEnemy.MINION, false }, { RpgEnemy.GUARD_GUY, false }, { RpgEnemy.QUACKER, false }, { RpgEnemy.DEVELOPER, false } };
public Dictionary<RpgEnemy, bool> Fable_Killed = new() { { RpgEnemy.MINION, false }, { RpgEnemy.GUARD_GUY, false }, { RpgEnemy.QUACKER, false }, { RpgEnemy.DEVELOPER, false } };
// ...
}
One thing I did very soon after joining was fix a long-standing issue with MacOS and Linux builds on Steam. Turns out, because they were added later on, after the game had initially released, Orius hadn't updated the package to include the MacOS or Linux depots, so people on those platforms would just get an empty folder. It was a really quick fix, and he was extremely grateful for it.
Although my main focus was the save system, I did also spend some time working on other areas. One of the first changes that I made was to add resolution options to the menu, as up until this point there wasn't any, and some of the UI got messed up on ultrawide monitors. Another area that I worked on was fixing up a few elements in the "Classic" mode, aka a recreation of the original Duck Simulator. It wasn't too difficult, mostly just converting a few video clip to instead be rendered in-engine, which wasn't too difficult, since the video was fairly simple.
Overall, working on Duck Simulator 2 was fun, and I'll be continuing to work with the team as we work on the sequel, Duck Simulator 3. Until then, why not check out Duck Simulator 2? It's free, and available on Steam and Xbox (and soon, Android). Also, check out the Discord community, it's full of friendly people.