This course examines the fundamentals of computer game software designed to familiarize the students with a broad understanding of many aspects of computer gaming. The course prioritizes broad coverage over deep coverage. Topics include 2D/3D graphics, input/output, real-time simulations, resource management, vector mathematics, sound, concurrency, and so forth, with an emphasis on cross-platform development. Practical applications of these topics are covered in programming assignments throughout the semester with the goal of developing a simple game of the student’s choice. Programming assignments are done in C or C++ on PC, MacOS, or Linux.
This course identifies the various aspects of creating computer games with an emphasis on reusable software components. Develops the fundamentals for interactive program including user inputs, persistence, real-time simulations, haptic feedback, etc., with programming assignments to deepen comprehension of how these elements interact. Discusses sound programming skills for cross-platform development and deployment, with long-term maintenance and extension; the fundamentals of a gaming engine framework.
By the end of the course, you will be able to:
Jason Gregory (2018). Game Engine Architecture, Third Edition. A K Peters/CRC Press.
ISBN-13: 978-1138035454
ISBN-10: 1138035459
SDL (Simple Directmedia Layer)
SDL development libraries are available for free (https://github.com/libsdl-org/SDL/releases/tag/release-2.24.0Links to an external site.) for Windows, MacOS, and Linux distributions.
Any IDE (integrated development environment) with C++ tools, or text editor and command-line compilers
Windows: Visual Studio Community Edition is available for free and provides all the necessary tools for development testing. https://visualstudio.microsoft.com/vs/community/Links to an external site.
MacOS: XCode is available for free in App Store and provides all the necessary tools for development testing. https://apps.apple.com/us/app/xcode/id497799835?mt=12Links to an external site.
Linux: IDE’s are available but may not have as rich support as Visual Studio or XCode. Available features also vary.
Any Platform: A text editor with command-line compilers can also be used, but will not provide the debugging support that most IDE’s offer.
It is expected that each module will take approximately 6-10 hours per week to complete. Here is an approximate breakdown: reading the assigned sections of the texts (approximately 1–3 hours per week) as well as some occasional outside reading, and programming assignments (approximately 5-7 hours per week).
This course will consist of the following four basic student requirements:
1. Programming Assignments (40% of Final Grade)
During the first 10 modules, eight programming assignments will be given worth 5 percentage points each. These are designed to familiarize the students with the core concepts of computer gaming as well as familiarize them with the SDL library.
All assignments are due according to the dates in the Calendar.
Late submissions will be reduced by one letter grade for each week late (no exceptions without prior coordination with the instructors).
All assignments must be submitted with source code and CMake files. All code must compile and run successfully. Partial credit may be given for parts of the assignment that were attempted but not completed. In such cases the code must be commented and may have sections “commented out” that show the attempt. Please note such attempts in a Readme file attached with the assignment. Parts of an exercise that show no attempt result in a 0 for that part of the assignment.
The grading criteria for each assignment will be included with the assignment, but will generally follow these guidelines:
2. Gaming Engine Component Survey (20% of Final Grade)
Students will survey a few components of gaming engines and discuss how they can be implemented. Students will also discuss how these components could be implemented in a few video games for which they are familiar. The purpose of this assignment is to think about common components and how they can be generalized to work for multiple applications. Students will submit a written paper, single-spaced, two or three pages in length, no later than the due date specified during the modules.
Since this assignment is theoretical, students will be graded on thoroughness of thought, not accuracy. Students must present their ideas clearly, and will be graded based on their approaches, their ability to justify their designs, and their ability to explain them.
The grading criteria will be as follows:
3. Final Project; A working Video Game (40% of Final Grade)
During the latter part of the semester, students will design and implement a video game. This project will build upon all the previous programming assignments and challenge the students to use common gaming components to create an interactive experience. Students will not be graded on their artistic abilities, nor their creativity; students may even choose an existing video game to mimic. The focus of the project is to examine the student’s ability to implement components and have them work well together. Game design will not be considered.
The project must be submitted with source code and CMake files. All code must compile and run successfully. Code must be easy to follow with sufficient comments to understand the logic. Requirements for the project will be detailed in the Assignments area about half-way into the semester.
Grading criteria is as follows:
Assignments are due according to the dates posted in your Blackboard course site. You may check these due dates in the Course Calendar or the Assignments in the corresponding modules. I/We will post grades one week after assignment due dates.
We generally do not directly grade spelling and grammar. However, egregious violations of the rules of the English language will be noted without comment. Consistently poor performance in either spelling or grammar is taken as an indication of poor written communication ability that may detract from your grade.
A grade of A indicates achievement of consistent excellence and distinction throughout the course—that is, conspicuous excellence in all aspects of assignments and discussion in every week.
A grade of B indicates work that meets all course requirements on a level appropriate for graduate academic work. These criteria apply to both undergraduates and graduate students taking the course.
EP uses a +/- grading system (see “Grading System”, Graduate Programs catalog, p. 10).
Score Range | Letter Grade |
---|---|
100-97 | = A+ |
96-93 | = A |
92-90 | = A− |
89-87 | = B+ |
86-83 | = B |
82-80 | = B− |
79-77 | = C+ |
76-73 | = C |
72-70 | = C− |
69-67 | = D+ |
66-63 | = D |
<63 | = F |
Final grades will be determined by the following weighting:
Item | % of Grade |
Programming Assignments | 40% |
Gaming Component Survey | 20% |
Final Project | 40% |
Deadlines for Adding, Dropping and Withdrawing from Courses
Students may add a course up to one week after the start of the term for that particular course. Students may drop courses according to the drop deadlines outlined in the EP academic calendar (https://ep.jhu.edu/student-services/academic-calendar/). Between the 6th week of the class and prior to the final withdrawal deadline, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and withdrew from the course.
Academic Misconduct Policy
All students are required to read, know, and comply with the Johns Hopkins University Krieger School of Arts and Sciences (KSAS) / Whiting School of Engineering (WSE) Procedures for Handling Allegations of Misconduct by Full-Time and Part-Time Graduate Students.
This policy prohibits academic misconduct, including but not limited to the following: cheating or facilitating cheating; plagiarism; reuse of assignments; unauthorized collaboration; alteration of graded assignments; and unfair competition. Course materials (old assignments, texts, or examinations, etc.) should not be shared unless authorized by the course instructor. Any questions related to this policy should be directed to EP’s academic integrity officer at ep-academic-integrity@jhu.edu.
Students with Disabilities - Accommodations and Accessibility
Johns Hopkins University values diversity and inclusion. We are committed to providing welcoming, equitable, and accessible educational experiences for all students. Students with disabilities (including those with psychological conditions, medical conditions and temporary disabilities) can request accommodations for this course by providing an Accommodation Letter issued by Student Disability Services (SDS). Please request accommodations for this course as early as possible to provide time for effective communication and arrangements.
For further information or to start the process of requesting accommodations, please contact Student Disability Services at Engineering for Professionals, ep-disability-svcs@jhu.edu.
Student Conduct Code
The fundamental purpose of the JHU regulation of student conduct is to promote and to protect the health, safety, welfare, property, and rights of all members of the University community as well as to promote the orderly operation of the University and to safeguard its property and facilities. As members of the University community, students accept certain responsibilities which support the educational mission and create an environment in which all students are afforded the same opportunity to succeed academically.
For a full description of the code please visit the following website: https://studentaffairs.jhu.edu/policies-guidelines/student-code/
Classroom Climate
JHU is committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone has the right to be treated with dignity and respect. Fostering an inclusive climate is important. Research and experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. At no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity.
If you have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, please reach out to the course instructor directly. Reporting will never impact your course grade. You may also share concerns with your program chair, the Assistant Dean for Diversity and Inclusion, or the Office of Institutional Equity. In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).
Course Auditing
When a student enrolls in an EP course with “audit” status, the student must reach an understanding with the instructor as to what is required to earn the “audit.” If the student does not meet those expectations, the instructor must notify the EP Registration Team [EP-Registration@exchange.johnshopkins.edu] in order for the student to be retroactively dropped or withdrawn from the course (depending on when the "audit" was requested and in accordance with EP registration deadlines). All lecture content will remain accessible to auditing students, but access to all other course material is left to the discretion of the instructor.