Feiyang Zhou
Gallery

Games Clips 2021 11 of 12

Game engine features, from scratch

Frustum culling, physics, animation blending, wind deformation and a particle system, added to a skeleton C++ engine at USC.

Particles from a moving spawnerGlowing square particles streaming from a moving spawner in a night street.
A plane spawner in the sky, for falling petals or rainTwo hundred small particles falling from a plane-shaped spawner above a street.
A parametric function drives each particle's pathParticles moving along a looping parametric path.
Bounding-box frustum cullingWireframe bounding boxes around a grid of soldiers appear and disappear as the camera turns.
Collision detection and gravityA soldier walking between waypoints on a paved plane, colliding with a tank and boxes.
Animation blending: full body, partial body and additiveSeveral animated soldiers on a cobblestone floor blending between animations.
Mesh deformation by three wind sourcesYellow meshes bending and fluttering as soldiers and the camera move around them.

Prime Engine is a skeleton game engine written by Professor Artjoms Kovalovs for CSCI 522 Game Engine Development at USC. In fall 2021 I implemented these features in it from scratch:

  • Frustum culling against axis-aligned bounding boxes.
  • Physics: collision detection and gravity.
  • Animation blending for skinned meshes: full-body, partial-body and additive.
  • Mesh deformation: a vertex shader bends meshes under three wind sources, attached to two soldiers and the active camera.
  • A particle system. Particles are textured quads backed by buffers filled from user parameters; when a particle dies its slot is recycled for a new one. Count, size, per-axis velocity range, spawner volume, texture, lifetime and path are all adjustable.

Game Engine Architecture, NVIDIA’s GPU Gems and GDC talks helped along the way.

Tools

  • C++
  • OpenGL
  • Lua

Do not press

This lets the cat loose on the page for 30 seconds. It will press things and knock the page about. You can stop it any time by grabbing the cat. Everything goes back afterwards.

Stop the cat?

Everything goes back where it was.