Introduction to Asset Management with ionForge Evolution
Welcome to the first article on here at GameDev.net about Evolution. If interest is high enough, there may be more where this came from. My name is Lucas Heneks, and I work at ionForge Company, the company behind Evolution. Any questions about the tutorial or Evolution in general can be sent directly to me at email@example.com. This article is really only going to focus on the very simple process of installing and setting up of an Evolution repository. It wouldn't be hard to figure it out yourself, but this will help you get going faster. There will be a little at the end about actually using Evolution.
Let's get on with the show!
First Things First
First of all, you will need to download the software. You can do this at www.ionforge.com/downloads. You will be asked to fill out a form before downloading. One caveat: for the moment, only Windows versions of the client and server are available. Linux, Unix and Mac ports of the client are scheduled for sometime next year(2005), but the server will remain Windows only.
Next, of course, you need to install the client and server applications. If you are going to be using the same machine as both the server and a client, you will need to install both on that machine. If you are going to have a dedicated machine for the server, there is no need to install the client on that machine. Any machine that is not going to be a server does not need to have the server installed, including remote machines. When installing the server, you will be asked if you want to start the service right away. Click the check box to avoid having to restart.
Ok, now we are ready to set up your users. From the start menu, open ionForge\User Manager.Select New User from the menu as in this screenshot.
Enter the user's details and select at least one user to be a member of the administrators group as shown below. If you are not a part of a large development team, it is far simpler to just make everyone an administrator, because restricting specific users from accessing various assets will not be as big of a concern. For most of you reading this, that is what I recommend.
Then click "Create" and then "OK" in the dialog box that follows. You can keep creating users until you run out of licenses. If you are going to have lot's of user's divided into multiple groups, such as Developers, Testers, Artists, etc., create the groups first, then the users. If you need help doing this, let me know and I can talk you through it via email.
Now that you have some users, you are ready to get started using Evolution.
Adding or Creating a Project
Ok, time to open the client. Click Start\ionForge\Evolution. You will be greeted with the login screen shown below, except that the first time that you start, the fields will be blank.
Enter the information for the user you want to log in as. What you need to enter in the server field depends on whether or not you are logging in to a server on the same machineor a network machine. In the screenshot, you can see that I have entered localhost. Thisis what you do when the server is running on the same machine as the client. If you are connecting from the internet, you can give the name of the server, such as www.myserver.com or the IP address of the server. If you are connecting to a LAN machine, it will be the machine's network name, without the preceding backslashes. Once you have entered these three things, hit the unbutton.
The first time you log in to a server, you will be asked to set your working directory, as shown below.
The working directory will be the folder on your machine where the files you download will be stored. Select which ever directory you want.
Now you can set up your repository structure. If you already have a project started, you can right click on the root Production ( which you can think of as a controlled folder )and select "Import Folder". The root Production is the \ in the Production Explorer, circled red in the screenshot below.
This will make things go very smoothly. If you don't have a project started already, you can start one up in Visual Studio or your chosen IDE, and then import it. When setting up project, I recommend having at least 2 separate directory trees, one for development, anode for release, much like Visual Studio does by default. All of the artists working files such as .3ds files and .psd files should be in the development structure, while the game exported files that the finished game will use go in the release tree. Release should only contain files that are used by the final product. You should be able to just burn the entire release directory on to a CD and ship that to reviewers, publishers and testers. I have created a simple structure to give you an idea of what I mean, but it is by no means a complete picture. For more information on this topic, see the book "Game Coding Complete" by Mike McShaffry. You can see my example in the next screenshot.
If you already had a project started, you will notice that the binary files are imported along with the source. With Evolution, you can maintain version history of any file, from source to Photoshop to wav. Any time a file is changed and checked back in, a new version number is generated. You can always retrieve previous versions of any file, even binary files.
Now that all the users are set up, and the project is imported or created, you are ready to begin using your new asset management system.
First off, let's imagine you need to add a newly created file. I'm going to add a gif file to mine, but you can add whatever you want. I recommend some type of ASCII file so you can use it during the diffing demonstration a little later in the tutorial. In the leftmost pane, where the directory tree is, click once on the folder you want to add the file to, and then right click in the right pane and select add, as shown in the next screenshot.
This will bring up a browse dialog box. Navigate to the file you want to add and double click it. It is now under control. Now, imagine that it's been a while and you want to change the file. Right click on the file in question in the rightmost pane, as shown below.
This opens a dialog box with some options for checkout. The defaults are what you want in this case. There may be some times where you don't want to synchronize with the server, such as if you had been working offline and are checking the file out so that you can check in the changes you made. In this case, you have no local copy, so you do need to "Replace with Current from Server." We personally like to keep all checkouts exclusive, as it reduces the occurrence of merges and everything generally goes far smoother than if shared checkouts are used. So, click OK and the client will grab the file and put it in the proper place in your working directory. You will know that it is checked out because the icon next to the file will have a red checkmark on it. Go ahead and edit the file somehow. You can do this either from Windows, or right click on the file in the Evolution client and select edit. This will only work if the extension has an edit command registered with Windows. If you just want to look at a file and don't want to make any changes to it, you can right click on the file and select "view." This will use the Windows "Open" command on the file. After you have changed the file save it and go back to the Evolution client. Yo uwill notice that the status of the file has changed to "modified," as shown in the screenshot below.
Now right click the file again and select check in, and the status will change to current. If you repeat these last few steps with more than one user logged in ( you can use the same machine or separate ones ), you will see that both user's clients update this information in real time.
What's the Diff?
Now that you have modified a file under asset control, you can compare them to see the differences. In my case, the file is binary, so it can only tell if the files contents are different or not. If it you used an ASCII file, such as a source code file or a txt file, a separate tool will launch and diff them and highlight the differences for you. To initiate the diffing, highlight two versions of a file in the lower right pane of the Evolution client ( the Properties and History ) using the shift key to allow multiple selections. Then right click and select diff versions. The diff tool will pop up with the results. From here you can edit the right side version and save it, or just close the diff if you don't want to make any changes. The same tool will be used whenever a merge incident occurs ( such as when two users edit the same file and check it in ).
That about does it for the basics of asset management. There are of course lots of other things that can be done with Evolution and asset management in general. If interest from the community is high enough, I will write further tutorials that explain the options and more advanced features that are available to you. Feel free to write me email to request specific information.
A Quick Note
Our development schedule is almost completely feedback based. We have a general roadmap for large scale enhancements, but we release monthly updates that add small features and GUI enhancements. These come directly from our user base, so if there is something you would like to see or a bug that you notice, let us know immediately, and you will probably see it in the next release or the one after.
About the Author
Lucas Heneks is a Software Engineer at ionForge Company, a developer of SCM tools. He graduated from UC Irvine's School of Information and Computer Science. When not staring at a computer screen, he is usually sleeping. Contact him at [email="firstname.lastname@example.org"]email@example.com[/email]