gmng 4312 –game engines
DESCRIPTION
GMNG 4312 –Game Engines. Unit 02:Tools of the Trade Alireza Tavakkoli, Ph.D. Objectives. Tools of the Trade Version Control Visual Studio 2010 Profiling Tools Memory Leaks and Corruption Detection Tools Other Tools. Version Control. What is Version Control? - PowerPoint PPT PresentationTRANSCRIPT
Uni
vers
ity
of H
oust
on –
Vi
ctor
ia
GMNG 4312 –Game Engines
Unit 02:Tools of the Trade
Alireza Tavakkoli, Ph.D.
1
University of H
ouston – Victoria
Objectives Tools of the Trade
Version Control Visual Studio 2010 Profiling Tools Memory Leaks and Corruption Detection Tools Other Tools
2
University of H
ouston – Victoria
Version Control What is Version Control?
Multiple users to work on a project Trace changes Keep track of multiple modifications Share the latest code Avoid unintentional code corruptions
Even for one user Keep a copy of the latest files on the repository
On multiple machines! Version control keeps track of the history of the
files! Also called source control.
Can be used to keep track of text files and binaries as well.
Invaluable in Gaming Industry! 3
University of H
ouston – Victoria
Why Using Version Control? Reasons to use version control
Central repository Keeping history of changes Tagging specific code versions for retrieval Branching off from main development for patches
and updates
As mentioned source control is also useful in single engineer projects!
4
University of H
ouston – Victoria
Common Version Control Systems SCCS and RCS
Source Code Control System and Revision Control System Oldest version control systems Use command line interface
CVS Concurrent Version System
Heavy-duty professional grade version control Command-line based Mostly in UNIX bases systems CVSSNT (WinCVS) is the windows counterpart
5
University of H
ouston – Victoria
Common Version Control Systems Subversion
Open source version control system Popular for individual, student, small studio
projects We use this!
Git Open source revision control
Used for linux kernel Make changes to files Commit to branches Git can roll the diff(erences) and reapply them to
new bases revisions rebasing.
6
University of H
ouston – Victoria
Common Version Control Systems Perforce
A Professional grade source control system Change lists:
A collection of source files that have been modified as a logical unit.
Useful as a transaction processing unit Either all changes within the list are submitted or
none will. NxN Alienbrain
A source control system for the game industry Support very large databases
Specially for binary assets like movies, 3D models, etc.
7
University of H
ouston – Victoria
Common Version Control Systems ClearCase
Very large scale software production A Unique UI that extends the windows explorer
functionality Expensive!
Microsoft Visual SourceSafe Light-weight source control package
8
University of H
ouston – Victoria
Subversion and TortoiseSVN We use Subversion
It’s free It’s nice and reliable Easy to setup
Actually we use GoogleCode! A number of windows and mac subversion clients
We use TortoiseSVN Client-Server Architecture
Server contains the repository Client connect to server to update the repository
Commits, Updates, Tags, Revisions, Branches, etc. Let’s see how to set up our Source Version
Control system.
9
University of H
ouston – Victoria
Setting Up Version Control Code.Google.Com
http://code.google.com Setup an account Sign in Go to project hosting Create a project for Google Code (or Eclipse Labs).
Set up administrative options and users. 4GB with 200MB upload size limit
10
University of H
ouston – Victoria
Setting Up Version Control Download and install TortoiseSVN
http://tortoisesvn.tigris.org Using TortoiseSVN
Create folders in your local machine Right-click and from context menu
Check out project Use “https://” URL for checkout with commit
functionality Uset “http://” URL for read-only checkouts
URLs can be found under your “profile” after signing-in to GoogleCode
To commit you need GoogleCode password Differenet than your google account password
Go to project source GoogleCode password
11
University of H
ouston – Victoria
Using SVN File Versions, Updating, Committing
Multiple programmer – Multiple files Keep track of changes
Use a master version of all files This is your repository!
All versions will remain in the repository! Even deletes You can track every thing in the repository Even commits that “break” the build!
Each programmer has a local copy After updating with repository Work on your local copy
Commit the changes you made when you are absolutely certain you would want to do so!
12
University of H
ouston – Victoria
Using SVN Diffs
During a commit operation a diff is created Changes between the repository and local version Line by line comparison Double click in the commit dialog to see the diffs
Can check it out on google code as well.
Non Versioned files New files that don’t exist in the repository
Missing The files that are deleted Will not be removed from repository!
Are tagged as deleted.
13
University of H
ouston – Victoria
Using SVN Multiple Check Outs
Exclusive checkout Locking items that are checked out
Ensure no simultaneous edits! Subversion does not explicitly asks this!
Multiple checkouts The first committed files become the latest on the
repository! Other commits must be merged with the latest version! More than one set of diffs is generated!
Most conflicts can be resolved automatically Editing different parts by different users!
In other cases a three-way merge is necessary
14
University of H
ouston – Victoria
Using SVN Three-way Merge
When programmers made changes to similar contents
15
Version 1
checkout (A)
Version 1
checkout (A) Version 2
Version 1
Checkout (A) Version 2
Version 3
checkout (B)
University of H
ouston – Victoria
Using SVN Deleting Files
Deleted files are not really gone! They are merely tagged as deleted.
The users will no longer see files in their local directory.
Use “Show Log” to see and access the deleted files.
Un-deleting the files Recommit the latest version
16
University of H
ouston – Victoria
Microsoft Visual Studio There are many compilers for C++
What is a compiler How are C++ files used?
Compile + Link MS Visual Studio
Professional Express
http://www.microsoft.com/express/download
Visual Studio is an IDE Source code + Machine code + debugger
17
University of H
ouston – Victoria
Different Files Source, header and translation units
Source code contains the course files. C++, C, CPP, etc.
Translation Units Compiler translates into machine code
Header files Contain type declaration, function prototypes, etc. Share between translation units Compiler doesn’t see header files
Preprocessor! Use #include statement Distinct from programmer’s point of view!
18
University of H
ouston – Victoria
Libraries, Executables, DLLs Object File
The translated version of a translation unit (.obj or .O) Relocatable
Code memory addresses not determined. Unilked
External references (to functions, etc.) have not been resolved.
Libraries Groups of object files! A convenience
19
University of H
ouston – Victoria
Libraries, Executables, DLLs Executables
Objects and libraries have to be “linked” into executable files.
Contain fully resolved machine code
Linkers operations To calculate final relative addresses of all machine
code Ensure all external references are resolved properly
Global data Reference functions
Executable is relocateable The addresses are still relative to the base address
It is finalized when the executable is in RAM!20
University of H
ouston – Victoria
Dynamic Linked Library (DLL) What is a DLL?
Hybrid between (static) library and executable Acts like a library
Contains functions that can be called Acts like an executable
Can be loaded by the OS independently Contains startup and shutdown code!
Executables that use DLLs contain partially linked machine code The references and data to the DLL remain
unlinked! Upon running the OS resolves the unlinked
information from the DLL. Load the DLLs in the memory and patch in the
addresses! Look for them in the bin folder . 21
University of H
ouston – Victoria
Projects and Solutions Projects
Collection of source files that compile into Executables, libraries or DLLs
Stored in .vcproj Are XML files
Human readable
Solutions are the collections of Projects
Solution Explorer Solution is the root
22
University of H
ouston – Victoria
Questions? Game Engine Architecture
Chapter 2
23