MMOFPS APB closes its doors
Too bad. It's barely been three months. Apparently APB was one big gamble. Then again, most new games are. In terms of technology, the game was pretty neat. Although it did get rather repetitive. My guess is that some company will pick up the assets, and hopefully re-use some of the tech developed for APB.
The vehicle customizations in particular were impressive. Instead of a very limited selection, or having to support a ton of custom textures they opted for the ability to have lots of decals and text layered on top of clothing and vehicles. It's almost a light version of Photoshop. Instead of transmitting large custom textures, the game could get away with storing customizations "simply" as a few parameters, and let the client do the heavy lifting of reconstructing the exact texture.
I customized my starter vehicle as a mash-up of FedEx and UPS. Figured I'd take a screenshot before all of this becomes inaccessible.
Print This Post
Game with HTML5 and Erlang
In a previous post I've mentioned web-based gaming, with regards to using HTML 5. There are already a number of HTML5 / JavaScript frameworks out there that all pretty much do a very similar thing, and that is abstracting away the DOM and providing an API that implement game development concepts such as sprites, blitting, and in some cases very simple physics engines.
In 2008 I've done some PHP work for a group of guys that had a project they wrote in Erlang. During that same time, Erlang had some exposure on various programming related sites because of its concurrent nature. So I got Joe Armstrong's book and casually read through it. I had briefly played with Yaws, mochiweb, and various other Erlang tools, libraries and documentation, which I found sparse, and somewhat experimental. There wasn't much of a community. There is trapexit, and a few other sites that offer some tools, as well as blogs, of which most are people just learning the basics.
It wasn't until March of 2009 that I also played with Flex, in conjunction with Papervision3D and Away3D. I was envisioning using Erlang as a backend for a 3d virtual world with Flex and Papervision3D as the client. To make it simpler, I'd wanted to create a space simulation. I thought that modeling a few (simple) space ships in Wings3D and using simple steering behaviors would be something achievable. Much more so than having to deal with terrain generation and animated characters.
It got to the point of having a few simple Erlang processes being able to talk to a client process that was connected to a Flex client via TCP, rendering a polygon to represent the ship. Although it would have been possible to continue down the road, I didn't think I was on the right track. Talks of HTML5 and hints of WebGL led me to believe that Flex wasn't the way to go. I don't know. I just lost interest. Perhaps it was the thought that I wasn't going to be able to produce something quickly enough. I've also had doubts that the math intensive steering behavior component was a good use of Erlang. So, Project canceled.
In June 2010 I stumbled across a demonstration of the HTML5 Aves engine.
I found this somewhat impressive, actually. And had thought about various techniques that might have been used to achieve this.
Most of the web-based games thus far weren't all that fancy. They're either written in Flash or had very simple game play. Or they were single player client-side only.
Various other JavaScript frameworks sprung out of the ground that used DOM elements or the canvas tag to handle simple game simulations. I found the Google tech talk presentation by Paul Bakaus inspiring enough to give some of the techniques a whirl.
So I started prototyping.
Nothing in particular. I'm just trying to play to the strengths of the various pieces of technology I'm using. I have over a decade of experience in imperative languages doing OOP, writing middleware and working with backends, and I'm quite honestly bored with it.
So early 2008 I started dabbling with Erlang, tried to implement some steering behavior (to be rendered with PaperVision 3D / flex) and ran into all kinds of issues. "Game loop" issues on the Erlang side (weak math performance), my lack of experience with functional / concurrency oriented languages, not quite understanding on how to efficiently share data when you're dealing with message passing, lag / protocol issues (flex only does TCP, and there were no docs on whether I could tweak / misuse RTMFP to somehow get UDP-like features). And ultimately, I didn't think I wanted to do stick with Flash, and PaperVision development seemed to have slowed down. All in all, it was kind of frustrating. I couldn't convince myself I was on the right path. So I dropped the project.
But I continued to buy into the power of Erlang, or rather, that concurrency oriented programming is going to "win". And with that I don't mean a particular language, but the message passing / actor model sort of approach. Stackless Python, Haskell, Scala, F#, and Go sort of languages.
I continued to read just about anything about Erlang, watch all the various presentations on infoq.com, erlang-factory, etc. and eventually HTML5 and canvas continued to grow in popularity, and lots of JS frameworks for game development sprung out of the ground, that all essentially do the same thing; manage game loops, game entities, collision detection and various other simple game engine aspects.
Print This Post
The state of web-based Games
Thus far, gaming on the web has been a mixed experience. There are flash games, such as you would find on kongregate.com, and there are simple games written in HTML and whatever is generating said HTML — often PHP, Python, or Ruby. You know, those "click here to do some action", and then refresh the page. Or wait until the timer counts down to 0, which might take a few minutes or hours, at which point you can issue another command. I'm talking about slower paced text web games that don't really have any real-time action elements. Appainter, for example, let's you build such a game. They have videos demonstrating how it works (and it's really neat). But I'm talking about traditional action games. Things you'd see on a Super Nintendo.
Envision, something along the lines of Zelda, or Super Mario World. Now add MMO. Alright, so that's what I'm talking about. Responsive real-time action games. Until fairly recently, this is something that really hasn't been all that easy to implement in HTML, Javascript, and CSS. This has finally changed with HTML 5.
There's been talk about HTML 5 for a while. Some of the technology features contained within, along with CSS 3, are able to replace proprietary solutions such as Flash. The combination of HTML5 and CSS3 has even been referred to as "Web 3.5". Perhaps a bit too cute, but it works. And there's already been some folks out there busy with implementing some interesting prototypes that resemble more traditional gaming. In fact, right now, with HTML 5 and CSS 3, it's possible to implement games that have a similar feature set as nearly anything seen on a Super Nintendo. Canvas is one of the features making this possible. The next step after that is likely to be WebGL, which will provide us with N64-like capabilities on the web.
There are multiple instances of individuals working on their engines, and showing them off on YouTube:
Demo of Akihabara framework by Owen Rubel:
This seems to be an MMORPG engine written in PHP and HTML5:
There are a few other individuals dabbling away at these engines. But from what I can tell, their technology choice bothers me.
In some cases, these are purely client-side libraries, which means they're most likely single player game engines. And while it's still impressive that these can run in a browser, in just HTML and JavaScript, it doesn't strike me as quite the right approach.
In other cases, the server component is written in PHP, which in my opinion is one of the worst choices for a server-side language that's supposed to maintain and synchronize state for clients. Also, this is not a knock against PHP for the sake of it being PHP. I'm quite fond of the language, and have used it for years almost exclusively. I'm a huge fan of developing web applications in PHP and Zend Framework. The language just doesn't have the right architecture in order to support an MMO server.
- For one, you'll want a language that's performant. PHP isn't exactly fast. It shines because it's got a rich function vocabulary and interfaces with a million libraries instead.
- PHP isn't stateful. There's a teardown after every request. Maintaining state would require some sort of outside persistence mechanism. It could be memcache, it could be files, etc. It still requires reloading data and writing it all the time. And although one could implement a daemon IN PHP itself, accepting clients over sockets and what not…well, no, just no. Don't. Neither fast nor stable. Yes it works, but barely, and it's just not meant to do that sort of thing.
- There's no support for concurrency. There's no multi-threading. Although PHP can fork, and can use IPC, it's neither pretty, fast, nor stable. In fact, a huge feature promoted by Rasmus Lerdorf himself is the share-nothing architecture PHP uses. And that's okay (and works great, architecturally), just not when we need something long-running and stateful. Something about the right tool for the right job and all that.
And I think this is where there's room for a new type of web-based client/server MMO engine.
Print This Post
PlayLegions.com - Strategic FPS Tutorial and Timetrails

