02 / ENGINE · C++ / OPENGL

Postgraduate Projects研究生项目

Newcastle University · Three real-time graphics & game projects 纽卡斯尔大学 · 三个实时图形与游戏项目
WhereNewcastle University
StackC++ · OpenGL · GLSL
Scope2 solo · 1 team
PlatformPC · PS5

Three projects built during my MSc Computer Game Engineering — two solo, one team. Each targets a different layer of a real-time engine: rendering, physics & AI, and a cross-platform graphics pipeline.

计算机游戏工程硕士期间的三个项目 —— 两个独立、一个团队。分别对应实时引擎的不同层面: 渲染、物理与 AI、跨平台图形管线。

01SOLO · RENDERING

Natural Scene Rendering自然场景渲染

CSC8502 · Repo → C++ · OpenGL · GLSL

A personal project rendering a visually immersive natural scene in C++ and OpenGL — a highly detailed skybox, procedural terrain, scattered meshes, and dynamic water.

用 C++ 与 OpenGL 渲染沉浸式自然场景的个人项目 —— 高细节天空盒、程序化地形、 散布网格与动态水体。

Natural scene rendering overview

Terrain地形

The terrain is procedurally generated, offering a dynamic and diverse landscape that changes based on parameters such as height, texture, and topography.

地形由程序化生成,依据高度、纹理与地貌等参数变化,呈现动态而多样的地貌。

Procedural terrain

Water水体

Water in the scene is rendered using Phong shading, which helps simulate realistic lighting.

场景中的水体使用 Phong 着色渲染,帮助模拟真实的光照。

Phong-shaded water

Scattering散布

Complementing the landscape, scattered meshes like grass and trees are distributed across the terrain, enhancing the realism of the environment.

作为地貌的补充,草与树等散布网格分布在地形上,增强环境的真实感。

Mesh scattering

Skybox天空盒

The skybox is a crucial element of the natural environment, featuring a dynamic and ever-changing sky.

天空盒是自然环境的关键一环,呈现动态、时刻变化的天空。

Clouds move and shift across the sky, using a Voronoi noise-based system for procedural generation, combined with an overlay blend mode for seamless transitions between shadow and glowing parts.

云层在天空中飘动变化,采用基于 Voronoi 噪声的系统程序化生成,配合叠加混合模式, 在阴影与高光之间无缝过渡。

A simple, yet effective sun simulation with a lens flare effect, enhancing the lighting and adding realism to the scene.

简洁而有效的太阳模拟,配合镜头光晕,增强光照并为场景增添真实感。

Procedural skybox

Zenith Color天顶渐变

A gradient of color at the zenith, transitioning from bright blue to more subtle hues, mimicking the natural color changes of the sky.

天顶处的颜色渐变,由亮蓝过渡到更柔和的色调,模拟天空自然的色彩变化。

Zenith color gradient

Stars星空

A starry background simulating a night sky that remains consistent across various scenes.

模拟夜空的星空背景,在不同场景间保持一致。

Star field
02SOLO · PHYSICS & AI

Feline QuestFeline Quest

CSC8503 · Repo → C++ · Physics Engine

A 3D adventure game built on a C++ physics engine, where you control a cat searching for lost kittens — collecting kitties and coins, dodging enemies, and racing the clock.

基于 C++ 物理引擎的 3D 冒险游戏:操控一只寻找走失小猫的猫 —— 收集小猫与金币、 躲避敌人,并与时间赛跑。

Collision Detection and Resolution碰撞检测与响应

Efficient handling of AABB, OBB, capsule, and sphere collisions, allowing for precise and realistic interactions between the cat and objects in the world.

高效处理 AABB、OBB、胶囊与球体碰撞,实现猫与场景物件间精确、真实的交互。

Collision detection code

Third-person Camera第三人称相机

A third-person camera follows the cat, rotating around it based on the mouse's position on the screen. The player can control the camera's angle and zoom, keeping the cat in view while exploring — a smooth, immersive experience with full control over the viewpoint.

