September 15th, 2024

CSCI 181G PO: Game Engine Programming

CSCI 181G PO is a Game Engine Programming course covering Rust, game design principles, and genres. It utilizes Canvas and Slack for communication, with assignments due Sundays and resources provided.

Read original articleLink Icon
CSCI 181G PO: Game Engine Programming

CSCI 181G PO is a course focused on Game Engine Programming, utilizing various platforms for communication and assignment submissions. The course includes a syllabus with detailed information, and students are encouraged to use Canvas for assignments and Slack for announcements and discussions. Office hours are held on Monday, Wednesday, and Friday mornings, with flexibility for Zoom sessions. The course schedule outlines deliverables and topics, with assignments typically due on Sundays. Key topics include Rust programming, game design principles, and various game genres such as simulation, rogue-like, and platformer games. Students will engage in project planning and tech talks throughout the semester, culminating in a demo day. Resources for learning Rust and game programming are provided, including links to documentation, debugging advice, and optional reading materials. The course emphasizes early engagement with assignments and communication, particularly regarding work-life balance.

- CSCI 181G PO focuses on Game Engine Programming with a structured syllabus and communication tools.

- Assignments are submitted via GitHub Classroom and Canvas, with deadlines typically on Sundays.

- The course covers various game genres and programming concepts, particularly in Rust.

- Office hours are available for student support, with a focus on work-life balance in communication.

- Resources for learning and debugging are provided, along with optional reading materials for deeper understanding.

Link Icon 4 comments
By @jms55 - 7 months
Wow, looking at the syllabus, I can't imagine learning all of this in a single semester at more than a very surface level (and the course notes definitely don't seem surface level).

Take just rendering (my area of expertise): There's game programming in general, OOP and ECS, input and update loops, setting up a window, common patterns, etc, necessary prerequisite stuff.

Then there's rendering APIs and the GPU, e.g. learning about vertex/fragment shader concepts and syntax, buffers and uploading data, binding resources, making pipelines and such, etc. Then there's how to make an actual rendering _engine_, e.g. abstractions for batching entities, generating draw lists, command buffer recording for various passes, etc. Then there's lighting - analytic direct lights, many many forms of baked or realtime indirect lighting, BRDFs and PBR shaders, the pain that is shadow mapping, etc. Then on top of all that there's actually optimizing everything both from a CPU and GPU (shader) perspective.

And that's _just_ rendering. Game engines are usually way more. Asset management, physics, UI, possibly scripting, possibly networking, animations, usually some sort of scene editor, etc. All of those with many many subfields and complexities.

By @udev4096 - 7 months
There's also this great book for designing a game engine. It is quite thorough: https://www.gameenginebook.com/
By @koolala - 7 months
Rust and Unity are interesting picks. I feel like everyone used to use C++ to teach game engine development.
By @kleiba - 7 months
Alternatively, if you prefer to watch over a 1000 videos featuring a non-standard programming approach and that end up going nowhere, you could go over to youtube and consume the Handmade Hero series...

Sarcasm aside, there's still lots to learn from the series although it does look like Casey's promise of "writing a complete game [...]" might not actually become a reality in the foreseeable future.