1 / 23

GMNG 4312 –Game Engines

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?

ophrah
Télécharger la présentation

GMNG 4312 –Game Engines

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Objectives • Tools of the Trade • Version Control • Visual Studio 2010 • Profiling Tools • Memory Leaks and Corruption Detection Tools • Other Tools

  3. 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!

  4. 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!

  5. 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

  6. 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.

  7. 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. • NxNAlienbrain • A source control system for the game industry • Support very large databases • Specially for binary assets like movies, 3D models, etc.

  8. 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

  9. 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.

  10. 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

  11. 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

  12. 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!

  13. 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.

  14. 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

  15. Using SVN • Three-way Merge • When programmers made changes to similar contents checkout (A) checkout (B) Version 1 checkout (A) Version 2 Version 1 Version 3 Checkout (A) Version 2 Version 1

  16. 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

  17. 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

  18. 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!

  19. 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

  20. 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!

  21. 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 .

  22. 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

  23. Questions? • Game Engine Architecture • Chapter 2

More Related