CIS 580: Foundations of Game Programming

CIS 580 Textbook

Nathan Bean

Kansas State University

© 2021

This is an open textbook written for the Kansas State University CIS 580 - Foundations of Game Programming course.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

6.0.0

Last modified by: Russell Feldhausen Aug 11, 2023

CIS 580: Game Programming

  • 0. Course Information
    • 1. Course Introduction
    • 2. Course Structure
    • 3. Workshop Etiquette
    • 4. Where to Find Help
    • 5. What you Will Learn
    • 6. Course Textbooks
    • 7. Course Software
    • 8. Assets
    • 9. Syllabus
  • 1. Introduction to MonoGame
    • 1. Introduction
    • 2. The Game Class
    • 3. The Game Window
    • 4. Game Initialization
    • 5. The Update Method
    • 6. The Draw Method
    • 7. Summary
  • 2. Player Input
    • 1. Introduction
    • 2. Input Polling
    • 3. Keyboard Input
    • 4. Mouse Input
    • 5. Gamepad Input
    • 6. Input Manager
    • 7. Input State
    • 8. Summary
  • 3. Sprites
    • 1. Introduction
    • 2. Drawing Sprites
    • 3. Texture Atlases
    • 4. Animated Sprites
    • 4. Sprite Text
    • 6. Sorting Sprites
    • 7. Summary
  • 4. Collisions
    • 1. Introduction
    • 2. Collision Shapes
    • 3. Collision Helper
    • 4. Separating Axis Theorem
    • 5. Per-Pixel Collision Detection
    • 6. Multiphase Collision Detection
    • 7. Summary
  • 5. Audio
    • 1. Introduction
    • 2. Sound Effects
    • 3. Positional Sounds
    • 4. Music
  • 6. Physics
    • 1. Introduction
    • 2. Linear Dynamics
    • 3. Angular Dynamics
    • 4. Elastic Collisions
    • 6. Physics Engines
  • 7. Game Architecture
    • 1. Introduction
    • 2. Game Services
    • 3. Game Components
    • 4. Game Screens
    • 5. Summary
  • 8. SpriteBatch Transforms
    • 1. Introduction
    • 2. Transforms
    • 3. Screen Scrolling
    • 4. Parallax Scrolling
    • 5. Scaling to the Screen
    • 5. Special Effects
    • 7. Summary
  • 9. Particle Systems
    • 1. Introduction
    • 2. The Particle
    • 3. The Particle System Class
    • 4. Example Particle Systems
    • 5. Using Particle Systems
    • 6. Refactoring as a Game Component
  • 10. Tile Maps
    • 1. Introduction
    • 2. Tilemap Concepts
    • 3. 2D and 1D Arrays
    • 4. A Basic Tile Engine
    • 5. Tiled Editor
    • 6. Summary
  • 11. Content Pipeline
    • 1. Introduction
    • 2. The Content Pipeline
    • 3. Extending the Pipeline
    • 4. Custom Importer
    • 5. Custom Processor
    • 6. Using in a Game
    • 7. The Context Object
    • 8. Summary
  • 13. Basic 3D Rendering
    • 1. Introduction
    • 2. It Starts with Triangles
    • 3. Rendering a Textured Quad
    • 4. Rendering a Cube
    • 5. Summary
  • 14. Lighting and Cameras
    • 1. Introduction
    • 2. Adding a Crate
    • 3. Adding Lights
    • 4. Adding a Camera
    • 5. More Crates!
    • 6. FPS Camera
    • 7. Summary
  • 15. Heightmap Terrain
    • 1. Introduction
    • 2. Heightmaps
    • 3. Terrain Class
    • 4. Using the Terrain
    • 5. Interpolating Heights
    • 6. Summary
  • 16. Models
    • 1. Introduction
    • 2. Model Basics
    • 3. Tank Class
    • 4. Skeletal Animation
    • 5. Chase Camera
    • 6. Summary
  • A. Simple Games
    • 1. Introduction
    • 2. Snake
    • 3. Flappy Bird
    • 4. One-Tap Quest
  • B. Game Math
    • 1. Introduction
    • 2. Coordinate Systems
    • 3. Trigonometry
    • 4. Vectors

  •  
  •  
  •  

Built using Hugo and Hugo Relearn Theme.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.