Skip to main content

Game Development

3D Game Development

Tripwire

This project was begun in August, 2006. The capstone senior course for graduation at my university was to complete, in one semester, a video game. The theme was to be decided by the group, but the rules of the game were determined by the professor. We completed the project with varying results. I was responsible for all graphical assets, all GUI development, all integration between the UI and the other core systems (game logic, AI, networking), help, and the install/uninstall. The game was developed using the game engine within "Blender" (http://www.blender.org). This project was to be done during my final semester while I was also still taking a full load of classes. I was also working on an independent study in modeling and animation; the results of which were put directly into the game. One team member worked on the AI and game logic in C++, and another worked on the networking in C++. I was responsible for compiling all 3 of the C++ systems to a DLL that the blender game engine could recognize. I took a whole area I knew nothing about it, and made it work. I created all graphics and animation for the game, did all scripting (python), and was responsible for tying the game engine into the C++ DLL. While visually it is not very impressive, this was entirely new ground for the entire team.

  • Status: Complete
  • Platform: Windows
  • Genre: Casual, Board Game
  • Development Duration: August 2006 - December 2006
  • My Role: Artist, UI programmer
  • More Information: This was a part of the Computer Science department curriculum for graduating seniors at Harding University.

Programming Highlights for this project

Personal Growth: My programming experience up to this point was exclusive to the Visual Studio IDE. In this project (and since) I've gone outside of the box I had built for myself. I had to learn logic that was specific to blender, how to script, and how to communicate between different languages (other than some limited experience in referencing functions written in assembler from C++ code).

  • Scripting - I previously had no experience with scripting languages. For this project I had to learn python.
  • Boost - Scripting in Blender is done in python. I had to come up with the solution for communicating between Blender's python interface and the C++ game core. In addition, I also had to implement this solution in every part of the project that needed to be accessed from python.
  • Installer - I had created installers, but nothing where there were extra DLLs and such that would need to be present. The install was a bit more complex because there were also installation prerequisites. The responsibility was given to me.
  • Debugging - Much of the time the code that was given to me worked fine on its own, but within the context of being called from the interface it functioned wrong. I got much more experience on this project in debugging code that wasn't mine, as well as debugging script.
Art Highlights for this project

Personal Growth: I had dabbled a bit in 3D modeling but had no formal instruction in the field. I had learned the basic modeling interface to blender, but not any real texturing, lighting, scripting, animation, camera controls, logic bricks, etc... Learning how to create 3D models and bring them to life opened up a whole new area to me which I found I rather enjoyed.

Responsibilities: Overview - Creating all models and artwork for the game was a task assigned to me. In order to accomplish my goal I had a lot to learn. Before this I was barely able to model anything and make it look good, and didn't understand how to texture or animate the models.

  • Modeling - I understood the basic interface of blender, but was completely unaware of what was regarded as 'best-practice' in any part of my asset creation.
  • Texturing - I knew nothing about dealing with texture coordinates or texturing 3d object.
  • Animation/Armatures - I previously had no animation skill, and knew nothing about armatures. Learning this was a necessity in order to complete the project.


Besieged

In the spring of 2007 I created the project, "Besieged". Design documents were created and expanded upon and a team was gathered. I've acted as the sole developer on this project. The game uses the Torque Game Engine. I have used several resources to help learn the workings of TGE, but I have also been editing the engine and creating my own assets.


  • Status: Canceled
  • Platform: Windows
  • Genre: 3d Siege
  • Development Duration: May 2007 - August 2007
  • My Role: Sole Developer
  • More Information: This game is intended as a prequel to 'Tears of Anwal'. It lays the foundation for storyline and geography from which ToA stems. Development was placed on-hold due to another opportunity.

Programming Highlights for this project

Personal Growth: Experiencing how the Torque Game Engine works broadened my horizons a lot. Owning a license to the game engine allowed me to see what went on behind the scenes. In experimenting with different resources I was able to figure out what was possible with the engine, and how to create different features. I used the FPS Starter kit that comes stock with TGE, and created something that was more my own.

  • Community Resources - I used community resources to help me learn the capabilities of the engine, and how to accomplish certain tasks. This helped me get used to how the engine worked, and I changed these resources to match my needs. Before long I was taking resources that only vaguely did what fit my needs, and turning it into something I could use.
  • My own personal touch - I edited the engine to allow objects to mount without a lot of overhead. I used the existing functions for object placement, and overloaded some functions to cascade down to the objects mounted to them. This functionality was included in order to automate light sources and the models/particles that would be there to cause them. The keep of the castle has over 60 torches in it. Rather than moving 180 items, having 180 items in the mission file, and dealing with any manipulation, the 3 objects (torch, fire, light source) act as one. If the torch is moved, so does the light and the fire. In addition the torch itself is a script object. Any time the torch is added, the fire and light go with it. Thus, there would be 60 torches in the mission file rather than 180.
    • Multiple objects would exist at the same location and if the parent object was moved, all children would move to the same position.
    • If the parent object was deleted, the children would be deleted as well.
    • If the child object was deleted, it would be removed from the parent first instead of causing a crash.
  • This project allowed me to get much more familiar with the controls and usage of Subversion. From the very beginning the project had a subversion space with Trac for project management.
  • Engine bug-fixes - I was able to fix bugs in the stock TGE that I found myself, and through bug reports from the forums that I had not personally encountered yet. The largest of these was a slight problem in the theora video playback, and a crashing issue with the engine.
Art Highlights for this project

Personal Growth: For this project I have used the modeling and animation knowledge I gained during my independent studies, and took it a few steps further. One of the most important skills I think any professional should have is the motivation to constantly learn more, and I've tried to take this project as an opportunity to learn everything I can about quality work.

  • I learned how to turn my 3d models into DTS models including LOD meshes and collision meshes.
  • I learned how to create BSP interiors with texture, lighting, and portals.
  • Improved my skill with textures and creating my own textures.
  • Furthered my skill with modeling to create a variety of fully textured models that were 100% original.
Challenges for the future

This game is one I definitely intend to complete. Whether this takes 1 year or 10 years, I will complete it. These are some of the biggest challenges I foresee.

  • AI Path-finding - I want an AI that will actually look intelligent. Right now the AI is basically, "If I see it, I kill it." From here it can be tweaked to act differently in different situations. The problem that arises is making the AI path correctly. I understand a* pathfinding. The problem that I am currently stumped with most is having the AI generate a path through a BSP interior that includes stairs.
  • Networking - While I have knowledge of socket programming, I am not familiar with the networking architecture of TGE. I understand the concepts of ghosting, but I haven't actually experienced it. This will be an important learning experience for me.
  • Character Animation - While I understand the controls for modeling, texturing, and using armatures, my animation skills need work. I plan on having many different character models for both the enemies and allies in the game. This is going to take quite a bit of refining on my animation skills.

2D Game Development

Tears of Anwal

In 2005 I created a team to work on a 2D top-down RPG. This was a 'from scratch' project with no art assets and no engine. We created our own 2D engine using Managed DirectX through a C# interface. We implemented image transparency and clipping, a moving map/character, a menu system, and resolution options.

For this project pre-rendered animations were used for the character movement, and a board editor was created to assist artists in creating the maps. The project was used as a learning experience.

  • Status: Cancelled with intention of a complete remake
  • Platform: Windows
  • Genre: Classic 2d RPG
  • Development Duration: October 2005 - May 2006
  • Developer Role: 1st Party Developer
  • More Information: This was the debut project that began Katalyst Studios. Due to the lack of staffing necessary to create a fully-featured RPG development was extremely slow. Development was canceled because of unsatisfactory results with the intention of starting over from scratch in the future.