PC Nerding

Git, Unity3D and Dropbox

Sometimes I think I look a bit obsessed by revision control, but i really find those notes are the only ones worth writing down.
My previous tutorial about Git and Unity3D used a virtual machine for keeping git repos, setting up correctly a VM is hard stuff for some, so i decided to make an easier tutorial on the matter.
Today I will show you how to store a git repository right in your Dropbox folder.

Step 1: Creating a bare remote repository in your Dropbox folder
First, using git bash let’s navigate to our Dropbox folder. This location may vary depending on your configuration.

cd ~/Documents/Dropbox

Once we are here, we’ll make a new folder and create a new bare repo inside it.

mkdir myGitProject
cd myGitproject
git --bare init

Step 2: Setting Unity3D
If you are not using Unity3D or if you followed my previous Git and Unity3D tutorial, you can skip to step 3.
In Unity3D editor, create or load a project, then go to Project-Settings>Editor and under Version Control>Mode select Meta Files. Save your scene/project.

Open your explorer and navigate to your Unity3D project root folder. NOTE: your project root folder is the one which contains Assets, Library and ProjectSettings folders. Create a new file called .gitignore (be sure to include the dot), open it in Notepad or your app choice and paste this block inside it. This file will tell git to ignore those files, since those are not needed when syncing.


#Project/User Preference Files

#OS Junk

Step 3: Create the local repository
Open your git bash again and navigate to your project folder


Then start a new local repo using

git init

Add all the needed files to your git repo using (the unneeded files are automatically discarded by out .gitignore list)

git add -A

And lastly make the first commit

git commit -m “Initial commit”

Step 4: Link your local and remote repo
Keeping the bash open in our local project folder, let’s link the remote dropbox repo by using:

git remote add origin ~/Documents/Dropbox/myGitProject

Now let’s make a push to the remote repo

git push origin master

If you are working alone, you’re done. If you want to sync across different computers keep reading.

Step 5: Cloning and pushing from another pc
Now on your second pc / other dev pc clone the remote repo
NOTE: in the first line i set my working folder to home folder, you should set a folder where you usually store your projects like ~/Documents/Unity or ~/Projects

cd ~
git clone ~/Dropbox/myGitProject myLocalClone

Now play around and modify some stuff and code.
To push back stuff, add them to a local commit and push them like we did earlier.

cd ~/myLocalClone
git commit myscript.cs -m 'modified a file'
git push origin master

Step 6: Pulling
Now on our first pc we can get the changes made on the second one by pulling stuff

cd ~\Documents\Unity\myLocalProject
git pull origin master

Now you are set. Remember to push/pull/merge stuff on all synced computers.

Final Notes
While it will work well with small projects by small teams, I would not recommend using it with big files or more than 2-3 developers. This because the entire git repo is shared over Dropbox and two git pushes at the same time will cause Dropbox to sync those pushes together, messing up your project data.
This is a basic setup, for anything more professional like a real git repo server, issue tracking and wiki functions you should look at BitBucket, which offers free unlimited (private or public) repository hosting for small teams (up to five devs).

Q. Can I use other backup services?
A. Google Drive, Asus WebStorage and other similar services should work the same way. Remember to not push stuff from different location at the same time.

Q. Will this tutorial work with non Unity3D projects?
A. I suppose yes, just skip Step 2 and it should work fine.

Q. Most tutorials out there use the command git add . to add files where you used git add -A. Why is that?
A. I prefer using git add -A because it indexes removed files, while git add . doesn’t. A good explanation about those differences is explained in this StackOverflow question. I think most tutorials use git add . because indexing deleted files (with -A) is completely useless before the first commit.

Q. Do you actually use this setup?
A. Sometimes yes, for tiny projects and for projects where I always need a ‘local’ remote repo where there’s no internet connection available.

Q. Is it safe to push/pull to/from repo while Unity3D’s editor is open?
A. No. To avoid errors, you should always push and pull stuff with your editor closed.

Q. OMG! My project lost all the linkages set in the unity inspector!!!!11111ONEONEONE
A. That’s probably because you forgot to enable meta files in your project settings. See Step 2.

Q. Why do you store a repo inside dropbox? It is not better to store my project folder straigth into Dropbox?
A. Dropbox will always try to sync saved files, even those you are still working on. The main difference in my approach is that you can edit all the files you need and commit your modification only when you are sure whether these are working. This will avoid other synced devs to get not working or incomplete files.

PC Nerding

A new tablet: ASUS TF300T

I used to hate the new generation of smartphones and tablets (both iOS and Android). For example two or three years ago I bought an HTC Desire with Android 2.3, I used it for a couple month, then i threw it in a drawer and I kept using my old Nokia N95. You know, I was one of the guys who use telephones only for calls and sms, nothing else. But when i got my hands on this device I fell in love. I don’t know why, but i got a strange feeling while toying with it. Is it a new step into my nerdiest dream, indie game development? Probably yes, I got an basic Unity Android license in April and this is a great device to play and develop on.

PC Nerding

Unity3D Scene Chase Cam

Chase Cam Screen

A little useless intro:

Today i had this problem: i wanted to visaully see how an AI was playing while I was moving my player object on game screen. The best solution i thought of is using an editor script to make a scene cam follow my AI object. A made a little google search, wich didn’t give me any kind of answer. Then i decided to write this script by myself.

Where this post should really start

Hi all! I just made this neat C# editor script for Unity3D, wich adds a function to “chase” objects whitin your editor’s scene views. It can be used to follow an object while you play, showing in separate windows and/or with a separate angles what is happening around. Or it could be used to let your testers play the game on one monitor, while you look over all your methodically placed debug lines and texts on a second one. Just use your imagination.
It will update ALL your scene views, for example if you want to simultaneously look at an object front, lateral and top views you can create more scene views within your editor and let the script do its magic.

How to use:
You can open a Chase Cam toolbox by clicking Window>Chase Cam in your editor menu. As you can see in the screen, there are two toggles an object selection box, I think their usage is intuitive. If not, see script’s header for more detailed instructions or just play around with the buttons. Please note the script will not run if the game isn’t running.

The script is release under GNU GPL v2 license Modified BSD License (switched after this discussion on reddit), feel free to modify/improve it and if you want drop a comment here or mail me showing me your modifications I will be happy.

Download link:
Unity3D Scene Chase Cam (1241 downloads)