Game Development and Programming

1 Course: CSCI-4920/5920 - Computer Game Design and Programming

Instructor: Dr. Min-Hyung Choi
Course Type: Online
Office: Lawernce St. Center LW-812
Office Hours: Monday: 2:00[pm] - 3:30[pm] Wednesday: 2:00[pm] - 3:30[pm]
Graphics Lab: Monday - Friday: 9:00[am] - 7:00[pm]

Overview: This course provides an overview of the design and development pipeline used by most game developers to design and implement modern games using a game engine and several additional development tools used for content creation. This course includes an overview of the multi-faceted interdisciplinary field of game development (which spans story writing, concept art, asset creation, level design, music composition, game mechanics, and animation), an introduction to technical development with visual programming and C++, and provides the foundation for creating an independent game.

To facilitate this within a 16 week schedule, this course will use an existing game engine (Unreal Engine) to enable rapid prototype game development with the C++ programming language. This also allows for the selection of a pre-made game template provided by the engine to significantly decrease the startup time required to make a functional game (templates include first-person shooters, third-person, flying, top-down, rolling, flying, and side-scroller games). This course is broken down into 12 individual modules that provide the foundation required for developing games on an existing game engine:

Course Topics:

The objective of this course is to provide a hands-on overview of the game design process and provide enough of a foundation in the various development fields (level design, asset creation, programming, animation, etc.) to complete a prototype of an independent game that will be developed during the last four weeks of the semester.

Course Format This course is an online course, so an extensive amount of content will be referenced online and provided through this course website. Due to the popularity of game design and use of the Unreal Engine, there are abundant resources that are available outside of this course (including both tutorials, video guides, and content). The development of documentation and books related to Unreal Engine 4 are still premature, thus the official documentation and video tutorials (provided by Epic games, the developer of the Unreal Engine) will be used within this course to provide technical guides for using the Unreal Engine.

This course is broken down into three primary graded items: (1) the set of individual homeworks that are assigned for learning how to use the Unreal Editor for game development, (2) your game project proposal, and (3) the implementation of your game project using the Unreal Engine.

For the final game project, project proposals will be evaluated and accepted based on the technical merit, feasibility of proposed game, and other resources used to justify the development of the game (concept art, story, assets, etc.). To facilitate unique projects, several additional research areas can be included within the final game project: procedural generation, virtual reality, augmented reality, mobile development, physical simulation, or rendering techniques (stylized rendering).

2 Course Content Schedule

Week 1:Introduction to Game Development and Modern Game Engines
Week 2:Level Design: 3D Environment Design
Week 3:Computer Graphics and Unreal Engine 4
Week 4:Asset Design: Structure, Objects, Materials, and Content Creation
Week 5:Visual Programming with Blueprints
Week 6:Blueprint Games and Game Project Proposals
Week 7:UE4 C++ Game Programming
Week 8:Sound and Music Composition
Week 9:UI Design and Cinematics
Week 10:Dynamics and Game Physics
Week 11:Character Design
Week 12:Animation
Week 13-16:Game Project Implementation

3 Prerequisites

Pre-requisites: CSCI-3412 - Algorithms
Co-requisites: N/A

Required Knowledge-base:

Extensive knowledge of game development or the associated set of tools used for content creation is not required; however game development relies on mathematics and programming, therefore these will be used in this course to complete some of the later homework assignments and final game project. Being familiar with object-oriented C++ is critical for programming within the Unreal Engine (which is C++ based and utilizes OOP designs).

4 Instructor Communication

In most cases I am on campus in my office or in my lab during regular daytime hours. However, I am often in meetings. The easiest way to reach me is always email. I am happy to meet with you face-to-face, on campus. Either stop by my office or schedule a meeting.

Please note, address email to Dr. Choi with the header CSCI-4920. By sending it to this address with the header, my mail filters will place your emails in a designated spot so I can ensure the fastest response! Do not forget to identify yourself with your full name and course number.

As a general policy, I will respond to all phone calls and emails within 24 hours. Typically, I can respond to emails within in a few hours.

Because this is an online course, it is up to each student to be sure to address questions, comments and concerns to me in a timely manner. Likewise, I will work to quickly answer your questions and ensure you have the information you need to be successful in this course!

Note: All students are responsible for keeping all contact information up to date with the University. University policy is that email is the preferred form of contact. If you do not update your email address, you will be missing important information from the College.

5 Technical Requirements and Programming

