Over the past year I have been working on rewriting our web based strategy game, Voidwars, to use xmlhttprequests and xml instead of the ever evil hidden iframe technique. Originally intending to write it entirely from scratch I instead took parts of the code and rewrote them to produce xml instead of html/javascript and created web front end that communicated with the server via xmlhttprequest, as most web applications do these days.
It took a frelling long time to do so, and I learned quite a few things along the way, and once I had a working prototype, I felt it easier to push forward as I could implement features and see them working.
Voidwars is a civilisation/master of orion type game, you expand your empire through colonising other planets, building fleets and researching new technologies. The game "ticks" every 3 minutes, and games can last for up to a month. To win you must complete objectives and the first player to 10 points will win the game.
The game is far from finished in my eyes, I still have many features planned for it, but for now I just want people to try it, and get as much feedback as possible. We already have a few regular players (who know more about the game than I do) but would like to see more people try it out and get feedback from them.
One of the new additions to Voidwars is the Trial Game. It took a while to finally add, but players can now join this game at any time and take a look at what Voidwars is about without joining a full game (games only start once a month and can last a month). So if you randomly end up reading this feel free to take a look and let me know what you think.
A new game is currently open for signups (game 32) also, though please try out the trial game before joining a regular game!
One of the most important aspect of any multiplayer game is the balance between the various choices a player can make. Obviously if a player makes a mistake they shouldn't do aswell as someone who does not, but those mistakes are not the choices I refer to.
To keep a game interesting there needs to be a diversity amongst the players, rather than just giving everyone a Rock, we give them the choice of a Rock, some Paper or a pair of scisssors.
Now in this rather obvious example the paper should beat the rock, the scissors should beat the paper and the rock should beat the scissors. If the Rock can beat the paper, then everyone would pick the Rock and everyone would be the same. This balance is very hard to maintain and to even achieve in the first place.
Voidwars unlike paper, scissors and rock is much more involved. While the three races you can choose from aren't that diverse, they can be very hard to balance. One example are the Bakani's shields. Bakani ships have lower hull than the other races ships but they contain more powerful shields, and shields are quick to drop but also quick to regen. This causes the problem of those ships possibly never being damage since their shields might never be down. The question is are the shields on the ship more or less valuable than the hull the ship has lost? While initially it is a very simple problem, there comes into play another type of ship.
The EMP ships have extremely high damage versus shields, a fleet equipped with a few of these can take down Bakani ships much easier than without. This renders the shields of the Bakani ships much less useful, exposing the hull of their ships much quicker than with normal weaponry. This has to be factored into the "equation" of how much hull these ships should have.
There are also other factors to consider such as those ships build time, build cost, movement speed, weapon power and other such abilities. With all these combined it is never a simple matter to figure out if there is in fact a balance between the ships. While I do as much mathematical calculations as possible, often it comes down to user feedback as to whether something is balanced or not. In game situations often reveal more about their actual performance than number crunching, particularly with regard to "utility" abilities.
Blizzard Entertainment, one of the best game designers have shown how to get this right. They have often balanced very diverse abilities which can't always be determined through mathematical methods. Starcraft is one of the most balanced RTS games ever and the 3 races you can choose from have very differing powers, from Terran's ability to move their bases and call down nukes, to the Protoss' ability to mind control and have massive area effect damage spells. I would hope I have learnt a lot from playing their games and watching the changes made over the many years.
Of course one of the most important things about making all these changes is to inform the users of the system about such changes. This should't occur through player discovery usually, depending on whether it is merely a balance change or new feature meant to be investigated.
I haven't done a particularly good job of keeping players informed in Voidwars and with World of Warcraft devs often sneaking unannounced changes into patches they haven't always succeeded either, but I can appreciate why the devs can't always list every change that has happend. I would have thought they that a much more organised company like Blizzard would have some sort of system in place for that kind of stuff though =).
Voidwars Game 8: Desparate Measures is now open for signups. If you think that playing a 2-month long game of Civilisation in space (or MoO or ST:BotF) using your web browser then you might like to check it out.
[21:36] <Kam|afk> idea: stars are always visible on the map
[21:36] <Kam|afk> discuss in my absense
[21:36] <Xiven> nice
[21:54] <c0sm0> bad
Yesterday I accidentally increased the size of the universe.
Why do people do what they do?
What makes us behave the way we do?
If there are rules that are easily broken do we have a desire to break them just because we can?
Do people make multiple accounts in the same game just because they can?
Or do they wish to play it many times at once to enjoy it many times over?
What drives us to do what we do? (and please don't say Driver, Car or some other vehicle, yes YOU, you know who you are)
So we finally decided to open a new round of Voidwars, given that much of the new stuff is still gonna take a while to do, we thought it would be best we start a new game to keep the addicts occupied.
The latest installment of the ever exciting Voidwars Saga has been made!The Etrib Go-eth concludes with an exciting cliff hanger.
In an effort to get back into making bad comic strips and to introduce the Etrib into the cast, I have made a very bad comic that involves the Etrib, called "The Etrib Cometh"
The new round of Voidwars has opened for signups! Join before it's too late!
Arg is the latest Voidwars comic from my badly drawn imagination. Enjoy or not at your own lesiure.
I finally managed to concoct another Voidwars comic =)
These things are seriously hard work, even though it doesn't look that great, it still took me ages to get to get it done, and it's not just the drawing that's hard. Coming up with the actual script is very hard, especially trying to fit it into 3 cells. The number of changes it went through before it arrived at what is is now, is quite high. Some of the ideas not used should be appearing in the next comic, which I actually already have planned pretty much. Interestingly, the making the images themselves helped me get inspiration for what was going to be said by the crew of the ship.
So long as at least one person still laughs at what I make, I will continue to make more, as and when I have time and inspiration.
After spending a great deal of time last night attempting to reduce the number of queries our Voidwars ticker (the thing that makes everything go =) ) used we have successfully reduced it from 900 down to a measly 131.
As pointed out by Xiven the method we used to achieve this dramatic drop wasn't exactly ideal, but since the queries are generated we can always not look at them =).
NOTE: I came up with the idea and NOT GwieF (our usual MySQL expert) =)
I am slightly worried by my over use of the word
Well
, as most of my blog entries appear to start with it. Perhaps i'll make it my next word of the month =)
Now that I've manged to start my latest entry without the well at the begining, I can go on to say that I\'ve been mostly doing Voidwars development at the moment, and might I say that game design is pretty difficult.
It's not just a simple matter of thinking up names for things, it's also making all the stats for everything, and then making sure it all balances. With 3 races planned for Voidwars balance is going to be extremely important to ensure that all players get a fair chance at victory, but also making sure each race is distinct enough to be worth existing aswell makes it even more difficult.
One aspect of Voidwars that I am currently trying to enhance with the adding of many admin/NPC tools is to add some sort of player controlled story, with NPC characters affecting the game throughout its runtime. The admin tools let us change the game universe without having to resort to accessing the database directly which enables us to casually mold the universe in accordance with what ever plot we decide upon, be it creating huge armies of unstoppable ships or destroying half the universe at the touch of a button
I have lots more fun things to add to the admin tools yet, and I'll get around to implementing them if I can pull myself away from my games of Warcraft III ^_^
We have finally opened the Voidwars beta to the public so we can gather alot more test data on balance issues aswell as any remaining bugs.
We will also be testing the admin tools and will hopefully try and add a little story to the game with our NPCs and god like powers.
So! Come along and signup, its free and all you need is a decent web browser.
After not doing much work on voidwars I decided to at least do something for it, so coded a simple addition to our "admin" tools, that listed all the techs required and how how long it would take to get each one including all the sub techs required.
Surprisingly it seemed to work pretty much first time so I left it at that. After looking over it again I then realised that it did vaguely work because of the sequential order of the techs added, ie. later techs have higher id's that techs lower down. The way it worked was that it was supposed to loop through all the techs, marking all the ones that can be done from the current techs available and filling in their costs, then being the loop again marking any techs that are now available to research.
The loop ends when all the techs are marked as completed. However i forgot this loop and just went over the techs once, which resulted in most techs seemingly being in the right place, but leaving the odd tech that must have been inserted later, hanging around with no time required. After fixing some other bugs that appeared I am now much happier about it as I knew I did it far too quickly the first time for it to be correct =)