Game development isn’t a stand-alone program; rather, it is made up of intersecting, complementary disciplines. Students will be exposed to:
- software engineering,
- computer graphics,
- artificial intelligence,
- software architecture
Covering both emerging trends and proven knowledge, the program’s content is always relevant and current. This “best of both worlds” combination allows students to understand the connection between realized applied systems and issues they’ll likely face professionally in years to come.
Students will become proficient with real-time C++ Programming Language.
- Students will demonstrate programming language C++ concepts: class invocation, overloaded operators, STL containers, pointers and templates.
- Students will demonstrate understanding of optimized C++ programming techniques such as data caching, SIMD instructions, return value
optimization, proxy objects and implicit conversions.
Student will be able to design and implement real-time networking for Games.
- Students will demonstrate serialization of game data transmission by TCP/UDP socket programming.
- Students will demonstrate bandwidth compensation techniques for slow and intermittent network connection using dead-reckoning estimation technique.
- Students will create deterministic data driven flow in game applications.
- Students will be able to create and design software architecture systems using Design Patterns technique.
- Students will demonstrate the ability to identity design patterns used in a program and be able to select an appropriate design pattern to apply to a given problem.
- Students will demonstrate the ability to design/implement a system using one or more design patterns.
- Such as Factory, Singleton, Observer, Flyweight, Null Object, State, Commander, Composite, Iterator, Object Pool, Visitor and Strategy Patterns
- Students will demonstrate the ability to communicate software designs using UML diagrams.
Student will understand real-time polygonal video Graphics.
- Students will demonstrate a thorough understand of real-time polygonal graphics covering backface culling, camera, texturing, lighting, and transformations.
- Students will be able to use 3D Math (Matrix and Vector) and collision primitives to solve Graphics and simulations problems.
- Students will be able to implement an efficient graphics rendering system using data friendly buffers, such as Vertex Buffer Objects.
Students will be able to design and implement a real-time Game Engine.
- Students will demonstrate the ability to design/implement an end-to-end game engine, include game system libraries and full graphics pipeline.
- Students will demonstrate the ability to design/implement real-time game system components such as Memory, File, Object, Graphics and Math.
- Students will demonstrate the ability to create asset conversion tools for 3D models and animations.
- Students will demonstrate the ability to design/implement a 3D keyframe animation system.
Students will be able to develop software projects in a local and global environment.
- Students will demonstrate understanding issues relating to geographic, time related, cultural, economic and management issues of global software development.
- Students should understand Global software project management, including scheduling, estimating, coordinating, and monitoring of global
- Students will understand culturally based leadership and conflict resolutions with direct and indirect reporting.
- Students will be able to coordinate and communicate with distributed developers through asynchronous communication.
- Students will be able to evaluated and implement different software project management models such as Agile, SCRUM, Test-Driven
development and Waterfall.
- Students should able to use Software configuration management (SCM), including version control usage in a large scale project, including merging, branching, release and bug tracking.
Students will be able understand fundamentals of computer science
- Interpret the informal description of an algorithm and translate the description to a program and write tests to determine whether a program
solves the intended problem.
- Analytically determine the running time of a program and validate the analysis experimentally; select an appropriate combinatoric or statistical
technique to solve an analytic problem; analyze and select an algorithm based on systems effects.
- Solve a specific problem by using proper object oriented techniques and selecting appropriate data structures and algorithms and customize them
to the problem.
- Correlate the input of a compiler and its assembly language output.
- Criticize a program on the basis of its maintainability and suggest
improvements; interpret new APIs and use them in developing computer applications.
Students will be able to participate in the game development process from initial concept to finished product
- Understand game mechanics: Determining how specific play mechanics will be perceived by the player.
- Understanding of the Game Narrative design: Creating the individual narrative experience
- Design and constructing 3D levels in a Game Engine.
- Script and program behavior of interactive objects and characters in a level.
- Combining the editor and programmatic controls (scripting, software) to control behavior.
- Work in a collaborative team environment: Design, prototyping, recursive development.
- Modify or extend an existing 3D game level for effect.
- Collaborate with a team to develop a medium size computer game from ideation to implementation
- Be responsible for planning, and implementing a medium size computer game
- Create all necessary components of a medium size computer game