Language and Programming

Slides:



Advertisements
Similar presentations
Data Structures.
Advertisements

Debugging Mohammad Zikky, M.T. 2 Debugging Introduction (1 of 2)  Debugging is methodical process for removing mistakes in a program  So important,
Chapter 3.5 Debugging Games
CSCE 590E Spring 2007 Game Programming By Jijun Tang.
2 Object-Oriented Analysis and Design with the Unified Process Objectives  Explain how statecharts can be used to describe system behaviors  Use statecharts.
How do games work? Game Workshop July 4, Parts Sprites/pictures Map/background Music/sounds Player character Enemies Objects.
Reza Gorgan Mohammadi AmirKabir University of Technology, Department of Computer Engineering & Information Technology Advanced design.
Chapter 3.3 Programming Fundamentals Languages Paradigms Basic Data Types Data Structures OO in Game Design Component Systems Design Patterns.
CSCE 590E Spring 2007 Game Architecture and Math By Jijun Tang.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
Chapter 3.7 Memory and I/O Systems. 2 Memory Management Only applies to languages with explicit memory management (C or C++) Memory problems are one of.
© Copyright Eliyahu Brutman Programming Techniques Course.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Chapter 3.6 Game Architecture. 2 Overall Architecture The code for modern games is highly complex With code bases exceeding a million lines of code, a.
Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated.
Chapter 3.4 Game Architecture. Overall Architecture The code for modern games is highly complex With code bases exceeding a million lines of code, a well-defined.
CIT241 Prerequisite Knowledge ◦ Variables ◦ Operators ◦ C++ Syntax ◦ Program Structure ◦ Classes  Basic Structure of a class  Concept of Data Hiding.
Chapter Languages, Programming and Architecture.
CSE 381 – Advanced Game Programming 3D Game Architecture.
Design Patterns.
CSCE 552 Spring 2009 Game Design III By Jijun Tang.
CSCE 552 Spring 2010 Language and Programming By Jijun Tang.
CSCE 552 Spring 2009 Programming Fundamentals By Jijun Tang.
Chapter 3.5 Memory and I/O Systems. 2 Memory Management Memory problems are one of the leading causes of bugs in programs (60-80%) MUCH worse in languages.
CHAPTER TEN AUTHORING.
Design Patterns CSCI 5801: Software Engineering. Design Patterns.
“The perfect project plan is possible if one first documents a list of all the unknowns.” Bill Langley.
Standard Template Library The Standard Template Library was recently added to standard C++. –The STL contains generic template classes. –The STL permits.
Games Development Game Architecture: Entities CO2301 Games Development 1 Week 22.
Chapter 3.6 Game Architecture. 2 Overall Architecture The code for modern games is highly complex (can easily exceed 1M LOC) The larger your program,
CSCE 552 Fall 2012 Language and Programming By Jijun Tang.
Behavioral Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Introduction to Interactive Media Interactive Media Tools: Authoring Applications.
Games Development 1 Review / Revision CO2301 Games Development 1 Semester 2.
CSCE 552 Fall 2012 Language and Programming By Jijun Tang.
STL CSSE 250 Susan Reeder. What is the STL? Standard Template Library Standard C++ Library is an extensible framework which contains components for Language.
CSCE 552 Spring 2011 Math By Jijun Tang. Languages C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox.
CSE 332: Design Patterns (Part II) Last Time: Part I, Familiar Design Patterns We’ve looked at patterns related to course material –Singleton: share a.
CSCE 552 Spring 2009 Game Architecture and Math By Jijun Tang.
CSCE 552 Spring 2011 Language and Programming By Jijun Tang.
Examples (D. Schmidt et al)
Copyright © Jim Fawcett Spring 2017
Chapter 1: Introduction to Systems Analysis and Design
Game Architecture Rabin is a good overview of everything to do with Games A lot of these slides come from the 1st edition CS 4455.
Object-Oriented Analysis and Design
Behavioral Design Patterns
Week 10: Object Modeling (1)Use Case Model
Introduction Enosis Learning.
GoF Design Patterns (Ch. 26). GoF Design Patterns Adapter Factory Singleton Strategy Composite Façade Observer (Publish-Subscribe)
structures and their relationships." - Linus Torvalds
Introduction Enosis Learning.
Introduction to Computer Systems
Analysis models and design models
GoF Design Patterns (Ch. 26)
Chapter 1: Introduction to Systems Analysis and Design
Introduction to Data Structure
Informatics 122 Software Design II
Chapter 22 Object-Oriented Systems Analysis and Design and UML
Games Development Game Architecture: Entities
Chapter 8 - Design Strategies
Chapter 1: Introduction to Systems Analysis and Design
Games Development 1 Review / Revision
structures and their relationships." - Linus Torvalds
Games Development 2 Entity / Architecture Review
From Use Cases to Implementation
Lecture-Hashing.
Lecture 3 – Data collection List ADT
Jim Fawcett CSE687 – Object Oriented Design Spring 2015
GoF Patterns Ch. 26.
Presentation transcript:

Language and Programming CSCE 552 Fall 2012 Language and Programming By Jijun Tang

Methodologies: Code and Fix Unfortunately very common Little or no planning Always reacting to events Poor quality and unreliability of finished product “Crunch” time normal

Methodologies: Waterfall Very well-defined steps in development Lots of planning ahead of time Great for creating a detailed milestone schedule Doesn't react well to changes Game development is too unpredictable for this approach

Methodologies: Iterative Multiple development cycles during a single project Each delivering a new set of functionality Refinements are needed The game could ship at any moment Allows for planning but also for changes

