everything.study
COMP 4002

Real-Time 3D Game Engines

0.5 credit · Undergraduate

The design and implementation of game engines for real-time 3D games including topics such as camera control, environmental effects, articulated models, terrain, vegetation, collision detection, particles, emitters, triggers, portals, waypoints, mirrors, and shadows.

Study notes

Independent, AI-drafted study guide · Public sources linked below · Added November 5, 2026

Original guide aligned to fixed topics in Carleton's public 2026–27 undergraduate calendar. No particular term, instructor, or assessment coverage is claimed; examples and exercises are independently written.

Engine responsibilities and frame budgets

A game engine coordinates simulation, input, rendering, assets, audio, and scene lifetime. A frame budget turns an intended presentation rate into a concrete resource limit: 60 frames per second allows about 16.67 ms per frame. CPU and GPU work can overlap, so summing separately measured times without understanding synchronization can mislead. Profile a representative scene and identify the bottleneck. A faster subsystem does not improve the frame rate when another subsystem remains on the critical path.

References: Godot official physics introduction — collision objects and simulation updates

Simulation time and interpolation

A fixed simulation step makes numerical behavior easier to reason about than using arbitrary render intervals. Accumulate elapsed time and run enough fixed updates to catch up, with a defined policy when the machine falls behind. Rendering can interpolate between simulation states to smooth presentation. Fixed stepping alone does not prove determinism: floating-point behavior, iteration order, external inputs, and physics implementation still matter. Avoid tying movement directly to frame count, because faster rendering would then change gameplay speed.

References: Godot official physics introduction — collision objects and simulation updates

Scene organization and articulated models

A scene graph expresses parent-child transforms; an articulated character combines joint transforms with mesh deformation. Keep object identity and lifetime separate from a transient pointer or array position. Spatial organization supports visibility and collision queries, but the best partition depends on motion and density. Terrain and vegetation often need different levels of detail as distance changes. A portal can represent visibility or passage between spaces, while a trigger is an event region rather than necessarily a solid collision surface.

References: Godot official physics introduction — collision objects and simulation updates

Broad phase, narrow phase, and response

The broad phase cheaply identifies potential collision pairs using bounds or spatial partitions. The narrow phase performs more exact shape tests. Collision response then changes motion or reports events according to gameplay and physics rules. Detection and response are separate problems. Fast-moving objects can pass through thin geometry between discrete samples, motivating swept tests or continuous collision methods. A simplified collision shape may be more stable and efficient than using every triangle of a visually detailed mesh.

References: Godot official physics introduction — collision objects and simulation updates

Worked fixed-step timing example

Assume a simulation step of 10 ms and a render interval of 25 ms. Starting with an empty accumulator, the engine performs two simulation steps and retains 5 ms. Interpolating the previous and current simulation states uses alpha=5/10=0.5 under the usual one-step-behind rendering scheme. On the next 15 ms interval, the accumulator reaches 20 ms and again permits two steps. Define a catch-up limit to prevent unlimited simulation work from starving rendering after a long pause.

References: Godot official physics introduction — collision objects and simulation updates

Effects, resource management, and testing

Particle emitters create many short-lived objects with properties such as position, velocity, and lifetime. Pooling can reduce allocation churn, but reused objects need a complete reset to avoid stale state. Shadows, mirrors, and environmental effects have distinct visibility and render-pass costs. Keep gameplay behavior testable outside a fully rendered scene when possible. Build deterministic toy scenarios for transforms and collision rules, then add visual inspection and profiling for artifacts that numerical tests alone cannot explain.

References: Godot official physics introduction — collision objects and simulation updates

Practice & worked answers

Original exercises for this guide.

1. Why can a detailed mesh be a poor collision representation for a moving character?

Show worked answer

It may make collision tests expensive and response unstable around tiny surface features. A capsule or another simpler shape can represent the needed gameplay boundary while the render mesh supplies visual detail.

2. Does using a fixed physics step guarantee identical multiplayer simulations on every platform?

Show worked answer

No. Determinism also depends on arithmetic, ordering, library behavior, inputs, and state synchronization. A networking design must account for the actual guarantees of its simulation rather than infer them from fixed stepping alone.

Public notes & references

Course sources establish the scope above. Reference materials support the explanations; linked lecture notes and books remain with their authors.

Topics

Course catalogue

Prerequisites & course information

Prerequisite(s): COMP 2404 or SYSC 3010 or SYSC 3110 . Lectures three hours a week.

Sources