Rotates.org

December 23, 2009 - Belated excuses

It’s been a very busy year for me, mainly due to my commitments at work (let me assure you this won’t be a long winded entry which eventually leads to ‘so thanks for your support but I quit’!) and as such the big project that I’m sure 99% of visitors to this site are waiting for is still under slow methodical planning and development.

It’s dawned on me that I’ve been very secretive even about the name of the project, so I think at the very least I owe you guys that – so here it is!

Archaos

I think this is slightly more pleasing than ‘Chaos Enhanced Enhanced’!

I’d also like to talk about the plans regarding its launch and features, because I’m taking quite a different approach to the norm. Early on in the planning I wanted to make sure Archaos could be playable by as many people on as many different formats as possible. The general idea I had was that I’d write the game in haXe and then generate the various sets of code for servers and clients from that one source, and ‘et voila’ I’d have a cross-platform game. Since then, I’ve spent a lot of time at work playing with various web-based JSON APIs, and I’ve watched some fantastic projects appear (such as node.js, Persevere and CouchDB) and realised that, in fact, Archaos’s core could live on the web as a data-based API.

It makes a lot of sense when you think about it – you have a scalable server with a scalable database, written in Javascript (a language which I simply adore), using JSON as its end-to-end data format, accessible by anything with a web connection. Being turn-based, it doesn’t need to rely on any complicated comet solutions, and (and here’s the really exciting part) you can make your own client in whatever language, format or platform you like!

I’m really big on open source and open web, and so it’s really exciting for me to think that, although I will still be creating clients in Flash and (with Flash CS4’s leave) for iPhone, there’ll also be a well documented API out there that can be used by anyone. You can easily have pure HTML/Javascript clients, text-based clients to run in terminal windows and so on – and no matter which client you use, you’ll be able to play Archaos with anyone else.

As I said before, I’ll also be making the server and client source available (though the server source will likely need a closed development phase after launch so I can work out bugs, security issues and exploits before I make it available to all) so anyone with a Linux box can host their own server – though I’m not quite sure why anyone would want to do this at the moment, as a server will handle many hundreds, or possibly thousands of concurrent games with ease, and take care of matchmaking, login and so on. In fact this area of development will probably result in the separation of the login/matchmaking master server from the core gameplay servers.

So, to summarise:

  • My current work focus has shifted away from a unified client/server architecture, and my time is now being devoted to creating a robust HTTP-based server for Archaos.
  • In tandem to the server work I’ll have to develop a client for testing purposes, and so the first client may be a simple HTML/JS or Flash visual interface.
  • Once these are at a satisfactory level, I will announce a beta period to work out bugs, and then shortly after that I will release full API documentation for the Archaos server (which will have its own snappy name, already got a few ideas) and allow interested parties to get the ball rolling on their own clients.
  • Finally, I’ll finish and release my own client for Flash, and hopefully soon after for iPhone.

As you can probably tell, I’m fantastically excited by this whole project; indeed I can’t see why this hasn’t been done before – though no doubt it has, and I’ve just not looked hard enough… I’d love to hear your opinions on all of this – and I’d also love to find out if other people have attempted something similar!

Edit: Looks like someone has thought of this – in fact pretty much verbatim! http://web.archive.org/web/20031129175919/http://www.openchaos.org/

November 17, 2009 - Perseverance pays off

Imagine having a web server that stores your objects and data just like a live app. Imagine being able to write in the same language on the server and on the client. Something this awesome has been a long time coming, but it’s finally here!

I’ve of course been playing with Persevere and absolutely loving it. Part of the big delay with ‘the Chaos remake’ has been the complexity of creating a robust way to get data from the clients to the server, and for the server to remember that data and be able to process it in the same way. Well now, thanks to this fantastic piece of kit, I can do all of that. Each server instance is a live JavaScript interpreter, with its own persistent object storage database – i.e. objects created are both accessible at any time, and saved.

What does this mean? Well, with the help of haXe (another brilliant tool) I can now write the code for the remake in one language, and ‘compile’ various parts of it to different platforms. I can write most of the game logic and other critical stuff and then have it work the same on the server as it does if it was just running on your own machine – and Persevere will make sure that it acts in that same ‘in-memory’ persistent way.

