We had great craic at Dublin Gamecraft on Saturday 16th February 2024 creating games, music and art, and eating pizzas. Me and my long-time collaborator and great friend Darren Fitzpatrick created a pass-through MR game where you use a slingshot to pop alien-shaped balloons created by a weird, golden musical instrument powered by a hand crank. We used FOSS: Godot, Blender, Audacity and XR Toolkit and got most of the mechanics working within the time and everyone got to try it out! Looking forward to polishing our game and releasing it in the coming days! Godot is honestly a fantastic tool for XR prototyping. Huge thanks to TU Dublin Computer Science for sponsoring lunch and the pizzas and TU Dublin Chaplaincy for providing a beautiful and historic setting to inspire us!
Games Engines 1 and Games Engines 2 are modules on the Computer Science and Game Design degree programs in TU Dublin. They have been running for 20 years. They were the first games courses taught in the University and led to the development of the BA Game Design and other programs. The aim is to develop transferrable skills: coding, maths, algorithm design, git, software development, computer science and of course creativity, by studying and programming, the systems of a games engine, and of games. There is a cool structure where we begin the course by placing a sprite on the screen and conclude with a simulation of 25K automous agents with many complex behaviors interacting in a simulation of emergent life.
Technologies
I used different technologies to teach the modules:
I now use open source tools, Godot, VS Code, git, Blender, Audacity and students use open source in their assignments, which can be team or individual. I also use commercial games engines such as Unreal and Unity. Students can code in GDScript, C# or C++ or whatever langauge their open source game engine supports. For team projects, each student gets an individual mark based on git commits, presentation and a reflective practice and declaration in the project README file. The assignments emphasise creativity, development skills, mastry of the game engine and teamwork.
Games Engines 1
Game Engine Programming – Semester 1 Essential game maths – Trignometry, vectors, matrices, quaternions, physics Elements of a game engine – scenes and nodes, 2D, 3D, shaders, UI development, signals, physics, CSG, particle systems, audio, scripting Game programming – GDScript in depth, C# and C++ examples Games Systems – movement, spawning, collisions, shooting, particle effects, player input, cameras, FPS and flying camers, picking Procedural generation – Procedural meshes, infinte terrain, shader programing Audio – Buses, Effects, Filters, Audio analysis, FFTs XR development – Movement, interacting, motion capture, mixamo, animation state machines, holograms Genertive AI in Game dev – Coding, ideation, asset creation, LLMS and chatbots
The assignments are always crazy ideas like creating holograms (last year) or vintage sci fi (previous). This years assignment will probably be creating an embodied hologram with a personality, powered by an LLM. I will teach you how to do this. We have incredible technology for creating these using Godot, Meta Quest and github for LLMS:
There are Quest 3’s and Quest 2’s in the University for student projects. We have adapted some of them for pass through mixed reality holograms and plan to acquire more.
This is a playlist of last years Games Engines 1 assignments:
Games Engines 2
Game AI – Semester 2 Artificial life & emergence (most of the course is about this) seek, arrive, pursue, offset_pursue (i.e. formations), path following, evade, obstacle_avoidance, player control seperation, alignment avoidace, constrain, cell space partitioning, multi threading, job systems, ECS, programming high performance simulations State machines from this classic computer science text Behavior trees Graphs & graphs traversal A+, priority queues, stacks Pathfinding in a game engine
The assignment can be done in a team or as an individual and is usually themed around artificial life. This is the assignment from 2024 and this from 2023. Here is a youtube playlist of the last two years assignments:
I made this project myself over 5 or 6 years with what I learned developing the courses:
And I am porting it to Godot. This is my progress:
There is a written exam each semester in addition to the assignment and in semester 2 there is an in-class, in-person programming test in addition to the assignment and written exam. You will need to know basic Godot workflows and git for the test.
In CQ240 in Central Quad, Grangegorman Campus. This is a super cool room with lots of computers and space for XR development:
We use studio classroom (aka flipped classroom) model. We have a 4 hour block each week for teaching, working on stuff, assignments and projects and I am available to support you. I will sometimes split the class into groups and we will work on prototypes and systems. We collaborate using github and have a class discord.
I record all my classes and post them on github if you miss one. You can find them all on my github. If you log in with TU Dublin email address, you can watch the recordings.
Important Information For Computer Science Students!
You can use these modules to learn sills that you can use on a a final year project that uses the technology. Examples:
I recently read a fascinating thesis about nematodes. Nematodes are the most abundant multicellular organisms on the planet and there are around 40 quintillion of them. Inspired by the humble nematode, I wrote two programming lab tests.
This one is for fourth year Games Engines students and it uses C# and Unity to create a simulation of a school of nematodes swimming and wriggling and avoiding each other:
A simple voxel terrain generator using entities. One entity per voxel. The scene has 10K entities. Definitely not the best way to do this but it looks nice!
Watch two autonomous agents fight each other to the death over and over again.
Each agent has seek, pursue and path following boid behaviours. The agents also have health and ammunition and a finite state machine. Source code in the more_states branch of this repo: