Professional Projects

Magnopus Projects

Tool: C++, C#, Verse, ShaderLab, HLSL/GLSL, Blueprint
Engine: Unity Engine, Unreal 4/5, UEFN, Proprietary Engine
Tech: Unity DOTS/Job System/SRP, Unreal 5 Task System, DXR, GPGPU, Compute Shader
Platforms: PC, PCVR, Mobile Android/IOS, Mobile VR, PS4, PSVR, Oculus Rift/Go/Quest1-3
Roles: Rendering Engineer, Gameplay Engineer, Tool Engineer

Foresight Sports Golf Simulator

Tool: C++ Proprietary Engine
Role: Engineer

Personal Projects

Night Engine

Opensource 3D Component-based Game Engine

Tool: C/C++, GLSL, Lua
Team Size: 1
Role: Graphics Programmer
Time: (July 2018 – Sep 2018)

Overview: A personal project, where I focused on creating a custom 3D game engine using C/C++, opengl, bullet, imgui (editor).

  • Core system: reflection system, serialization, factory, component-based architecture, message system, archetype system, unit test, file system, resource manager.

  • Graphic: PBR, IBL, HDR, Deferred rendering, shadow map, mesh loading, dir/spot/point light, normal map, postprocessing.

  • Physics Engine: Bullet SDK integration, Colliders, Rigidbody, Collision detection API.

Night Raid

3D Local Multiplayer Action RPG Game

