- Instructor
- Class Information
- Description
- Objectives
- Computer/Software Requirements
- Grading Scheme
- Deadlines
- Course Weekly Schedule
- Lectures Links
- Getting Help and Discord
- Moses Center Statement of Disability
- Academic Integrity
Sebastián Romero Cruz (They / Them)
Office Hours | |
---|---|
src402@nyu.edu | calendly |
- Pre-Requisites: Data Structures and Algorithms (C- or better)
- Credits: 3
A programming intensive introduction to the creation of computer games. Using mostly two-dimensional sprite-based programming, we examine and experiment with animation, physics, artificial intelligence and audio. In addition, the course explores the mathematics of transformations (both 2D and 3D) and the ways they may be represented.
You will be able to create simple 2D games. You will learn about vectors, coordinate systems, sprites, collisions, physics, audio and handling input. This will all be done with C++ programming and utilizing the SDL (Simple DirectMedia Layer) libraries along with OpenGL.
You need to use either a Mac or Windows computer. You do not need a powerful machine as we are not writing anything super complicated. For Mac users, you’ll be using Xcode. For Windows, you will be using Visual Studio. These are both freely available.
You will also need a Github account!
Percentage | |
---|---|
Project 1: Draw a Simple 2D Scene | 10% |
Project 2: Pong | 10% |
Project 3: Lunar Lander | 15% |
Project 4: Rise of the AI | 15% |
Project 5: Platformer | 15% |
Final Project: Students’ Choice | 25% |
-
All projects are due at 11:59pm the day before lecture.
- Due by 11:59pm means your project was successfully uploaded by that time.
- Start uploading your project at least an hour before the deadline.
- Projects received 1 minute late are considered to be a day late.
-
If there are any issues with uploading your project, you must email me before the due date.
- While I check email regularly, do not expect a response over the weekend or close to deadlines.
- Your code must compile. Code that does not compile will receive a grade of 0.
- Late projects will have 10 points deducted per day. Late projects will not be accepted after 2 days.
Week | Topic |
---|---|
Week 1 | Introduction |
Week 2 | Linear Algebra |
Week 3 | Basic Graphics with OpenGL |
Week 4 | Input, Time-Based Movement |
Week 5 | Sprites and Sprite Animation |
Week 6 | Game Physics and Fixed Timestep |
Week 7 | Audio |
Week 8 | AI Programming |
Week 9 | Platformer Levels |
Week 10 | Effects and Shaders |
Week 11 | Particle Systems |
Week 12 | Introduction to 3D Graphics |
Week 13 | Advanced 3D Graphics |
Week 14 | Prototyping and Polishing |
Week 15 | Final Project Presentations |
All work is to be done on your own. There are no group projects. There is no extra credit in this course and the grades are not curved.
- Introduction
- Triangles
- You're getting old, Matrix
- Transformation Practice
- Delta Time
- Textures
- Player Input
- Collision Detection
- Sprite Animation and Text
- Entities
- Physics
- Colliding with Different Kinds of Entities
- Music and Sound Effects
- Basic Enemy AI
- Tilesets and Tilemaps
- Scenes
- Effects
- Shaders
- Intro to 3D
- 3D Models
If you are emailing me for help with your projects, upload your entire project to github and email me with the link (I need to see everything so I can help you). Do not email screenshots of your code.
Discord Server: We will be using Discord to answer quick questions that you may have about the course throughout the semester. Discord is a very lightweight instant-messaging platform very similar to Slack. Please click here to join (you will need to make an account). While I’m usually pretty lax in terms of behavior in our server (see: #off-topic), this server is still a university environment and should be treated as such. Be respectful to your fellow students. Please adhere to the following rules:
-
Do not post your homework assignment code, or anybody else's, on this server. Doing so will have you automatically banned and flagged for plagiarism. You may, however, share small code blocks that don’t give away your implementation in order to ask questions.
-
Please use your real first and last name as your name for easy identification.
-
While we aim to be as active as possible on this server, we may not always have time to respond to a question. Please respect the team’s time as you wait for somebody to answer your question.
-
This is a productivity server. While we encourage a relaxed atmosphere, let's stay on topic. For absolutely necessary off-topic content (it happens), post in #off-topic.
-
Use #concepts-help to ask questions that pertain to the lecture material in general (i.e. not specific to a project).
-
Use #project-questions to ask questions that pertain to the project concepts in general.
-
Do NOT use this server to rant about your performance in the class. This is a professional environment, and so such behavior will result in a ban. If you would like to discuss your grades, schedule office hours with me.
-
You may not add the instructors as Discord friends until after the semester ends.
-
You may not invite any people outside of our class into this server.
If you are a student with a disability who is requesting accommodations, please contact New York University’s Moses Center for Students with Disabilities (CSD) at 212-998-4980 or mosescsd@nyu.edu. You must be registered with CSD to receive accommodations. Information about the Moses Center can be found at www.nyu.edu/csd. The Moses Center is located at 726 Broadway on the 3rd floor.
NYU School of Engineering Policies and Procedures on Academic Misconduct Student Code of Conduct.
-
Introduction: The Tandon School of Engineering encourages academic excellence in an environment that promotes honesty, integrity, and fairness, and students at the Tandon School of Engineering are expected to exhibit those qualities in their academic work. It is through the process of submitting their own work and receiving honest feedback on that work that students may progress academically. Any act of academic dishonesty is seen as an attack upon the School and will not be tolerated. Furthermore, those who breach the School’s rules on academic integrity will be sanctioned under this Policy. Students are responsible for familiarizing themselves with the School’s Policy on Academic Misconduct.
-
Definition: Academic dishonesty may include misrepresentation, deception, dishonesty, or any act of falsification committed by a student to influence a grade or other academic evaluation. Academic dishonesty also includes intentionally damaging the academic work of others or assisting other students in acts of dishonesty. Common examples of academically dishonest behavior include, but are not limited to, the following:
-
Cheating: intentionally using or attempting to use unauthorized notes, books, electronic media, or electronic communications in an exam; talking with fellow students or looking at another person’s work during an exam; submitting work prepared in advance for an in-class examination; having someone take an exam for you or taking an exam for someone else; violating other rules governing the administration of examinations.
-
Fabrication: including but not limited to, falsifying experimental data and/or citations.
-
Plagiarism: intentionally or knowingly representing the words or ideas of another as one’s own in any academic exercise; failure to attribute direct quotations, paraphrases, or borrowed facts or information.
-
Unauthorized collaboration: working together on work that was meant to be done individually.
-
Duplicating work: presenting for grading the same work for more than one project or in more than one class, unless express and prior permission has been received from the course instructor(s) or research adviser involved.
-
Forgery: altering any academic document, including, but not limited to, academic records, admissions materials, or medical excuses.
-