gmng 4312 –game engines

23
University of Houston – Victoria GMNG 4312 –Game Engines Unit 02:Tools of the Trade Alireza Tavakkoli, Ph.D. 1

Upload: ophrah

Post on 15-Feb-2016

63 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: GMNG 4312 –Game Engines

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

Page 2: GMNG 4312 –Game Engines

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

Page 3: GMNG 4312 –Game Engines

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

Page 4: GMNG 4312 –Game Engines

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

Page 5: GMNG 4312 –Game Engines

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

Page 6: GMNG 4312 –Game Engines

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

Page 7: GMNG 4312 –Game Engines

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

Page 8: GMNG 4312 –Game Engines

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

Page 9: GMNG 4312 –Game Engines

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

Page 10: GMNG 4312 –Game Engines

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

Page 11: GMNG 4312 –Game Engines

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

Page 12: GMNG 4312 –Game Engines

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

Page 13: GMNG 4312 –Game Engines

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

Page 14: GMNG 4312 –Game Engines

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

Page 15: GMNG 4312 –Game Engines

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)

Page 16: GMNG 4312 –Game Engines

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

Page 17: GMNG 4312 –Game Engines

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

Page 18: GMNG 4312 –Game Engines

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

Page 19: GMNG 4312 –Game Engines

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

Page 20: GMNG 4312 –Game Engines

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

Page 21: GMNG 4312 –Game Engines

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

Page 22: GMNG 4312 –Game Engines

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

Page 23: GMNG 4312 –Game Engines

University of H

ouston – Victoria

Questions? Game Engine Architecture

Chapter 2

23