Tool: Unity Engine (C#)
Team Size: 1
Role: Gameplay Programmer, Game Designer
Time: (Jan 2018 – Apr 2018)

Overview: A solo game project, where I worked on a small ARPG game from start to end in Unity Engine.

  • Implemented Combat system, Data-driven Character System, Inventory system, AI behaviors.

  • Designed Levels, Character/Movesets, AI behavior, Status, and UX/UI.

Trappist Landing

3D First Person Narrative Driven Exploration Game

Tool: Unity Engine (C#)
Team Size: 1
Role: Gameplay Programmer
Time: (Jan 2017-Apr 2017)

Overview: A team project, where I joined the team as a gameplay programmer to create a 3D first-person space exploration game.

  • Designed and implemented player-related gameplay system including: custom FPS controller, object interaction, scanning detection.

  • Player feedback: breath system, head bob, some UI animations.

  • Generic UI Animation script, Reactive-plant behavior.

Sword Arena

3D Third Person Action Game

Tool: Unity Engine (C#)
Team Size: 1
Role: Gameplay Programmer
Time: (Jan 2017-Apr 2017)

Overview: A solo game project, where I worked on a Wave-based 3rd Person Action game in Unity Engine.

  • Custom third person controller, Sword buddy system, Data-driven Character system, Enemies AI behaviors.

  • Custom sword shader that display current sword energy (HLSL)

  • UI scripts for health, energy, super gauge, sword dialogue, enemy counter, and timer.

Custom Tower Defense

3D Tower Defense Game

Tool: Unity Engine (C#)
Team Size: 1
Role: Gameplay Programmer
Time: (Jan 2017-Apr 2017)

Overview: A solo game project, where I worked on a 3D tower defense game.

  • Grid-base map system that handles unit, tower placement, and A* pathfinding, gameplay rules.

  • UI scripts for handling shop screen, build/sell, speed up/down.

Cross Counter Tactics

2.5D turn-based strategy game

Tool: Unity Engine (C#)
Team Size: 5
Role: Gameplay Programmer/Designer
Time: (Jan 2017-Apr 2017)

Overview: A team project, where I worked on a 2.5D turn-based strategy game.

  • Grid-base map system, A* pathfinding, Character Selection, Unit actions, Camera system, gameplay rules.

  • In-game map editor: modifiable height, texture painting, map size, random generation, save/load to JSON file.

  • UX/UI and unit balancing for the game.

The Legend Of Mustache

2D Top-down Shooting Game

Tool: Custom Engine (C++)
Team Size: 7
Role: Gameplay Programmer
Time: (Jan 2016-May 2016)

Overview: A team project, where I worked on a 2D top-down shooter game using C++ custom engine.

  • Character movement, shooting, pushing box mechanic, in-game items, weapons pickup, AI behaviors.

  • Grid-based frustum culling, map loading from custom file format.

One Bald Man

2D Shooting Platformer Game

Tool: Custom Engine (C)
Team Size: 3
Role: Gameplay Programmer
Time: (Oct 2015-Dec 2015)

Overview: A team project, where I worked on a 2D shooter game using C custom engine.

  • Character movement, shooting, bullet instances mechanic, and UI.

  • AI behaviors, and procedural generation map.

GOAP AI Project

Goal Oriented Action Planning AI

Tool: Unity Engine (C#)
Team Size: 1
Time: 1 Week

Overview:

  • This project explores the Goal-Oriented Action Planner (GOAP) system, which enables agents to plan and execute action sequences based on their goals and the current world state.

  • The dynamic nature of GOAP allows agents with the same goal to adopt different action sequences, enhancing the AI's variety and realism.

  • For this project, I implemented a simple 2D action shooter AI where both agents share the same goal—eliminating each other. The agents’ goals dynamically adjust in response to changes in the game’s state, creating a more adaptive and reactive AI behavior.

A* and Terrain Analysis

A* Pathfinding and Terrain Analysis Project

Tool: C++
Team Size: 1
Time: 2 Week

Overview:

  • This project involved implementing the A* pathfinding algorithm with multiple heuristic functions: Euclidean, Octile, Chebyshev, and Manhattan. Additionally, I incorporated path post-processing techniques, including rubber banding and path smoothing using Catmull-Rom splines.

  • I also developed several terrain analysis methods, such as wall openness, rear cover, overall visibility, agent visibility, and search with decay.

  • These techniques were visualized on an influence map, which can be seamlessly integrated into the game to provide agents with enhanced situational awareness and create the illusion of intelligence.

About Me

My name is Rittikorn Tangtrongchit, I am a software engineer with a deep passion for an engaging experience. I graduated with a BS in Computer Science and Game Design from DigiPen Institute of Technology in 2018. Currently, I work as a Senior Rendering Engineer at Magnopus.

I am a builder, a doer, and a naturally curious person who aspires to see my ideas taking shapes. While my career has primarily focused on rendering, I have dedicated years of my life exploring several areas of game development:

  • Gameplay: A significant part of my experience involves gameplay programming in both compiled and scripting languages (C#, C, C++, Verse). My work ranges from rapid prototyping to designing and implementing complete gameplay systems, with a strong emphasis on writing maintainable, efficient, and optimized code.

  • Game Engine: I have experience working in several game engines including Unity, Unreal, and custom game engine.

  • Unity Engine: I have over a decade of experience working with Unity, developing numerous personal projects over the years from scratch—many of which were never publicly shown. I am proficient in various aspects of Unity, including gameplay programming (ECS, Job System, Burst), physics, animation, UI, editor tooling, rendering (SRP, URP, HDRP), and networking (P2P deterministic lockstep with rollback, state sync).

  • Unreal Engine: I have professional experience with Unreal Engine 4 and 5, contributing to projects across multiple platforms, including PC, Oculus Rift, Quest, and PSVR. My work has involved researching and implementing rendering techniques, developing C++ plugins, and optimizing performance to ensure smooth and efficient experiences.

  • Custom Engine: I have built and worked on several custom C/C++ game engines, both for academic projects and professional applications. My experience includes working with proprietary C++ engines, particularly in the development of golf simulation products.

  • Tools: A key part of my work involves developing tools and workflows to help designers and artists efficiently utilize custom technology. Throughout my professional and academic career, I have built various tools to streamline workflows, including data authoring tools, in-game level editors, asset conversion tools, custom data/asset importers, and specialized game engine editor tools.

  • UX/UI: In several of my academic projects, I focused on designing and implementing UX/UI based on extensive playtesting and user feedback. I believe that accessibility and readability are fundamental to a good user experience, whether in games, tools, or rendering features. This perspective has been invaluable in making thoughtful workflow and tool design decisions throughout my career.

  • Graphics: As a Rendering Engineer, my work primarily involves researching and implementing rendering features for both projects and internal shared technologies. A significant aspect of my role includes CPU/GPU optimizations, leveraging profiling tools to identify bottlenecks and improve performance utilizing Job System/Burst or multi-threaded Task Systems for CPU optimization, and GPGPU and shader works for GPU optimization. During my academic years, I developed a C++ real-time renderer as part of a custom toy game engine project.

  • Game Design: Game development has always been my passion, and game design is something I’ve naturally gravitated toward from a young age. While my primary focus is engineering, I have years of experience designing and building games from scratch during my academic years as part of Game Design courses. I enjoy exploring various game design theories, particularly those in Game Mechanics/Systems and UX/UI Design. One of my favorite design frameworks is Clockwork Game Design, which emphasizes creating elegant games from a perspective that aligns with mathematical and engineering principles, focusing on association, generalization, and compression.

Contact:
Email: [email protected]
LinkedIn: linkedin.com/in/rittikornt

Night Engine

Features:

Core Engine:

• Component-based architecture:
    • GameObject contain handles to its components.
    • Components allocated contiguously in the memory for each ComponentType.
    • Update Loop would be per ComponentType, traversing contiguous memory in an array.
    • Factory: All purpose Factory for Object creation. Use custom Slotmap Data structure (Handle with direct index lookup).
    • Archetype System: Similar to Unity’s prefab and Unreal’s blueprint.
• Logging System: Log to file, dev console, and console.
• Input System: Simple Input API with Keyboard, Mouse, and gamepad support.
• Message System: For communication between/among sub-system and GameObject
Subscribe, Unsubscribe, SendMessage, Broadcast.
• Reflection System: Macros + Template based.
• Run-time information about the object including name, size, members, base class
Useful for serialization, editor field, member traversal, GetComponent by type, etc.
• Automate Serialization: All reflected members can be serialized automatically.
    • Can define a custom serialize function for any specific purpose.
• File System: Create, Save, Load Files.
    • Useful functions for accessing relative Assets Folder.
• Resource Manager: Loaded resource can be cached, so multiple Gameobject can reference the same texture, models, material, and shader (Flyweight Pattern Style).

Graphics: Opengl

• Minimal Opengl API Wrapper.
• Runtime shader recompilation via console command.
• Mesh loading
• GPU Instanced rendering
• Deferred rendering + HDR Linear lighting
• Directional Light, Spot Light, Point Light
• Normal Mapping + Alpha test shader
• Metallic Workflow PBR (Physically-Based Rendering)
• PBR Based on Cook-Torrance BRDF with the following terms:
    • Distribution function (D): Trowbridge-Reitz GGX
    • Fresnel equation (F): Fresnel-Schlick Approximation
    • Geometry function (G): Smith’s Schlick-GGX
• Diffuse+Specular IBL (Image Based Lighting) for HDRI sky
    • HDRI sky format to Cubemap conversion (irradiance + prefiltered environment map)
• Shadow Mapp + PCF Soft shadow
    • Support both Directional Light and Point Light (Omnidirectional)
• Postprocessing: FXAA, SSAO, Filmic Tonemapping + Gamma Correction, Dithering, Bloom, TAA

Physics: Bullet Physics SDK integration

• Box, Sphere, Capsule, Cylinder Collider
• Collider Debug Drawer (using opengl)
• Collision Detection and Resolution
• Rigidbody Component: Static, dynamic, and kinematic modes. Collision Checking Interface.

Editor:

• Inspector:
    • Show all the current selected gameobject’s components along with its value and editable fields.
    • Add/Remove Component, Save Blueprint/Archetype.
• Hierarchy:
    • Show all the gameobject in the scene
    • Search Filter
    • Selected gameobject will appear on inspector.
• Archetype Editor:
    • Search Filter
    • Show all the list of Archetypes along with its component information.
    • Add, Rename, Remove an Archetype.
• GameObject Browser:
    • Show all Gameobjects in every active scenes with components information and editable fields + search filter.
    • Create, Remove, Rename Gameobject in the scene.
• Dev console: contain various useful commands for running unit test, logging, cpu profiling, physics debug draw, renderdoc capture, runtime shader compilation, etc.
• Material Editor:
    • Simple Material Editor window for editing material properties, custom shader can exposed some properties by inheriting from MaterialProperty struct.
    • Support editing all basic types + texture property.