Monday, February 2, 2009
Tuesday, January 20, 2009
Reverse engineered the commercial game Hinterland.
Reverse engineered the commercial game Hinterland by debugging compiled script files inside the game engine virtual machine. Duplicated 20% of the game using the original game assets.- The game installation contains all the art assets in forms of native Torque game engine format. The assets can be viewed by tools that comes with the engine and loaded and used inside the engine for your own games. The game also has all the compiled script available in the installation.
- All the game script code are compiled by a virtual machine inside the game engine into C++ function calls and variables. Consequently, it was possible to debug the script directly inside the engine. In addition, a big portion of the compiled script contains meaningful symbols and texts that helped interpreting the original script content.
- For example, in the Torque Game Engine, controls that contain texts are not able to resize the texts. The game Hinterland does resize the text. In order to find out how they resize text (either in the engine or in script), I debugged and guessed the contents of the script. After finding that it can not be done in script, I wrote code to transform texts correctly. The seemingly easy task turned out to be a hard problem. To support fonts on multiple platforms, the engine has very complicated text rendering system (at least 10 nested funciton calls to get to the root rendering code).
Saturday, January 10, 2009
My Enhanced CAD Program (from Stephan Zerbst)

- Converted the project from VC6 to VC2008. Fixed variable initialization errors and several memory leaks inside the graphics dynamic link library ZFXD3D.dll and rebuilt the dll. Fixed Libc.lib, Libcd.lib not found linker error.
- Fixed exception from saving and loading levels.
- Modified code that renders backfaces correctly.
- Added geometry rotation UI option in addition to the existing translation options.
- Added menu option to create more stock geometry such as sphere, ellipse, Bspline, raster images.
- Added option to create cell group element that represents a collection of geometries.
- Added a geometry element attribute called "Level". Basically a level has its own color, line width, and texture. A geometry element such as an ellipse that belongs to a particular level inherits all the attributes from the level and overrides its previous attribute. For example, if a triangle is green and it belongs to "level 32" which has a color of red, then triangle has the "level 32" color red instead of its own color.
- Enhanced view navigation. Modified translation and rotation factors so that the scene can be navigated more comfortably.
- Added the ability for a file to recursively reference and import transformed contents from an external file. For example, file 'A' can reference and contain all the contents of file 'B', and file 'B' can in turn contain all the contents of file 'C'.
- Added tooltip text display.
Sunday, May 4, 2008
Saturday, May 3, 2008
Jackal Born Inc - Zombie Party Project
Link to part of my modification of the source code.
a MMO addon of the Torque Game Engine provided at MMOworkshop
- The "Massive Multiplayer Online (MMO)" game add-on is a Python extension to the C++ Torque Game Engine. It was used to make the popular MMO game "Minions of Mirth", and the source code was released later for public benefit.
- Added Python code that enables automatic addition of spells depending on type of weapon equipped
- Implemented a battle event system. There can be several opposing factions, each guided by a mob leader. First you have to kill random roaming wolfs around the land and obtain some wolf meat. After you hand in the meat to a NPC, you will be able to activate a battle event. Once the battle starts, several factions will meet each other and start fighting. You, the avatar, belongs to a faction (You gain reward points for a faction by killing the enemy of that faction). If your faction wins in the battle, you will be able to talk to the battle leader and obtain prizes.
- I scripted, in Python, the above battle system, and added C++ code to the Engine and glue-code in Python in cases where more functionality on the scripting side was desired.
- Before starting to work on the project. I devoted 3 month of time on learning the source code of the mod-kit, which includes Apache for server, SVN for patch update, and python packages such as Sqlobject (Python implementation of SQLight) for database, WXPython for Windows user interface, Twisted Python for networking. Other packages involved are Win32OpenSSL for security and Pycrpto for cryptography.
Beafjack Inc - Halo project
- Added AI: The bots chase the avatar at certain distance, then start shooting when closer. When the avatar is out of sight, the bots stop and go back to patrolling and scanning for enemies. This was implemented by a simple finite state machine. In addition, I added markers that are connected into a network. Then I implemented Dijkstra's algorithm to find the shortest path from one marker to another.
- Added UI: Added timers, and counters indicating enemy and teammate numbers. Also added a progress bar similar to the teabag bar found in the game Halo.
- Added advancing of levels.
Subscribe to:
Posts (Atom)

