Last update: 05/02/2024, 10:50 am, updated presentation schedule
Slides:
BSP Trees: BSPTrees.pdf, (sources for demo)
Collision Detection: CollisionDetection.pdf
Path Finding: PathFindingGames.pdf (uninformed search, informed search and heuristics)
Game AI: AI.pdf
Assignments:
Recordings:
20240201, 20240206, 20240213, 20240215, 20240220, 20240222, 20240229, 20240305, 20240307,
20240319, 20240326, 20240328, 20240402, 20240409, 20240411
Please use this link to choose a time slot: https://calendly.com/csc329/30min.
Tue 4/23 | Presenter | Thu 4/25 | Presenter | Thu 5/2 | Presenter |
---|---|---|---|---|---|
11:00 am | Sydney Divozzo | 11:00 am | 9:00 am | Justin Bonner | |
11:15 am | Stef Yaegel | 11:15 am | Kevin Ma | 9:15 am | Anthony Pena |
11:30 am | Zaviay Bashay | 11:30 am | Sophia Leabo | 9:30 am | |
11:45 am | Alex Patriotis | 11:45 am | Davis Flowers | 9:45 am | Michael Castellucci |
12:00 pm | Mariana Lema | 12:00 pm | Jayla Maritsa Paschalis | 10:00 am | Abhay Kumar |
10:15 am | Hannah Belton | ||||
Break | |||||
10:45 am | Ximena Renteria | ||||
11:00 am | Martineulr Marasigan | ||||
11:15 am | |||||
11:30 am | Mason Muscarello | ||||
11:45 am | Kai Binatti | ||||
12:00 pm | Kareena Shetty | ||||
Break | |||||
1:00 pm | Nisan Korkmaz | ||||
1:15 pm | Regina Salem | ||||
1:30 pm | Julian Cantillo | ||||
1:45 pm | Rory Peters | ||||
2:00 pm | Gabriel Madeira | ||||
2:15 pm | Jason Foster | ||||
Break | |||||
2:45 pm | Arian Djahed | ||||
3:00 pm | Brandon Davidov | ||||
3:15 pm | |||||
3:30 pm | Alex Hammel | ||||
3:45 pm | Julia Lubarsky | ||||
4:00 pm | Tyler Tejera | ||||
Break | |||||
4:30 pm | Ryan Lin | ||||
4:45 pm | Joia Intrator | ||||
5:00 pm | Kishan Rao | ||||
5:15 pm | Alexander Caldwell | ||||
5:30 pm | Mike Maron | ||||
5:45 pm | James Frierson |
Here is how you test for game in a browser:
# | Game presentations | Date | Presenters |
---|---|---|---|
1 | World of Warcraft | 01/25 | Kishan, Justin, Kai |
2 | Virtua Fighter | 01/25 | Anthony, James, Ximena |
3 | Asteroids | 02/01 | Arian, Ryan, Mason |
4 | Wolfenstein 3D | 02/01 | Davis, Michael, Tyler |
5 | Alone in the Dark | 02/08 | Abhay, Gabriel |
6 | Kings Quest | 02/08 | Nisan, Stef, Sydney |
7 | John Madden NFL | 02/15 | Jason, Rory |
8 | Sim City | 02/15 | Hannah, Joia, Mike |
9 | Night trap | 02/22 | Zav, Brooks |
10 | Caution Seaman | 02/29 | Mariana, Sophia, Jayla |
11 | Final Fantasy | 02/29 | Martin, Julian, Brandon |
12 | L.A. Noire | 03/07 | Alex, Julia, Kevin |
13 | RezHD | 03/07 | Alex H., Kareena, Regina |
We are using a SVN (subversion) repository for this class. Each student will get an account and will receive the credentials to access this account. For those new to repositories and in particular SVN: here is a web site that introduces the general concepts and give some examples.
Here is where you get SVN for your computer:
Here is how you use SVN for this class:
? assignment2
The '?' means that the folder is recognized but not under revision control yet. You do this by adding the folder (with all it's content) to the repo:
svn add assignment2
A assignment2
A assignment2/test.txt
svn up
Updating '.':
At revision 186.
Introduction
The game industry is a multi-billion dollar industry and is still growing. Years ago, the technology forced games to have simple designs. Programs could often be developed by a small team of pure hackers with the major requirement being a good idea. Back then, formal training and education was not considered that important. Now, it is almost essential.
Games are so complex these days that they require months if not years to be developed, usually by a large team of programmers, designers, artists, testers, and producers to organize and develop them. Games are now as complex as, if not more than, the latest blockbuster movie. It is an interactive entertainment, pure and simple.
The tools and training needed for game development are enormous, and the complexities warrant academic education beyond a single course. In fact, an entire undergraduate curriculum could be designed and justified for game development.
Course objectives Ideally, it would be worth looking at the entire area of game development including story boarding, 3D modeling, sophisticated sound effects etc. -- but -- that would take years! Realistically, we would instead take this class as an opportunity to explore the basics behind game programming and related issues befalling game development and the gaming industry. While the course is expected to incorporate interests and game development skills from the students, one must not carry the unwanted hope of mastering all it takes to develop a commercial quality game in a semester.
However, the course will focus on necessary topics for creating 2D games.
Pre-requisites and Preparation
The only pre-requisite this course is CSC120 and CSC220 with a strong preference for CSC322 (C programming). The course would best fit students who love programming and who also like do a lot of study and net-searching of game related resources.
Instructor’s name
Dr. Ubbo Visser
Office: Ungar Building, Room 330A
Web: http://www.cs.miami.edu/~visser
Phone: 305-284-2254
Email: visser@cs.miami.edu
Office Hours: by appointment
Teaching Assistant
Christopher Duarte
Email: cduarte@cs.miami.edu
TA lab hours: Thursdays 8-10 am, UB 310T, Wednesdays from 10-11am on Zoom for those who have class during regular lab hours.
Contact Hours
Each week there are two 75 minutes sessions (TuTh 11:00 AM - 12:15 PM)
Classroom: MM 318
Recommended Text Book
There are a lot of books available with regard to game programming. However, I haven’t found a good textbook yet that covers what I would like to do in the course. We will start with a new format in this course using an existing game engine rather than building a game engine from scratch. We will use Unity 2D throughout the course. Online material and tutorials are manyfold and I therefore won't recommend a book for this course.
Course Content
Course material contains material from various sources reflecting the following content: Fundamental issues behind developing a game application. Fundamental programming issues in game design: Software design; Version control; Basic graphics; GUI programming; Networking; Artificial intelligence; Scripting languages; Sound. Large-scale game project: Team development of a functional game; Graphics and GUI component; Networking component; Core game engine. BSP trees, Collision detection.
Grading (will be based on a total of 100 points)
Homework: 60%
Final: 40%
Scoring of Homework Assignments
The score of each homework will be mentioned in it. The total score of all homework assignments will be scaled down to 60 points at the end of the semester for the purpose of final grading. For example, if all homework assignments collectively carry 100 points and a student gets 90 out of 100, he/she gets 90*60/100 or 54 out of 60 in Homework Assignment component for final grading.
Final
There will be no final written exam as in many other classes. Instead, you will present your game!
Class attendance and participation
Class attendance is not mandatory, although my exams will depend heavily of my lectures. Not all of the material will come from the text book. Class participation is also important. Active interest in lectures is the easiest way to learn.
Plagiarism
The penalty for copied homework of any kind can be immediate failure in the course. My policy on programs is as follows: There is no reason for two (or more) people handing in identical or nearly identical programs. I will regard such programs as either group-written or simply copied. If I have no hard evidence of copying, such programs will receive NO credit. More serious actions will be taken in cases where there is evidence of cheating.
Late programs
Unless otherwise stated, programs will lose 20% of their value for each weekday (Monday through Friday) that they are late, down to a minimum value of 20%. The due date of a program is the latest date on which it can be run to get full credit.
Dropping the course
Unless there are extreme extenuating circumstances, I will not allow anyone to drop a course after the drop date. Poor academic performance will never be an acceptable reason for a late drop. The drop date for this course can be seen in the academic calendar.
Incompletes
Unless there has been a documentable illness that caused you to miss substantial amounts of class and computer time, I will not give an incomplete grade in this course. Therefore, please do NOT waste my time asking about an incomplete grade unless you have a remarkably good reason.
Make-up exams
I do not give make-up exams. You simply must show up and take them at the specified times.
Presentations
The final game presentations will be held on one or two days at the end of the semester or during the finals.
Evaluation of final project: Many students have asked about components that the game needs to have for the final presentation. You can imagine that this is not easy to answer given the variety of games that can be presented. It wouldn't make sense to add Pathfinding and NavMeshes if your game is a board game for example. So, instead of having mandatory components we will evaluate your final game based on the continuous work that you have done on your game since the last assignment as well as the presentation itself and the components your game has to offer.