There are other projects on the go which I’m going to use as testbeds for Persevere – it’s not without possible issues, scalability being the big one at the moment, as one of my projects may end up being quite heavily used (one hopes anyway) and Java (the underlying tech behind Persevere) may not be up to that kind of task.

I can see Persevere being just the beginning of a whole paradigm shift for many parts of the internet into persistent object-based servers – it certainly doesn’t make sense with rich web apps to have to jump through all the current hoops and endure the inefficiences that go with the current ‘single shot’ model of web languages. Bring it on!

August 14, 2009 - Wiki

Duncan Timiney has recently announced and released a new Chaos remake of his own, and in addition started a Chaos remakes wiki. I’ve updated the info on the old Chaos Enhanced build and I’ll definitely be helping maintain the overall wiki.

Not much new information yet on my new version in development, but what I can say is that the first release will definitely include online multiplayer ‘out of the box’. Exciting times!

June 2, 2009 - The Krypton Refactor

I’m sure it’s not just me, but I’ve found that sometimes some of the most difficult and profound decisions you make on a project only occur when you’re half way through writing it. It’s monumentally difficult to work out the specific heirachy of classes in advance (especially when you’re trying to write something modular) and sometimes you just have to write the damn thing before you realise where things actually should go!

The current project tree

The current project tree

So as I tapped away this afternoon, I realised I’d reached a critical point where I was starting to introduce messy hacks to send messages down and back up the chain of command undergoing several changes along the way – it’d stopped being efficient and had I gone any further with it, it’d have become a big nasty mess. At this point what’s needed is for some of the core classes (notably the game, board and renderers) to be refactored and reimplemented. Thankfully as it turns out this isn’t a large job (another huge benefit of observing OO best practices) and things will once again be going smoothly very soon.

Also, I have to thank each and every one of the people who’ve commented, emailed and otherwise shown interest in this project. It’s a great boost to the old morale to know it’s not only myself who’s excited about playing it! I’d like to take a few moments to clear up a few questions I’ve been asked:

  • Will there be a beta test? Can I be a tester? An online game is obviously going to require people to help iron out the bugs, and so yes, there will be phases of testing throughout the lifetime of the project (as new features get rolled out for instance – hint hint) and when that time comes, I’ll announce it. The iPhone version will be a different matter, as Apple are (understandably) tight about running code on other people’s devices. As such, when the iPhone version is ready to be beta tested, the only people who will be able to participate are those who have an iPhone development license themselves. Again, I’ll release more information about this at a later date.
  • How different will your remake be from the original? This is something I’m very conscious about – basically, Julian knew what he was doing when he created the original. It’s a formula that works through and through (obviously, as people are still playing it!) and I don’t want to tamper with it in any way. However I also see a lot of scope for expansion of the concept (though I might add not to the level of even Lords of Chaos, which I felt over-complicated the game somewhat) with the likes of new spells, new units and so on. It’s important that any changes I make are optional and modular – in fact ‘modular’ has become my mantra for the whole project. I’m by no means the authority on Chaos and its mechanics, and so I’ll leave such things open to tweaking.
  • Why isometric? It’s just so cool! Don’t worry though, there’ll be a traditional style renderer out of the box too!
  • Can I contribute? At this very precise moment, I’m afraid the answer’s no. My plan is to get the game into a playable and respectable state, and then make it open source. Besides I’d not wish to unleash my ghastly uncommented, undocumented alpha-quality code upon anyone else right now. I’ll make one exception however; if any talented pixel artists wish to update the original unit graphics (and maybe other graphics) then I’d be very interested in hearing from them. As nice and retro as the original sprites are (even the fettled ones I used for the old Flash version by Richard Phipps) I have a funny feeling that it’s only nostalgia that’s making them acceptable to current eyes…
  • What’s taking so long? Several things; my desire to get it absolutely right, my commitments to my real life job, my recent weekends spent in the company of my mates and my camera, my evenings spent watching Richard Dawkins on YouTube and working out a way I can apply all that evolution by natural selection stuff to the AI (I jest not!) and the occasional bout of Killing Floor or Left 4 Dead. Be assured this project is not about to disappear, I (hopefully) won’t suddenly be dragged away by ‘real life issues’ and my hard disks and backups won’t miraculously explode.

And now back to the music…