Q: What were the main difficulties you had to
overcome in developing the server side of the game?
This is the first time I had to tango with a complex multithreaded
system. Debugging a multithreaded program that only crashes after
3 days of hosting literally thousands of games is not an easy task.
I had to develop a pretty complex logging framework to track all
the data and try to reduce my signal to noise ratio when I needed
to find out why a particular problem was occurring. The system
isn't perfect yet, but I'm getting there.
Q: Did you run stress tests for testing stability
Unfortuanately the only real way to stress test a system as complex
(and fragile) as this is with real time actual usage. I developed
a suite to do stress tests and they worked well while I was rewriting
the server in C#, but humans are a tricky thing to simulate and
the only reliable way to make sure everything is behaving is to
toss the server into the deep end and see if it sinks or swim (and
being prepared to stay up all night giving it swimming lessons
if it's having troubles).
Q: Why did you decide to rewrite the server code
in C#? What were the advantages?
The C++ version of the server used Winsock which meant there were
no portability options. Portability was an eventual goal of mine,
so when I hit an impasse with a particular bug in the C++ version
(we're talking about crashes every hour or two), I decided to finally
check out C#. I liked everything I saw so I rewrote the server.
It took a long week of very little sleep learning C# and writing
lots and lots of code, but it was well worth it. My only regret
is deciding to write the initial server in C++ instead of C#. :)
Q: Did you notice performance differences between
the two versions?
The performance differences are neglible. I have noticed that
my programming tie is far more efficient with C# though and that
is far more important to me.
Q: The XMLSocket object was originally designed
to exchange xml data through persistent socket connections. Did
you stick with XML or did you create your own protocol?
The original game design was the 2d top down real time space shooter
so I developed my own "thin" protocol to exchange the
data for that project. When I started Battalion all the code for
the thin protocol was implemented, so I just used that.
Q: Let's talk about gameplay, can you tell us
about the Battalion game modes?
There are quite a few ways to play Battalion. A player who is
undefeated on The Battle of Tilnyne Hill map might not be able
to hold his own on the map Cross-Divide. Generally speaking maps
fall into two categories: Pre-deployed or deployable. In pre-deployed
games, it's more like you are playing chess. There is no possible
way to get reinforcements so the game becomes very much about anticipating
your opponent and securing any cities that might be able to heal
In deployable maps, the game focuses a lot more on
resource collection and building an army that is more cost-effective
than your opponent's, then using that army to take and hold strategic
choke points around the map. There are several other ways to play
Battalion. Some maps revolve around guarding capitals that if lost
result in your defeat. You can also ally with other players to
play team games of 2 on 2 or 2 on 1. In addition to that there
are ranked game types and squad game types. There are also several
new game modes planned for future releases.
Q: Did you develop your own tools for editing
the game maps?
I hacked a Lua export script for the Mappy map editor when I first
started Battalion and while it worked it was a *very* rough tool.
One day yayitsandrew and I got in touch and he said he wouldn't
mind implementing a publicly consumable map editor for Battalion.
We worked out the design together and then he implemented it. It's
a really solid piece of engineering and it represents an invaluable
contribution to the Battalion community. People can now design
their own maps (and there have been many many maps that were designed)
and upload them to play them against their friends. The editor
is so easy to use it is almost painful.
Q: Is it possibile to add more maps or create
Using the Battalion map editor, people can create their own maps,
and if they have premium access they can upload them and play them
against their friends.
Q: Developing a multiplayer game is quite a long
work. What would you suggest to developers willing to create their
first mp game?
Start small. Battalion is the third multiplayer game I've built
and the 5th multi-user project I've worked on. If you don't know
what you're doing, start small, learn the basics, tinker. Will
you build your MMORPG dream project the first time you open Visual
Studio? As much as you might think "We can do it," and
you might be able to, I suggest you sharpen your teeth on a few
small proof of concepts first.
Q: Once you're finished with a multiplayer game
you're only 50% done. Then you have to make people know it and
play it, do some advertising and cover the expenses for servers
and bandwidth. From your experience, what are the best ways to
promote the game and cover those expenses?
50%? I think you're being conservative. :) Advertising is the
most expensive hard cost I have yet to incur and it's one that
can not be avoided in any way. I think the best way to promote
a game like Battalion is to encourage word of mouth amongst your
users (beg if you need to, but try to find ways to integrate rewards
for spreading the word.. think Kings of Chaos). Ask your users
to invite their friends. Talk to sites that cover multiplayer games
about getting a review (I think we have one coming up with mpogd.com
for example). You're probably going to need to drop some money
on banners as well. My recommendation is do not underestimate how
much it will cost you to market your game. It is the single highest
expense you will have.
Q: It seems that web-based multiplayer games
are becoming more popular. What do you foresee in the next future?
Web-based multiplayer games are already insanely popular. I'm
sure you've heard of a little game called Runescape. As I recall
a recent article I read put them at owning 3% of the MMOG market.
I think we will see a lot more web-based multiplayer games, and
also more cellphone multiplayer games. You can't beat the requirements
that Battalion and other web games have in order to play. All you
need is a browser and you're good to go. You can play at work,
on your laptop sitting on a train, at home, a cybercafe, or while
relaxing at the beach. Accessibility like that is hard to beat.
Let's just hope the next version of Flash handles the performance
requirements a little better.
Q: Can you tell us about your future game related
Nope. :) Battalion is just a small stepping stone...
Q: Some of the new features in the next Flash
have already been revealed. What do you expect from this next release?
The holy grail, really. If the new Flash performs half as well
as they say it will, they will hook me for another generation of
games at least. The performance issues with Flash is really the
only major problem with the platform, so if they can do anything
to improve its rendering speed, I will be a very happy developer.
I'm excited to play with some of the new effects I saw demoed,
but really, the only thing I looking for is better rendering and
faster networking (UDP support would not go unused :) ).