After making significant progress on the GDD last week, this week was all about starting into the setup of the project.
Step one was to get the flow and functionality of the UI defined, so I started with the Missions interface. After mocking up the UI I decided that the MissionsManager object was going to need a good way to dynamically load in a list of missions and their associated data. This is done by reading from a file created outside of Unity that has JSON formatted objects containing mission data. This makes it very easy to make little tweaks to missions or even add new ones and have the game automatically ingest them.
One of the most important first steps when setting up a project is to ensure you put it under version control. At the very least to ensure that you have a backup strategy in mind, but more than that to ensure you have a way to jump back to when your project was working (before you tried that one little thing). At work I use mercurial, at home I usually use git, this time around I decided to give Unity Team's Collaborate feature (Unity flavored git). It has a free trial but since I already have Unity Plus a higher tier of Collaborate is included. It's been pretty hassle free so far and is nicely integrated into the editor.
In editor you can see a list of changes that have been made by the team and even go back in time to a previous version if you choose.
When you would like to make a checkpoint, or have a change you'd like to push out to the rest of the team, you simply leave a descriptive message in the box and hit the publish button.
It'll upload the changes to the server and in turn the rest of your team will get the new changes. The initial commit took a little while since I had a lot of assets added but every change there after only has to include the differences and thus is small and quick.
Once your changes go out and you're all caught with any changes from others you get a friendly green check mark letting you know.
Seeing as I'd never used Unity's Collaborate feature before I wanted to still have an automatic independent backup strategy running alongside Collaborate. For this task I chose Amazon's S3 service. Currently I have the project backing itself up once a week since it's just meant to be a redundant backup to Unity's offering, though that can be adjusted later if need be.
Amazon S3 features it's own built in versioning system, so using this you could potentially look up past versions of your files as well.
Amazon S3 also has a feature called Lifecycle Management, which I have utilized here to make rules to keep storage costs down. After 30 days of sitting in storage Amazon will move a copy of the old versions of the files to Amazon Glacier which is an almost zero cost form of storage. It will also delete these old versions from S3 after making a copy in Glacier. This keeps costs incredibly low for files you don't intend to have to pull but want the option to if need be.
Now time to get back to work and get a settings management system going and get started on some ships you can fly around.