Students are responsible for maintaining or accessing a computer system capable of allowing them to participate in all aspects of this course (or worst case lab equipment will be provided). This includes, but is not limited to: (1) Access to the Canvas course website, (2) compiling C++ code (Visual Studio), (3) using the Unreal Engine, and access to the course website content. Any required software and materials will be provided for students enrolled in this course (all of the software tools used within this class are free; however some of them are only released on Microsoft Windows.

Game design revolves around the use of high-end graphics engines and other tools that require extensive computing resources. Due to these high requirements of the Unreal Engine, older computers and laptops may not provide adequate specs for modern game development. If this is the case and you have no access to a computer capable of running the Unreal Engine, please contact the instructor immediately. The other software packages (including 3D modeling programs, photo editing, and music composition software) are all freely available to students for this course and can be downloaded from the provided sources.

While a broadband internet connection is not required for this course, it is highly recommended that you access the course with a DSL or cable modem. This is primarily for supplementary online videos.

If for any reason you are having technical difficulties that are limiting or preventing your full participation in the class, please notify the instructor immediately! I will work with you to ensure that your online learning experience is not hampered by technical issues.

6 Textbook

Main Textbook: NA

This course does not use a published book as the main source of content for game development within the Unreal Engine. This course website and the official Unreal Documentation Website are used to provide all required reading and guides for developing the homework and final project of this course.

This is due to the newly designed rapid environment of open source game engine development that has been introduced with Unreal Engine 4. Since the engine is now open source on GitHub, the code and engine content fluctuate wildly. Therefore any books that are published with respect to a specific version of the engine will quickly become outdated as the developers continue to refactor and update the existing code-base.

7 Grading Policy

Grading is intended to assess both the effort and the performance of the student in the class. A student’s final grade in this course will reflect the quality written communication in expressing an understanding of course concepts.

Because this is an online course and most assignments will be related to creating content within the Unreal Editor and programming, the quality of your code, game design, and written content are important. You will be assessed both on the content and the quality of your code, game, and documentation. In general, you will not be evaluated on the length of your writing or expected to deliver commercial quality content. So, excessively more frequent contributions to discussion lists or longer papers will not improve a grade if the ideas expressed are not clear, and high quality content will not drastically improve a grade if the other requirements are non-functional.

Course grades will be based on about 6 programming-based assignments and a final project. For graduate students, a research project will be required and incorporated into the coursework/grade.

Course Grade Distribution:

The total accumulated score in 100 scale based on the above percentages will be used for letter grades as follows:

I will give pluses on the borderline cases. The letter grade guideline can be adjusted slightly based on the curve.

8 Work Policy

Late work is accepted entirely at the discretion of the instructor. Any work accepted late will be graded down a minimum of one full grade. In most cases, only partial points will be given for late work. (typically 10% deduction per 24 hours). This course is largely assignment-based, meaning that there will be a significant amount of work that will be required outside of class. Completing assignments on time is critical to your success in the course!

In an exceptional case that you will not be able to complete work the week it will be due, please contact the instructor to see if other arrangements are possible.

9 Attendance

This course is an online class, therefore a normal class attendance policy is not used. Rather, this course will not physically meet and all supplementary materials will be provided on the course website and associated Canvas page. If additional assistance is required in person, see the listed times for the Graphics Lab or contact Dr. Choi.

10 Etiquette and Conduct

An online class requires a significant amount of writing - through emails, assignments and discussion groups. You should remember that your written comments to others, whether in private emails or public discussion groups, should reflect the same sort of courtesy you would use in spoken communication. This includes strict avoidance of sexist, racist or other derogatory language. Also, keep in mind that in written communication it is very difficult at times to determine tone. A playful jab verbally can be read as a harsh criticism in an email.

You are responsible for the content of your writing. Please be aware that you have the responsibility to keep your communication civil, friendly and professional.

11 Academic Integrity

Homework and programming assignments, except when explicitly specified otherwise, should be done alone. It is reasonable to discuss general approaches to problem solutions or algorithm design with other students but the bulk of the work must be done alone. Working out details, sharing in the write-up or sharing or copying code, blueprints, assets, or designs, regardless of the amount of copied content, will be treated as a violation of the academic integrity rules.

University Academic Honor Code and Discipline Policies

Academic dishonesty policies established by the University of Colorado System, the University of Colorado Denver, and the College of Engineering and Applied Science apply within the Computer Science and Engineering Department. Faculty decisions on cheating–whether it has occurred, and the severity of the offense–depend on several factors:

Official Honor Code: CEAS Student Honor Code Download (PDF)

Criteria for judging potential cheating incidents include the following:

The determination of cheating in a course is the instructor’s responsibility. The penalty for cheating–wherever or whenever the cheating is determined to have occurred–is failure of the course .