Notes
Course Outline
What is a game engine? Why?
- platform/environment for creating and running games
- collection of tools
- normally has a physics engine
- has some way to "render" graphics, manage sound, music
game engines are designed to help the creation of games
- what they are depends on the kind of games they are intended to support
- 2D vs 3D
- graphics vs text
- Inform
before game engines, you just had raw dev environments
- just write the program!
- make your own rendering engine, physics, text parsing, sound, etc
game engines came about because programmers/game developers got lazy
- why reinvent the wheel?
- started proprietary, but then became open
- can also help with portability
Two big milestones in game engine development
- Z machine <--- ancestor of Inform, Z is from Zork!
- Doom game engine release
- code GPL, assets proprietary
- led to lots of "game mods" (entirely new games often), engine enhancements
Two popular game engines nowadays
- Unity
- Unreal
Maintaining a modern game engine is a lot of work
- portability is a pain
- expectations keep going up
- better rendering, physics, sound
- hard for proprietary engines to keep up
Game engines look like operating systems to me
- ok, they are "middleware"
- but they do the abstraction and resource management of an OS
- kinda have device drivers, esp with modern graphics APIs
- Metal, Vulkan, D3D 12?
What is the cost of using someone else's engine?
- constrained by what they give you
- abstractions may not match your game or your approach!
- you have to learn them
- again, may not match your mental model
- money!
This course is about understanding the design and implmentation of game engines
- need to pick an example
- understand what they facilitate, and what they restrict
Why godot?
- not as advanced as Unity or Unreal
- but it is growing
- it is open source
- so you have control, can make contributions
- and it is small yet feature filled
- game engines are becoming more and more important
- used for much more than games
- will be demand for open source engines, and Godot might be it
- kind of like Linux
Godot's editor is implemented in Godot