Hi, I'm Chi Shen.
Enthusiastic in video games and graphics

Work Projects

Kingdoms of Camelot: Battle for the North Kabam

C#, Unity

This is the project I am engaging now at Kabam, Beijing. It is a 2D strategy mobile game. In the game, you can build your empire, forge alliances and fight other players or NPC. It's the first mobile game of Kabam and reached #1 on the App Store in over 68 countries.

I participated in this project when it had run online for 2 years. Most systems and functions of the game are interacting with players through GUI. Thus it is also the main part of my job. In every new version of the game, I'm in charge of some features, and responsible for designing protocols with game server engineers, implementing GUI and their logic parts of these features. Besides, I also help artists with visual effects and write shaders for them.

It is available at App Storeand Google Play


Tian Shu: Can Hun Pu (天书:残魂谱) Happy Elements

C#, Unity

This is my first project based on Unity engine. It is a 3D multiplayer online RPG with traditional Chinese celestial style.

I was in charge of UI system and UI implementation of most modules in the game client, like inventory, chat, quest list, beginner's guide, etc. And I also design and implemented the over-the-air updating system, which enables the game to update new scenes and modules without publishing a new version of the whole game client, which is quite time-consuming.

By working on this project, I learned the Unity engine from the very beginning, and get familiar with most systems and API of Unity. I really learned a lot from this project and this team.

Unfortunately, this game didn't perform well on monetization in its first several online tests, and the company finally canceled this project.


Happy Fish (Android version) Happy Elements

C++, Cocos2d-x

This is my first project after I joined in the mobile game industry when I worked in Happy Elements. It is a 2D casual mobile game.

Its main gameplay is to keep fishes, raise them, and collect rare fishes. A co-worker and I designed the UI system, the resource management system. And I implemented UI and logic parts for some modules like gems collections, fish tank, and fish collections. I also designed and implemented a system to dump and collect user's crash logs, and scripts for the automatic package building.

It is available at Google Play


Other Projects

Code Blank (WIP)

C++

This is my graduation project for the master degree, which is a slice of 3D action game on both PC and PS4. I and two other team members, Shih-Kuang and Rui, are building our own cross-platform engine for the game. We have 6 core team members and have been working on this project for about 5 months.

In this project, my contribution includes:

  • Engine architecture design
  • Memory management
  • Entity-component system
  • Rendering System and its backends for both PC and PS4
  • Deferred Shading rendering flow
  • Compute-shader based volumetric fog
  • Model conversion tool and custom model format
  • Scene and material export tool (we are using Unity as our scene editor)
  • A humanoid animation retargeting tool
  • Performance optimization (in progress)

It is still under development and the repo can be found here:

You can also find the repo of animation retargeting tool viewer here:


Dungeon Escapist

C++

This is an ascii-style FPS game running in Windows command console. The player's goal is to fight slimes, and find a way out of the random generated dungeon. I wrote a software 3D rendering pipeline with a simple engine for this.

It supports:

  • triangles rasterization
  • customizable vertex layout
  • customizable vertex shader and pixel shader
  • simple entity management
  • a simple mesh and animation file format with Blender export plugin (python)
  • skinned mesh animation

The rendering pipeline works in RGBA color mode, and maps the final color buffer to ASCII characters in Windows console window.

It is available on Github:


gllab (GL Laboratory)

C++, OpenGL

This is an experimental project in progress for myself to learn how to write a 3D graphics engine. I'm trying to implement all the necessary basic functions and various advanced features for it.

For now, it supports deffered shading, shadow map and some basic functions wrapping from OpenGL API. I also integrated libraries for various model format support.

It is available on Github:


SPH-based fluid simulator

C, Cuda, OpenGL

This a simple implemention of sph fluid emulator. It's a part of my graduate project in my university.

It uses particles to represent the fluid and SPH(Smoothed-Particle Hydrodynamics) method to simulate fluid's movement. The simulation is done on CPU and the particles' positions are transfer to GPU to render, via OpenGL. For now, the particles are rendered as point sprite, and I'm finding a method to render them like real fluid in real-time.

It is available on Github:

There also a CUDA version of the simulater, which don't need the transfer of particles' data which is directly allocated in the video memory. And with the nature of GPU's concurrency, the CUDA version is quite faster than the CPU version. Right now, I don't have a Nvidia device, but I will upload the sources as soon as I get one and adapt the them to new CUDA version.


mycc

C, assembly

This is a compiler for a subset of C language. It's a course project in my university.

It supports:

  • variables with int, float, char and string types.
  • basic arithmetic expressions for int and float types.
  • if, if-else, switch-case, while structures
  • function calling and recursion.
  • a pair of built-in console I/O functions.
  • x86 assembly output (for MASM)
  • optimization: common subexpression elimination

It is available on Github:


SCOS (Shen Chi's Operating System)

C, assembly

This is a simple operating system, which I wrote from scratch in my high school in order to learn how an OS runs on a machine. It is partly a mimic of Linux 0.11. It contains a bootloader, a kernel, a shell and some tools that can run on it for demonstration.

  • It runs in x86 protected mode(32-bit), the kernal runs in ring 0, and other programs runs in ring 3.
  • It partially supports memory paging, with page mapping from vitual address space to physical address space and allocating physical pages on demand.
  • It (only) supports floppy disk controller and FAT-12 system. (the whole OS is installed in a 1.44 MB floppy disk)
  • It supports DMA to read/write the disk.
  • It supports preemptive multi-tasking, and each process(no thread) has 64MB memory (all process sharing the same system page table) and equal CPU time slice (a simple implementation).
  • It cantains a system API on which the shell and other tools base. It is called through software interruption.

It is available on Github:


Resume

[ Get full version in PDF format ][ 中文 ]

Education

  • Aug, 2016 - Aug, 2018(expected)
    Rochester Institute of Technology
    Masters of Science in Game Design and Development

  • Sep, 2008 - Jul, 2012
    Beihang University (BUAA)
    Bachelor of Engineering in Computer Science and Engineering

Work Experience

  • Mar, 2014 - Mar, 2016
    Kabam, Beijing - Software Engineer

  • Jul, 2012 - Jan, 2014
    Happy Elements - Software Engineer