Skip navigation

I know a little about C++ and network programming, but I’d like to learn more. I also have an opportunity to do some Java programming at work (in addition to the normal Perl programming I do right now). I had a crazy idea this morning that would help leverage all of these and I’d like to explain it here for both the reader and so I can refer to it later if the need arises. Here’s the idea: – Figure out a game that would work in a client-server fashion. I want something that’s relatively simple, but that can be expanded. The game should be multi-player (or else there’s no reason to go client-server). Ideas include multi-player Asteroids, a simple RTS, Hearts/Spades/Poker, Archon, Mail Order Monsters and Duck Hunt but to start out simply, there’s no better model than Pong. While it would be nice to provide compelling game play, the primary purpose is knowledge and experience. Also, prototyping a simple game to get the fundamentals down would allow focus on the hard bits while not having to worry about complex rules interactions. – Create a Java client. Java’s relatively cross-platform and should be able to be run on a variety of systems. This will let many different people experience the game regardless of what type of computer they use. – Create a C++ server. The ultimate idea is to make a server within a framework that will provide high performance. It should also be flexible so it can be adapted to more complex games later. Interfacing with a back end database would be good as well. Part of the inspiration behind this plan was a discussion I had many, many years ago with Kevin Tewart and Mike Hummel, the designers of the ill-fated Rifts CCG. They discussed with me the idea of initially designing the Rifts CCG. They started with a simple game engine without any special effects and testing that to make sure the basic idea worked and was fun. Instead of having a card named “AA-10 Bottweilers” with Attack of 3, Counterattack of 0, Damage Capacity of 3 and text saying “When you rotate this unit to attack, you may immediately place 3 damage on it to increase its AT by +3 until end of turn.” and other, bigger guys with similarly complex additional effects, you have a card named “Small guy” with AT of 3, CA of 0 and DC of 3, a card named “Medium Guy” with AT of 5, CA of 2 and DC of 5 and a third named “Big Guy” with AT of 10, CA of 5 and DC of 10. You play the game with these generic cards and determine whether the underlying mechanics of the game work like you think they should. What parameters of the game should be dropped, which should be changed and what new ideas should be added. If the fundamental game engine is too complex in a generic fashion, it’s not going to get simpler if you add more stuff to it. Also, if it has fundamental balance issues, it’s going to be easier to balance the game now than it will be down the road with more moving parts. Finally, if the game is boring, the fundamental design should be re-examined and modified (add something, remove something, change something or any combination of the three). Start simple, grow incrementally, make sure things work as you go, address broken things soon and balance the game as much as you can while you go. It may take a little longer to do, but it will pay dividends in the long run.