Menu

Last update: 05/02/2024, 10:50 am, updated presentation schedule

CSC 329 Introduction into Game Programming

Slides:

Assignments:

Recordings:

20240201, 20240206, 20240213, 20240215, 20240220, 20240222, 20240229, 20240305, 20240307

20240319, 20240326, 20240328, 20240402, 20240409, 20240411


Schedule the final game presentation

Please use this link to choose a time slot: https://calendly.com/csc329/30min.

Final Game Presentation 4/23, 4/25, and 5/2

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

How do I test my game before I commit to the repo?

Here is how you test for game in a browser:

  1. Go to the folder that holds the "index.html" file created by the Build process from Unity. Lets assume that would be in ./assignment4/bin/MyProject:

  2. cd assignment4/bin/MyProject
     
  3. Run a http server, e.g. the python http server:

    python3 -m http.server 8000

    This starts a web server on port 8000.

  4.  Access the game from your browser:

    http://localhost:8000

# 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

How do I submit assignments?

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:

  1. Unix systems and MacOS: SVN should be already installed on your system. If not: use a package manager (e.g. apt-get on Linux or brew on MacOS) to install subversion.
  2. Windows: I recommend using Tortoise-SVN for Windows distributions.

 

Here is how you use SVN for this class:

  1. SVN checkout: this is only necessary *once*, at the beginning. Linux/MacOS: Open a terminal and 'cd' into your class folder on your local machine. Then type

    svn co --username=[USERNAME]  svn://svn.cs.miami.edu/classes/csc329.242/[USERNAME]

  2. Change into your directory with

    cd [USERNAME]

  3. You can now add folders and files to your working copy of the repository. Example: add a new folder for each assignment such as

    mkdir assignment2

  4. The create files necessary for that assignment in that folder. Once the assignment is completed you need to add the new material to your repository. You can check by typing svn status and then select which files and folders to add. Say you added one file  to the folder assignment1 (let's call it test.txt). svn status then delivers this:

    ? assignment2

  5. 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

  6. The last step is to upload the content to the central repository:

    svn ci -m "SOME MEANINGFUL MESSAGE" assignment2

  7. The system then confirms with

    A assignment2
    A assignment2/test.txt


  8. To update from the repository use

    svn up

    U
    pdating '.':
    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.