ROSE Online in the browser

A story in pictures - aka how three.js and javascript enables you to make shit real quick.

ROSE Online is an MMORPG that Brett and I had huge amounts of development experience in, our coding careers (and friendship!) began in the private server emulation scene back in around 2008 when we were like 14 years old or something. Fast forward several years and suddenly one day I receive a message from Brett Lawson saying he wants to try make a ROSE client in the browser with WebGL and three.js, after some discussion we got a bit carried away and suddenly it's 30 days later and we've barely slept, but we actually came up with something pretty impressive.

The source code for this project is available on github:

All the screenshots and their timestamps come from both of our accounts.

2014-09-15 02:54:55 It all started on the 15th September 2014 at 02:54:55am, where we rendered a simple heightmap and tileset.

2014-09-15 02:55:39 10 minutes later we could render a full map with the correct tilemap.

2014-09-15 03:43:35 About 50 minutes later we could render the static objects on a map too... In roughly 1h30m we managed to go from nothing to this:

2014-09-16 03:37:11 Starting on rendering NPCs.

2014-09-17 02:08:07 We have some basic character rendering started. It's possible we have a network connection to the server here too as this is a character standing on the character select map.

2014-09-17 04:12:19 Trying to get lightmaps working here.

2014-09-19 02:44L04 Looking pretty amazing with lightmaps!

2014-09-19 10:21:49 4 days in to the project now and we have the map rendering with full lightmaps and water rendering

2014-09-21 06:04:42 After only 6 days we were able to get in game, move around, and see other players.

2014-09-21 06:23:40 However we clearly still had some rendering issues.

2014-09-23 01:27:00 Then our attention turned to particle effects, after 1-2 days of work we had particle effects working, parsing from the .PTL and .EFT files.

2014-09-23 08:04:37 Looks like we fixed an error with tilemaps here.

2014-09-28 04:19:42 Getting monsters rendering!

2014-09-29 02:25:22 Time to get started on a user interface.

2014-09-29 02:31:25 And time to focus on playability, this was our first properly functioning character select screen.

2014-09-29 02:32:26 Conversations with NPCs were based off local .CON files, which referenced strings in .STL files.

2014-09-29 02:36:25 They also relied on .QSD files to allow for conditions / actions to happen to decide what text to show you or what action to take on clicking text.

2014-10-03 03:48:04 So less than 3 weeks have passed and we have something resembling a functional client...

2014-10-03 03:48:37 It still has it's entertaining bugs though, we used a downwards raycast to calculate where to place an NPC, except this one is meant to stand under a tent...

2014-10-03 06:44:02 Entertaining bug #2.

2014-10-03 06:38:50 Basic attempt at in game combat.

2014-10-04 01:27:58 Now we had combat in the game, I really wanted to get the client into a position where we could complete the first quest line to get access to your profession, here's the Quest UI which shows your progression along your active quests.

2014-10-04 01-57-40 Getting pretty excited here, I am able to progress along the job quest, kill the flowers and take their precious seeds!

82014-10-04 02:08:54* Ahhh after some hardcore grinding I'm about to complete the job quest and get my job!

2014-10-04 02:10:31 Fuck... maybe next time.

2014-10-07 03:15:22 What other features does an MMO client need? Parties! Now i can finally send Brett abusive messages in private (and we completed a job quest together!)

2014-10-08 02:21:46 Wow! It runs on an Android tablet.

2014-10-08 04:09:40 Awful frame times in game though (~250ms).

2014-10-08 05:35:31 Added displaying for character and status related particles.

2014-10-08 07:51:55 Looking pretty good with the interface!

2014-10-10 02:32:10 Frame profile.

2014-10-13 07:48:37 It's been a month and we made some amazing progress, but after working on it all day every day we just got burnt out. Here was one of the last screenshots I made before we stopped, it's the first screen you see when you open your browser.

2014-10-20 03:46:09 Bonus picture of when I was trying to fiddle with character hitboxes a week later when I was bored.

2014-10-26 09:56:05 Bonus picture #2 showing top down view of terrain chunking in action.