Course Introduction: Syllabus Calendar Website What we cover: Game Engines What we don't: Gameplay, art, music, level design, marketing, storywriting, scores, etc Basically, everything that makes games actually fun Topics we'll see a lot of: C++ OO design and STL especially. I ended up with a reinterpret_cast last time... Why C++? You all know it, Python is too high-level for game engines Why not C? I want objects and STL 3D Math and Geometry OpenGL and video card control I think we'll use OpenGL 4+. Used OpenGL 1.x once, and wouldn't again I use Vulkan for research code, but I think we don't want to go that route We will not use the game engine from last time I taught this We will write a better one! In fact, I'll try not to look at it all semester, and haven't all Summer This'll be the third time It'll be overly simplistic Example: STL data structures I'm tempted to add slab allocation at least What kind of computer? The 1070's in this room will be more than adequate Requirements will be higher than expected given level of detail, etc Most optimizations make the engine more complicated Should we have "project 4: double class engine performance" ? I'm going to build and test on Linux, probably also FreeBSD I'll try to test it on AMD sometimes People before have built this on Windows with Visual Studio Just a matter of getting your libraries right Would anybody like to maintain a visual studio build? Review from CS211 or 311: Objects and methods Operator Overloading If this isn't a review anymore, tell me and I'll be more thorough Let's make weird_int STL Vector Example: It does stuff Python lists do Have to instantiate as a template class You can have a pointer to the underlying memory It is NOT a linked list! A simple measure that not everybody approves of: We will avoid use of private and const Both of these protect us from ourselves Weird bugs are a good learning experience, and we'll code faster I'm not against these constructs, but we need to simplify Lab 1: Some C++ practice Might be really easy