CMPS-4490 Game Development, Spring 2024
Gordon Griesel
Office: Sci III 337
Office Hours: see my schedule, or make an appointment
Email: gordon@cs.csub.edu

Course web site: https://www.cs.csub.edu/~gordon/4490/

Course meets:
MWF 9:00am - 9:50am room-240 (lecture 32377)
Tues 7:20am - 9:50am room-240 (lab 32378)
Course Description:
This course introduces the fundamentals of Computer Game Programming.

From the catalog:
The course will cover fundamental concepts behind designing a game engine. The concepts, theories, and programming aspects of physics engine, graphics engine, and control engine will be covered. Each week lecture meets for 150 minutes and lab meets for 150 minutes. Prerequisite: CMPS 2120, or 3480, or 3350.

Lecture Topics and Rough Schedule
The topics below are the general subjects of the course, and will
be introduced and discussed sequentially as the course progresses.
Subjects could be added or removed.

Elements of a game engine
• main game program
   input
      . events
      . keyboard
      . mouse
      . communication
   physics
      . collision detection
      . timing
      . optimization
   rendering
      . computer graphics
      . static scene
      . characters
      . lighting
      . special effects
      . 2D and 3D
• audio
   . OpenAL
   . Listener
• communication
   . multi-player
   . POSIX sockets
• artificial intelligence
   . path finding
   . enemies
• scoring
   . web interface
• configuration
• help
Distribution
• vendor service

Textbooks:
Our textbook material will come from the school's Safari website.
These books are provided free by the CSUB Library.
Sections of the following books will be used:

Game Development Patterns and Best Practices
   By: John P. Doran; Matt Casanova
   Publisher: Packt Publishing
   Pub. Date: April 27, 2017
   Print ISBN-13: 978-1-78712-783-8
   Web ISBN-13: 978-1-78712-696-1
   Pages in Print Edition: 394

Game Physics Cookbook
   By: Gabor Szauer
   Publisher: Packt Publishing
   Pub. Date: March 24, 2017
   Print ISBN-13: 978-1-78712-366-3
   Web ISBN-13: 978-1-78712-081-5
   Pages in Print Edition: 480

Supplemental Materials:
OpenGL Programming Guide:
The Official Guide to Learning OpenGL, Version 4.3.
8th Edition
Available free online at: http://www.glprogramming.com/red/

Grading Policy:
General assignments   50%
  . labs
  . homework
  . quizzes
Exams                 20%
Project               30%
-------------------------
Total                100%

Grading scale used during the semester...
    A   93%
    A-  90%
    B+  87%
    B   83%
    B-  80%
    C+  77%
    C   73%
    C-  70%
    D+  67%
    D   63%
    D-  60%
    F   50%

Other course details...

Classroom sessions
Class sessions will be in Science-III room 240.


Attendance
Class attendance is required.
Please be in your seat and ready when the period begins.

Attendance marks:
   Late arrival to class - 1 mark
   Unexcused absence     - 1 mark

Each attendance mark is a small deduction from your overall grade.
Deduction amount begins at 0.5%
Deduction increases slightly with each occurance.

For example:   1 late arrival  =  0.5% deduction
              10 late arrivals =  5.9% deduction
              20 late arrivals = 13.8% deduction

Repeated disruptions of class due to late arrivals can cause added penalties.


Labs
Lab attendance is required.
Labs are hands-on assignments to be done during the class period.
Lab rules:
   1. Must not be late to lab.
   2. Must work the entire lab period, unless excused by instructor.
      If you finish a lab, ask if it's ok to leave.
   3. Your program must compile and run at the end of a lab period.
      A program that does not compile could receive a score of zero.

Lab assignments are designed to run on the classroom computers.
Use of a personal laptop requires the following...
   1. Installation of any utilities needed.
   2. Ability to enlarge your screen text for better viewing.

More lab rules:
   1. If you arrive late to lab, do not copy from another student.
   2. If you need help, be ready to enlarge your screen text
      for viewing by your instructor.

Lab programs are collected at the end of lab period.
A lab score will be given based on your work.

Lab programs will often turn into homework.


General requirements of programming assignments
Your programs will be files stored on the Odin server inside your
4490/ directory, and in the proper subdirectory.

Your 4490/ directory must be created using a script provided. The 4490/
directory is created so that your work is visible only to you and your
instructor. Do not change the permission of the directory after running
the provided script.

   Other general requirements:
     . Your name on the top line of a program or text file
     . Correct file name
     . Correct file location

   Programming assignments:
     . No compile warnings or errors
     . Program must run
     . Program output must be neat, clean, and complete.
     . C/C++ program code must follow the K&R coding style.
     . C/C++ program code must have consistent and correct indenting.

   Text file written assignments:
     . Neatly written text
     . Correct spelling and grammar

   Each assignment will also have some specific requirements in addition to
   those listed above.


Final Exam
This is a project-based course.
A final exam could be given.
A date and time for the final exam will be posted.


Late Assignment Policy
Late assignments will not be accepted and can result in a score of zero.


Individual Work Policy
Most work done in this course, such as labs, is individual work.
Write your own source code.
You may get help and ideas from other students in the class, but then
use that help to write your own code.

Use of the Internet to learn about how to program game components is ok.
You should not use AI tools to write your code.

Some work in this course will be group work, such as a semester game project.
We will form small groups for projects after a few weeks.


Classroom Behavior
 - CSUB is a smoke-free and tobacco-free campus!
   Please do not smoke, vape, chew, or spit in the classroom.
 - Please do not wear headphones or earbuds in the classroom.
   Refer to the accommodations section if needed.
   Your instructor reserves the right to ask you to remove your headphones
   inside the classroom.
 - Please do not use your cellphone during class time.
   Repeated use of social media is not allowed.
 - If you arrive late, please do not walk past the instructor while a lecture
   is in progress.
 - Use of an electronic recording device is not allowed.
   For example: If you want to take a picture of lecture materials on
                the big-screen, ask for permission first please.


Academic Integrity Policy
All work done in this course is individual work.
Please do not share your work with other students.
You may discuss assignments with other students, but sharing of source code
is not allowed. Refer to the Academic Integrity policy printed in the
campus catalog and class schedule. Violations are enforced in accordance with
the Department's policy on academic honesty.


Absence from class
A student's responsibilities include attending classes.
If you miss a class, it is your responsibility to inform your instructor of
the reason for the missed class (documentation may be required) and to arrange
to make up any missed assignments, exams, quizzes, and class work,
to the extent that this is possible. Some assignments cannot be made up.

Excusable absences include, but are not limited to:
Illness, injury, death of an immediate family member, etc.
See a complete list at CSUB Catalog. Search for "University Absence Policy".

If you receive a summons for Jury Duty, immediately call the number on the
summons to reschedule your service to a time when you are not in school,
such as holiday break or summer.

Telling your instructor in advance of an absence gives you the
best chance of being excused.


No Recordings Allowed:
Under California Education Code Section 51512, it is illegal for any person,
including a student, to use an electronic device to record what is happening
in the classroom without the consent of the instructor.
The instructor for this course DOES NOT give consent for recording of any kind.
If a disability requires you to record a class session, then please
contact SSD so accommodations can be made.


Your instructor reserves the right to amend this syllabus during the semester.