“If only there was a Sandbox mode in Duskers so that we can test some of these theories and ideas” – A YouTube comment from Nock to Dano 416
A little while ago, I purchased a new game called Duskers after watching a few live-streams from LB. At this point I want to break away and mention that if you ever want a game recommendation, LB is your man. I’ve played a few games on recommendation from LB now and have not been disappointed with any of them, anyway I digress. After a while of it sitting on my PC and not really doing anything, I noticed that LB was playing Daily Challenges and uploading them to YouTube. I decided to follow suit and it wasn’t long before I discovered a small community within Duskers who upload their Daily challenges. After a few days of watching and commenting on the videos, I was recognised by them as a player and began to get mentioned within their videos (so thanks guys you’re awesome).
It soon became apparent that there was a lot of debate about how the infestations worked in game and what caused certain actions and when. It was a little while into this that I mentioned to Dan “If only there was a sandbox mode in Duskers so that we could test these theories” and at that point, the idea to create Duskers Sandbox was conceived. I knew that LB had been looking into a way to fix an issue where the game can corrupt your save file, so I asked him about a couple of points and started work.
The Initial Phase
The initial phase was to take the information I’d learnt from LB and delve into the save files myself to try and link everything up. This involved quite a bit of trail and error to get it working right, however in the end I was able to modify my campaign mission in a way that I could alter a ship however I wanted to. I changed it’s name, set it to not visited and changed the infestations on the ship to a slime only ship. Then it was time for testing. I’ll admit, that I was still a bit tentative whether or not it had worked and I crept around the ship as carefully as I could, just in case a leaper was going to jump out on me unexpectedly. However after exploring the entire ship I found only slime on it so I knew I was onto something there.
I modified the save files once more and then zipped them and sent them to Dano, who was heading up the slime experiments and explained what I had done. That’s all good, but it’s not really a very practical solution, as you have to manually edit the save files in notepad each time you want to make a change. Not only this, but for Dano to re-test in the same conditions, he would have to restore the folder I sent to him each time. So with this in mind, it was time to think about how I could package this all into an application to make the process much easier . . . . and Duskers Sandbox was BORN!
Within 2 days of sending over the files to Dano, I started working on the program. Since I use it on a daily basis, C# was the choice of language, and although it’s now an older technology, I chose to use Winforms since I know it very well and it’s easy to work with. I started by creating some classes for the different objects within the program and then began working on the interface. Right from the start I knew that deciding how to handle the data was going to be a big factor for the project. I made the decision to keep the contents of the save files we needed to work with in memory throughout the life-time of the program, so that when data is being loaded for each of the sections, we don’t need to call back to the file and load from there each time.
The User’s data is a very important aspect of Sandbox. In order for it to work, the user must overwrite the game’s save files. As a result, Sandbox comes with a built in “Backup and Restore” facility so that if it’s experimentation you’re looking for, you can use Sandbox, test what you want to test, then restore your original save data without having to copy the data manually. Sandbox will always ask on start-up whether you want to backup your save data. If a backup already exists, it will ask if you want to overwrite the previous backup. Backups are saved to the same folder as the main Duskers save file as Duskers – SandboxBackup. When you restore an original backup within Sandbox, you’ll also be asked whether you want to keep your Sandbox data and if so this will be moved to Duskers – Testing, again in the same folder as the Duskers save.
Sandbox was originally developed with the ability to amend both Campaign and Weekly Challenge data, however at the moment I’ve decided to remove the option to edit the Weekly Challenge, as after consideration I thought that people could potentially use Sandbox to cheat in the Weekly Challenge and claim the top spot. I may change my mind on this in the future, but for the time being, while the option is there it is disabled.
The first section I worked on was the Current Galaxy that the player is in. For this I decided to list all of the systems within the galaxy and as the player selects the galaxy, they are show the details of it. The Sandbox allows the user to set whether the galaxy has been visited / viewed, which ship is selected first by default, which ship was last visited by the player and which ship the player is currently docked on. This allows the player to set the ship location “on the fly” without having to spend propulsion fuel to move around. In the future, this will allow players to setup multiple ships for testing to save time re-configuring the same ship over and over.
The next section that I spent time on was the player section. This looked at the player’s ship and provided customizations to change the name, max scrap, current scrap, ship slots and current fuel they have (both propulsion and jump). The player ship editor also provides the users with a place to manage their ship modules, both installed and not. Players are able to remove installed modules and completely restore modules which have a chance to break. At this point in time, there isn’t an option to add new modules, only updated the ones you have at the moment, however you can change the Module type at any point.
I’m pleased to release the first version of “Duskers Sandbox”. The tool is still effectively in BETA, so you’re comments and feedback is appreciated. Please report issues to the relative release post (link to these posts are under the version details below) and I’ll fix issues as quickly as I can.