Game Engines 2021W Lecture 1

From Soma-notes

Notes

Lecture 1
---------

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