Skip to content

Latest commit

 

History

History
233 lines (163 loc) · 4.27 KB

File metadata and controls

233 lines (163 loc) · 4.27 KB

Games Programming Introduction

space invaders

What is this module about?

Chuckie Egg on BBC Micro
  • grounding in the development of games

    • from the software (programming) perspective

    • working with other devices/interfaces

Teaching Style

  • Practice-led

    • lectures will introduce concepts, techniques, things to think about

    • effective learning will require lots of programming engagement

  • Ask questions, query norms

  • Discuss with each other

    • Constructive Critique

  • Critique my code too

Scope

  • we’ll work on 2D games exclusively

    • but this content also applies to 3D

    • 3D requires ideas/tools not covered yet

  • building COMPLETE games

  • not AAA titles!!

forzaHorizons3

Disassembling a Game

Chuckie Egg

Assignments

  • Single, 100% assignment

  • Build a complete game that demonstrates both:

    • Games Programming capabilities (i.e. high quality code)

    • Specific Games Programming techniques we’ve covered in class

  • Space for personal expression and portfolio

Workshops

  • Sequences of exercises/tutorials

    • Developing the skills you’ll integrate together the your assignment

  • You can (should) start the assignment soon

Module Overview

  • Embedded through out

    • C++, libraries, engines and other languages

    • Modern C++

    • Efficiency

    • Good Programming Practice

    • Software Engineering Best Practices, e.g.

      • Versioning

      • Reading Documentation

C and C++

  • Why are we looking using C++ for building games

  • Relationship of C and C++

cpp

External Libraries

  • why we need them

  • what they can provide - selecting/locating

  • "installing"

  • using from C++

Ogg vorbis libs and application dia.svg

Build Systems

  • why to use

  • a quick list

  • what we’ll use

cmake
conan small

Cross-platform

  • libraries

    • those we’re using

    • alternatives to look at (but NOT use))

    • doing by hand (platform-specific)

  • concerns

Windows (not MS Windows …​)

  • creating

  • (re)sizing

  • moving

  • fullscreen

Logging

  • why

    • vs printf or cout

    • why start with logging

  • how

Getting anything on-screen

  • issues (flicker, tearing, judder)

  • techniques

  • swap intervals / vsync

Tearing (simulated)

Time and Time Budgets

  • issues related to time

    • fps, deadlines

    • latency, jitter

  • measuring time

  • "hard real-time"

game loop timeline

Representing the World

  • "Models"

  • Game State

  • Scene Graphs

base 3d model  creature by tlund
Figure 1. not just this kind of model

Simulation

  • Movement and basic physics

  • Fix your timestep

simulationCar

Collisions

  • Collision detection

  • Collision response

  • Efficiency

  • Spatial Partitioning

Billiards balls

Handling input

  • keyboard

  • mouse

  • gamepad

  • joystick

Xbox 360 S Controller

Sprites

  • loading

  • displaying

  • moving

  • animating

p1 front

On-screen Text

  • fonts

  • menus

Sound/Audio

  • loading

  • playing

  • concerns

  • sound effects

  • streaming

  • DSP and spatialisation (3D)

Stretch content

  • multi-threading / parallism

  • Determinism (briefly)

  • Interpolation

  • Networking and multiplayer games

  • File formats, serialisation, and compression

Discussion - Game Design

  • What did you design in Game Design last year?

    • how complex was this?

Assembling a toolset

  • C++ (required)

  • SDL2 (required)

  • Conan.io (required)

  • git (recommended)

  • Game engine architecture - Jason Gregory 2014 (physical copies in the library)

  • Game programming patterns - Robert Nystrom c2014

  • SDL game development - Shaun Mitchell 2013 (ebook through library)

Check reading list on Blackboard for complete list

Blogs etc