Methodologies: Agile Methods Deal with the unexpected Very short iterations: 2-3 weeks Iterate based on feedback of what was learned so far Very good visibility of state of game Difficult for publishers or even developers to adopt because it's relatively new

Languages C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox

Lua Example

MSTS Example

Choose a Scripting Languages Consider whether you need one at all What features do you need? What kind of performance do you need? What debugging facilities does the language have? On what platforms does it need to run? What resources and expertise are available?

Programming Fundamentals

Data Structures: Array Elements are adjacent in memory (great cache consistency) Requires continuous memory space They never grow or get reallocated Use dynamic incremental array concept GCC has a remalloc function In C++ there's no check for going out of bounds Use vector if possible Keep in mind of checking boundaries Inserting and deleting elements in the middle is expensive

List Very cheap to add/remove elements. Available in the STL (std::list) Every element is allocated separately, not placed contiguously in memory Lots of little allocations Bad cache awareness, but can use arrays to hold pre-allocated items Single/Double linked list

Lists

Dictionaries Maps a set of keys to some data. std::map, std::hash, etc Very fast access to data Perfect for mapping IDs to pointers, or resource handles to objects May waste space, need to design comparison operators

Hash Table

Others Stacks Queues First in, last out std::stack adaptor in STL First in, first out std::deque Priority queue is useful in game to schedule events

Stack/Queue/Priority Queue

Bit packing Fold all necessary data into a smaller number of bits Bool in C++ may use up to 4 bytes, thus is very expensive Very useful for storing boolean flags: pack 32 in an integer Possible to apply to numerical values if we can give up range or accuracy Very low level trick Use shifts to handle the operation or use assembly Only use when absolutely necessary

Bits

Inheritance Models “is-a” relationship Extends behavior of existing classes by making minor changes Do not overuse, if possible, use component systerm UML diagram representing inheritance

Polymorphism The ability to refer to an object through a reference (or pointer) of the type of a parent class Key concept of object oriented design C++ implements it using virtual functions

Multiple Inheritance Allows a class to have more than one base class Derived class adopts characteristics of all parent classes Huge potential for problems (clashes, casting, dreaded diamond, etc) Multiple inheritance of abstract interfaces is much less error prone (virtual inheritance) Java has no multiple inheritance

Dreaded Diamond It is an ambiguity that arises when two classes B and C inherit from A, and class D inherits from both B and C. If a method in D calls a method defined in A (and does not override the method), and B and C have overridden that method differently, then from which class does it inherit: B, or C?

Component Systems Component system organization

Object Factory Creates objects by name Pluggable factory allows for new object types to be registered at runtime Extremely useful in game development for passing messages, creating new objects, loading games, or instantiating new content after game ships

Factory Pattern

Simple Sample Factory - I

Simple Sample Factory - II

Singleton Implements a single instance of a class with global point of creation and access For example, GUI Don't overuse it!!!

Singleton Example

Adapter Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces Real interface

Adapter Pattern

Adapter Example - I

Adapter Example - II

Observer Allows objects to be notified of specific events with minimal coupling to the source of the event Two parts subject and observer

Observer Pattern

Composite Allow a group of objects to be treated as a single object Very useful for GUI elements, hierarchical objects, inventory systems, etc

Composite Pattern

Composite Pattern Example - I Add many more inherited classes

The Five Step Debugging Process 1. Reproduce the problem consistently 2. Collect clues 3. Pinpoint the error 4. Repair the problem 5. Test the solution

Expert Debugging Tips Question assumptions Minimize interactions and interference Minimize randomness Break complex calculations into steps Check boundary conditions, use assertions Disrupt parallel computations Exploit tools in the debugger (VC is good, purify) Check code that has recently changed Explain the bug to someone else Debug with a partner (A second pair of eyes) Take a break from the problem Get outside help (call people)

Game Architecture

Overall Architecture The code for modern games is highly complex The Sims: 3 million lines of code Xbox HD DVD player: 4.7 million lines MS Train Simulator has 1GB installed, with only 10MB executable With code bases exceeding a million lines of code, a well-defined architecture is essential

Overall Architecture Main structure Game-specific code Game-engine code Both types of code are often split into modules, which can be static libraries, DLLs, or just subdirectories

Overall Architecture Architecture types Ad-hoc (everything accesses everything) Modular DAG (directed acyclic graph) Layered Options for integrating tools into the architecture Separate code bases (if there's no need to share functionality) Partial use of game-engine functionality Full integration

Ad-hoc

Modular

DAG

Layered

Overview: Initialization/Shutdown The initialization step prepares everything that is necessary to start a part of the game The shutdown step undoes everything the initialization step did, but in reverse order

Initialization/Shutdown Resource Acquisition Is Initialization A useful rule to minimalize mismatch errors in the initialization and shutdown steps Means that creating an object acquires and initializes all the necessary resources, and destroying it destroys and shuts down all those resources Optimizations Fast shutdown Warm reboot

Overview: Main Game Loop Games are driven by a game loop that performs a series of tasks every frame Some games have separate loops for the front and the game itself Other games have a unified main loop Must finish a loop within 0.017 second

Tasks of Main Game Loop Handling time Gathering player input Networking Simulation Collision detection and response Object updates Rendering Other miscellaneous tasks

Sample Game Loop

Main Game Loop Structure Coupling Hard-coded loops Multiple game loops: for each major game state Consider steps as tasks to be iterated through Coupling Can decouple the rendering step from simulation and update steps Results in higher frame rate, smoother animation, and greater responsiveness Implementation is tricky and can be error-prone

Execution Order of Main Loop Most of the time it doesn't matter In some situations, execution order is important Can help keep player interaction seamless Can maximize parallelism Exact ordering depends on hardware