I’ve written tons of code. Well, if code had weight, I’m sure it would be quite hefty at least. Not all of it is useful as most of were just assignments for class, but everything I have programmed has had some hurdles to cross. Hopefully, my code can show others what to (not) do when they get to their hurdles.
All of this code is provided AS IS with NO WARRANTY. There is nothing here that should kill your system, but I take no responsibility if something goes wrong. Also, I’m not sure if this code will compile or run for you. Where applicable, the archive files have binaries in them and those will likely run. If you have problems, I might be able to help you, but no guarantees. I’m going to go ahead and slap a Attribution-Noncommercial-No Derivative Works 3.0 United States License on this code. If you want to do something more with it, let me know.
MERTIS stands for Modifiable, Extensible, Real-Time, Interactive Simulation and yes, it took a lot of work to get the acronym just right. What all that means is my team and I developed an OpenGL game engine with Lua scripting you could use to make games really quickly and easily. It did make game development really easy. I developed Tetris in a night with it. That said, though, I wouldn’t really recommend anyone using this for real games. This was the first really big project I ever worked on and it is really rough. But I am still proud of the work and I learned a lot from it. This paper describes the design process. It is also a bit rough but it was published so it can’t be all bad. Code and video below, check them out.
This first bit of code is a C compiler I wrote for class. What makes this unique is that it was completely written in Python. I used an implementation of Lex and Yacc written in Python, and the rest was done by my partner Eric Fritzinger and I. This compiler is far from complete so I would stick with gcc if I were you, but if you want to see what a simple compiler looks like, here you go.
Partyopolis was a game my team and I developed in late 2005. The premise is simple: The gods want a huge celebration in their honor and whatever house throws the biggest party gets the gods’ favor for the next year. There are two teams, the ubiquitous red team and blue team, and rather than fight for the most kills or flags or tickets or whatever, they need to recruit citizens to come to their party.
Recruitment is where this game really shines. Rather than have some stationary target like a flag or capture point, the players are in a city full NPCs just minding their own business. If you shoot at them or around them, they freak out and are less inclined to go to any party. When they are recruited, they must run all the way back to the recruiter’s base and in the meanwhile they can still get recruited back to the other team. I think it would make for a very interesting game mechanic that was only partially explored in this game. Someday, if I have the time, I would like to go back and make this game properly instead of in six weeks for a class assignment.
Lagoon is the project I have spent about the last 2 to 3 years of my time working on. It was built for two purpose: as a AI research game engine and as a training simulation for the U.S. Navy. My work was mostly concerned with the latter. For the AI research game engine part, look towards Chris Miles’ web page. Now about the training simulation.
The U.S. Navy has this huge virtual bridge with 360 degree, panoramic screens they use to train officers on how to maneuver these huge ships. The simulation as no AI, so the instructor has to control all the other ships in the harbor in addition to teaching the lesson of the day. Lagoon was designed to provide AI to control all the other ships and boats typically encountered in a harbor so that the instructor could focus on teaching. Lagoon also provided an interface so that the instructor could easily train new AI controllers for ships but just using the user interface. The controllers created through this method were robust, so that if the scenario changed, the ships would still maintain their behavior.
This was an interesting project for a variety of reasons. We had to work closely with the Navy and provide them a solid product they could work with. They weren’t so much concerned with our research aspirations, they just wanted something that would work. This provided some challenging constraints to our programming which had to be much more industrial-like than typical research code. We also had to provide deliverables at regular deadlines. But there was still plenty of opportunity for research with behavior-based controllers, neuro-evolution, and advanced path finding. For details on how to get the Lagoon code, compile it, and run it, the best place is to go to the Lagoon Wiki.