PlayLegions.com Time Trials
Fallen Empire: Legions is a strategic FPS+Z shooter, the spiritual successor to the Starsiege: Tribes series, and a blast to play.
Although the full game is (at least currently) located at instantaction.com, the new playlegions.com site offers a brief single player tutorial, in a very Portal'esque fashion to teach basic movement skills, which are all but; movement is so much more essential to Legions and Tribes than arguably with any other game.
Introducing new players to what is a fairly complex game brings all sorts of challenges with it. The approach the developers have taken here is commendable; let new players figure out the controls, give them a challenge and teach them attack routes at the same times using the time trials, and whet their appetite for more.
Once these new players decide to join the multiplayer mayhem over at instantaction.com, they won't be nearly as lost as they typically are these days. I'd be curious to know what the player retention has been so far, and how this change is affecting it.
Print This Post
Replacing Legions' Jetpack sound
Sound effects can make or break a game. I played around with replacing the Legions jetpack sound, and the results are actually quite aweful and disturbing.
Test 1 of 4
Test 2 of 4
Test 3 of 4
Test 4 of 4
So, how would it hold up if were to replace that sound with, say, the Hampster Dance, Bananaphone, or the Crazy Frog? Results below
Hampster Dance
Banana Phone
Crazy Frog
Print This Post