第三人称相机跟随猫,并根据鼠标在屏幕上的位置环绕旋转。玩家可控制相机角度与缩放, 在探索时始终让猫处于视野内 —— 视角完全可控,流畅而沉浸。

Third-person camera

State Machine Character状态机角色

The kitties collected by the hero cat follow it automatically, rotating to face the cat and moving smoothly toward it. Their movement lets them navigate the terrain as they chase; if the cat is at a higher elevation, the kitties jump to reach the same height — adaptive AI.

被主角猫收集的小猫会自动跟随,转向面朝猫并平滑靠近。它们能在追随中穿越地形; 当猫处于更高处时,小猫会跳跃到相同高度 —— 具备自适应 AI。

State machine following kitties

Constraints约束

Each cube in this bridge is treated as a rigid body in the physics engine, responding to forces, collisions, and constraints, reacting to the player's movement and external forces — adding challenge and realism to traversal.

桥上每个方块在物理引擎中都被当作刚体,响应力、碰撞与约束,并对玩家移动与外力作出反应 —— 为通行增添挑战与真实感。

Rigid-body constrained bridge

AI EnemiesAI 敌人

Intelligent enemies equipped with navigation and ray detection, actively pursuing the cat.

配备导航与射线检测的智能敌人,主动追击玩家。

AI enemies

Collectibles & Timed Challenges收集物与限时挑战

The cat must collect kitties and coins while avoiding enemies, racing against the clock for a fun and exciting gameplay experience.

猫需在躲避敌人的同时收集小猫与金币,与时间赛跑,带来有趣而刺激的游玩体验。

Collectibles and timed challenge
03TEAM · GRAPHICS

Crazy DashCrazy Dash

CSC8507 · Repo → C++ · OpenGL · PS5

A cross-platform, multiplayer party royale game in C++ and OpenGL, running on PC and PS5, with single-player and multiplayer modes across colorful, vast levels.

用 C++ 与 OpenGL 开发的跨平台多人派对吃鸡游戏,运行于 PC 与 PS5,支持单人与多人模式, 关卡色彩缤纷、规模宏大。

Crazy Dash gameplay
My part我负责的部分

Graphics enhancement — GLSL shaders and the render pipeline.

图形增强 —— GLSL 着色器与渲染管线。

Stylized Skybox System风格化天空盒

A cartoon-style skybox with procedural clouds and sun — a sun halo (bloom) and volumetric sun shafts (god rays).

卡通风格天空盒,含程序化云层与太阳 —— 太阳光晕(bloom)与体积光束(god rays)。

Stylized cartoon skybox with sun halo
Cartoon skybox — sun halo & volumetric god rays卡通天空盒 —— 太阳光晕与体积光束

Post-Processing Effects (PC)后处理效果(PC)

Post-processing effects in Crazy Dash
Post-processing stack running on the PC buildPC 版本上运行的后处理链

Shading Features着色特性

Shading features — reflective spheres
Shading features — normal mapping & cubemap reflections着色特性 —— 法线贴图与立方体贴图反射

Triplanar Mapping三平面贴图

Triplanar texture mapping for seamless blending of terrain textures.

三平面纹理贴图,实现地形纹理的无缝混合。

Triplanar texture mapping
Triplanar mapping — seamless texture blending三平面贴图 —— 纹理无缝混合

Pipeline管线

Data-driven scenes数据驱动场景 Used Unity as a scene-authoring tool, exported scene data as JSON, and parsed it into the C++ runtime for real-time use — working around the native engine's limited scene editing.用 Unity 作为场景编辑工具,将场景数据导出为 JSON,再解析进 C++ 运行时实时使用 —— 以此绕开原生引擎场景编辑能力的不足。
PS5 shader portPS5 着色器移植 Manually converted GLSL shaders to PSSL for the PS5 build.为 PS5 版本手动将 GLSL 着色器转换为 PSSL。
Unity scene-authoring tool
Unity as scene editor → JSON → C++ runtimeUnity 作场景编辑器 → JSON → C++ 运行时