Melvin Tan
  • Home
  • Dev
  • Projects
    • Hunter Beyond Tokyo
    • nIXT
    • Contrive
  • Resume
  • Contact

Objects in space

game website
download game

Hunter Beyond Tokyo
Sophomore Project (DigiPen Singapore)

Summary:
The year is 3000 AC. The people of Tokyo are living in a time of constant strife. Villages are attacked and the once free people of Japan are being pushed close to extermination. You are a member of one of the last secret sect of warriors. The “HUNTERS” must carry out a set of missions in a final effort to turn back the tide of darkness and extract vengeance for the people of Tokyo.

Role:
Technical Director and Graphics Programmer as part of a team of four

Task:
  • Designed the engine architecture and implemented the core framework and engine component.
  • Implemented the 2D graphics engine component using DirectX9.0.
  • Implemented an easy to use generic templated state machine system.
  • Wrote shader codes using HLSL for combat effects.
  • Wrote a logger that logs debug info in the game into an .xml file which then formatted by an .xsl file.
  • Multi-threaded the initial loading of graphic assets at the start of the game.


Reflections:
I brought everything I've learned previously from other projects into making a game engine for the very first time. Most of my time was spent researching and planning out how to properly build an extensible, easy-to-use and efficient game engine.

One of the challenges I faced was writing a game state machine system that handled state of the game objects. I wanted to make a system which created and owned the state machines, but at the same time has to interact and modify properties of a game object, even private members. 

It is really fun learning new things whenever I work on a game project, and this one is no exception. As a challenge to myself, I decided to integrate shaders with the existing graphics component. I learned a lot about how rendering to textures work and started to abuse them for some post-processing goodness.

Throughout this experience, I also came to understand how parts of C++11 are a godsend. I experimented with multi-threading the initial load of the engine using C++11 new multi-threading capabilities like std::thread and std::atomic. It abstracted multi-threading to a whole new level where it's simple to use and easy to look at. After implementing that, the freeze which can easily be found at the start of the game essentially hidden by all the logo splashes fading in and out. (Too bad Visual Studio 2012's implementation of the standard leaks memory.)

Overall, this was a challenging project. Building an engine from the ground up and using it to bring your game to fruition is a really satisfying feeling. I've learned so much about the "flow" of the engine and the game. Learning new programming tricks are fun too. On top of that, I've also learned about working together in a team and also how important it is to keep everyone motivated on the project. 

Oh, and learning new programming tricks are fun too.
game website
download game
© 2014   Melvin Tan
  • Home
  • Dev
  • Projects
    • Hunter Beyond Tokyo
    • nIXT
    • Contrive
  • Resume
  • Contact