So this is quite interesting. As part of my University course I've been assigned with a team of people from various courses with the task to create a polished fully completed project. The only problem is that there's a significant lack of programmers in my course (it's an optional over the summer semester that makes you finish University faster) making me the only programmer in a team of 3 artists and 2 designers.
That's an interesting challenge as many of the tools we will be using throughout the project have not been taught to the other courses. Things like Unity, version control, etc.
My first solution was to design designer friendly tools. Our project will be tile based so I've created a in-Unity map maker tool which can load maps from XML files, allow a designer to edit the tile types or place objects on them and then save the result.
Additionally, one of the first things we decided on was using a game engine (Unity in this case) in order to make it easier for the designers to do some basic scripting/level creation. Unfortunately no one in the team but me has any real Unity experience which brings me to the next point.
I wrote some basic tutorials. While there are excellent resources out there it's easy to get buried under all that information especially when searching for more than one thing (For example: learning the Unity's UI system and version control) so I took it upon myself to draft a series of tutorials. These had the advantage of being written by the same person with a consistent style and as I know my team members reasonably well I was able to target the material quite finely.
What follows is the first draft of the "Tutorials & Suggestions" file. This version includes a basic tutorial on how to set up sourcetree and includes some guidelines on how assets should be handled.
TUTORIALS & SUGGESTIONS
First things first. Our repo is located here: https://github.com/Charkomangus/AdequateAdventures. If you don’t have access send me your GitHub account, let me know and I will add you.
Download and install the source control client from here: https://www.sourcetreeapp.com/
Make sure to log into it using your GitHub account. You can find this in Tools/Options/Authentication and choose Add.
Make sure to:
Set Hosting service as GitHub.
Leave protocol as HTTPS
Set authentication as basic
Enter your username and refresh the password.
Press File and select Clone/New. Then select remote.
If your account is already added to the project you will be able to see the repo. Click on it and select the place you’d like to clone it too. Now, wait and voila! The project is ready to be opened by Unity.
Before you open the project in Unity for the day make sure to pull (that is update your local version with any latest updates). This is primarily done to avoid contradictory submissions which will result in file loss and messy solutions. Just press okay here and wait for it to finish.
When making a change that you intend to share with everyone first announce it to the group to make sure that no one is working on similar files with you. Similarity, before you begin check to see if anyone has announced they are working on something.
When you are finished with the change, test it to check everything is working okay (seriously, test the hell out of it) and press push. You will need to click on the files you wish to upload and “stage” them. If you want to upload the whole thing you can stage all but that is not recommended as Unity creates a metric ton of odd files that aren’t needed.
Make sure to write a description of what you changed, check Push changes immediately (or simply press push after this step is complete) and finally press commit.
Inform everyone that you have committed a change.
We are using Unity 5.6. This means we are fine with using 5.6.0 or 5.6.1 but please refrain from using any versions under this.
Use sensible and unique names: Instead of Button1, Button2, etc name them on their function like ButtonExit, ButtonPause (Notice I used the word button first so all buttons show up when searched for).
Avoid any abbreviations: Sure, ReallyLongPole might be easier to write as RLP but you’d be surprised how easy it is to get snowed under when the project gets complex enough.
Use CamelCase: CamelCase is a way of writing things to avoid using spaces. So instead of writing “Big Mary jumped on the tree” you’d write “BigMaryJumpedUpTheTree”. While not necessary for art assets it will go a long way of the assets and their corresponding code match together.
Parent your files: Make sure your file is in it’s appropriate folder. If for example you make a LightOnTexture make sure it’s saved in Textures & Sprites/Textures/Lamp/
This is an example of the base folder organisation we will be using.
Feel free to create new folders (assuming they are needed and named appropriately) as we go ahead in the project.
Set any program you are using to metric instead of imperial as Unity can sometimes freak out with imperial measurements. This is mostly relevant for 3D applications but it’s useful to know.
Make sure that all animation, no matter where it’s created, is 30 frames per second.
Keep the dimensions of textures to a power of two (256 x 256, 512 x 512, etc).
Save to JPG if the texture has NO transparent pieces.
Save to PNG if the texture has transparent pieces.
Any 3D models to be used with project must be converted to the FBX format. The file sizes tend to be smaller and this way Unity will notify you if any part is corrupted.
If a 3D model contains animations already it should be named “Animated” at the beginning. So StatueModel will be called Animated StatueModel.
Below you can find a table with all Unity supported audio formats.
MPEG layer 3
Audio Interchange File Format
.aiff / .aif
Ultimate Soundtracker module
Impulse Tracker module
Scream Tracker module
FastTracker 2 module
For sake of performance and project size and large files (such as background music, ambient sounds, etc.) should be a compressed format such as .mp3
I recommend checking out the Unity manual for areas you’ll be working in.
Unity tutorial for setting up your source control.
Produced by Charalampos Koundourakis - Lead Programmer