About this blog
My journal as I develop a new browser-base online RPG
Entries in this blog
This post provides a bit of an overview of my plans for my as-yet unnamed RPG. One of the biggest lessons I learned with my previous game (which I talked about last time) is that players want to interact. The in-game chat was pretty much an afterthought in my previous game (in fact, it was the very last feature I added before going to "alpha"). Most of the work I did post-release was community-based features -- an alliance system, one-on-one and group private chats, and so on.
So I wanted to make sure my new game supported a vibrant community right from the beginning. Also, I was a little tired of the limitations of working with a phone, so I wanted something that ran on a PC. But more than that, I wanted something that was cross-platform (I personally use a Mac laptop and a Linux workstation, so it needed to run on those platforms as well as Windows, of course). Because I'm a masochist, I decided make the game browser-based.
The first iteration I was using a directly and drawing 2D sprites. It worked pretty well, but performance was generally pretty horrible -- and that was with practically nothing on the screen! I actually got pretty far with that 2D engine, including multiple players, chat, animations and so on. Here's a video:
That video didn't have pathfinding, but that was also added before I decided that the performance just wasn't there. My plan was going to be to use webgl to speed up the 2D engine, but as I was coding, this happened
So I made it fully 3D with three.js as the backend renderer. In fact it's actually not that hard to get webgl up and running -- the hardest part, at least for me, was content. The initial "rewrite" was still talking to the same backend server, so it still supported all those wonderful multiplayer features, but I had an MD2 model (from Quake) as my main character, and some procedurally generated tree I found somewhere as decoration.
The most interesting thing about the rewrite is the terrain. I found this cool article on Gamasutra and implemented it as a GLSL shader in three.js.
Then I taught myself how to use blender to create some basic 3D objects and animations. All the content in the current gameplay video was made by me in blender. Yay!
So that's where we are today. I've have a few ideas for the basic premise behind the game and also some information on how the game has been "architectured" (I put it in quotes because it's much more organically developed than architectured...)
So I've been away for the last 5 or 6 years. It's hard to believe my last post here was way back in 2009! I haven't been entirely away from gamedev though. In fact, a couple of years ago, I released a (to me at least) moderately successful multiplayer strategy game on Android, called "War Worlds". I say "moderately successful" because it never really made any money (it made enough to cover the cost of hosting and that's about it). But at it's peak, it had around 2,000 active players (around 400 of which logged on every day).
Here's some screenshots from the game, in no particular order:
There's a lot of stuff here that I'm quite proud of. I developed what I think is a pretty cool tool for rendering images of planets and stars:
I blogged about the implementation of this algorithm: part 1, part 2, part 3, part 4, part 5, appendix.
I'm also proud of some of the other blog posts I wrote which got a reasonable amount of attention in the "hacker" community. For example, this post complaining about App Engine got to the front page of Hacker News. Another one I wrote on the crappiness of MySQL was also quite popular (complaining about things seems to get a lot of attention!)
However, all things pass and a few months ago, I decided to move on from War Worlds. I open sourced the code, found a dedicated player to host the server, and basically ended my day-to-day involvement with the game. It still has around 60-80 players logging in every day, and I've not completely abandoned it, but I probably won't be doing any updates any more (unless someone else picks up the slack and wants to submit code changes!)
Now, I've started work on a new project. It's an online multiplayer RPG which runs entirely within the browser. Over the next couple of weeks, I'll be revealing the work I've done on it so far (I want to start this journal here to basically document my progress on the game, mostly for my own benefit as I find seeing the progress to be quite rewarding) but for now here's a YouTube video I took of the "gameplay" (such as it is) as of a few weeks ago.