Hello! I’m Kai.

Gameplay and Engine Programmer

Ever since my playing my first game, Command and Conquer: Zero Hour, when I was 4, I knew that I would love to be part of the gaming industry. I have a keen interest in tech since then, and am currently taking a bachelors degree in Computer Science and Game Design at DigiPen. Through the program, I had the opportunity to work on various projects not only as a programmer, but also as a product manager.

Although I first started as a gameplay AI programmer, my experiences had me pick up graphics, engine and tools development, and low level C++ optimizations. Being a product manager had me work with both designer and artists, and gave me valuable insight on their perspective and how I can bridge the gap between programmers and designers. I strive to make sure that everyone on the team can communicate effectively and understand each other.

This website showcases some of my more recent work and interesting code I’ve done, and will be regularly updated! Currently, I’m working on a personal project involving mesh shaders, after seeing a really interesting talk by AMD at GDC 2024.

Projects

  • BrotherEye

    A multitasking arcade-style game, BrotherEye was a 3 person project for a semster long course, using a custom inhouse engine provided by the school. I was the product manager, and came up with the concept, the and was responsible for many of the minigames.

  • Bloom

    A RTS survival game, Bloom was originally a 6 person project spanning two semesters. We were responsible for building a custom engine without the aid of 3rd party libraries, before working on the game itself. I was responsible for the graphics, the game AI and worked with others on the editor interface.

  • A* Pathfinding

    My favorite assignment so far, this C++ Implementation of A* Pathfinding on a grid had a speed contest within the class of over a 100 students. This taught me many things on optimizations and doing research. I experimented with SIMD, modern C++20, and learnt ways to exploit cache locality.