December 22nd 2006

ROBLOX Badges

Bloxer BadgeThose of you who were online this Thursday evening and Friday morning had a sneak peak of our ROBLOX badges feature. We have had heavy traffic this Friday morning. Coupled with the new statistics and badges pages, our database machine started pegging at 100% and http://www.roblox.com/ went to a slow crawl.  We are fixing right now and have taken the badges pages offline. In the interim, all statistics that go towards badges are still being gathered.

For those of you who are curious about badges (and missed the unintentional sneak preview), I’ll repeat the descriptions of the first round of badges here.  Kudos to Matt and Erik for getting this cranking. 

You will also notice our adoption of the terms “Knockout” and “Wipeout” as standards for one-on-one combat.  We feel knockout and wipeout are a good balance of descriptive, fun and parent-friendly.

Homestead Badge  Homestead Badge – 100 visits to your place
The homestead badge is earned by having your personal place visited 100 times. Players who achieve this have demonstrated their ability to build cool things that other Robloxians were interested enough in to check out. Get a jump start on earning this reward by inviting people to come visit your place.
bricksmith.jpg  Bricksmith Badge – 1000 visits to your place
The Bricksmith badge is earned by having a popular personal place. Once your place has been visited 1000 times, you will receive this award. Robloxians with Bricksmith badges are accomplished builders who were about to create a place that a thousand people wanted to explore. They no doubt know a thing or two about putting bricks together.
Friendship Badge  Friendship Badge – 20 friends
This badge is given to players who have embraced the Roblox community and have made at least 20 friends. People who have this badge are good people to know and can probably help you out if you are having trouble.
Combat Initiation Badge  Combat Initiation Badge – 10 knockouts
This badge is given to any player who has proven their combat abilities by accumulating 10 victories in battle. Players who have this badge are not complete newbies and probably know how to handle their weapons.
Warrior Badge Warrior Badge – 100 knockouts
This badge is given to the warriors of Robloxia, who have time and time again overwhelmed their foes in battle. To earn this badge, you must rack up 100 knockouts. Anyone with this badge knows what to do in a fight!
Bloxer Badge  Bloxxer Badge – 250 knockouts and knockouts > wipeouts
Anyone who has earned this badge is a very dangerous player indeed. Those Robloxians who excel at combat can one day hope to achieve this honor, the Bloxxer Badge. It is given to the warrior who has bloxxed at least 250 enemies and who has tasted victory more times than he has suffered defeat. Salute! 

- Builderman

AddThis Social Bookmark Button

December 21st 2006

Santa’s Winter Stronghold Revealed

Santa's Winter StrongholdWhen I was in school, my teachers would sometimes comment that I had a warped sense of humor. Anyone who has played the new Christmas level will probably agree. I won’t even tell you what I had planned for the Thanksgiving level before it became obvious there would be no time to work on it. Ok, one small hint. It was going to be set in Roanoke.

But that is not what I want to talk about today. Today I want to talk about the new Christmas level. When I started to design the level, I was interested in creating a new Roblox game type that did not directly center around combat. I also wanted to try to make a level where time bombs were useful and dying meant something. Finally I wanted to make a team game. Santa’s Winter Stronghold was the result and I do not think that I was entirely successful — it is a pretty looking map though.

I tried to make the map display instructions at the start of each game, but I have noticed that sometimes they go by too fast to read. Here is how the game is played:

  • Each game lasts 8 minutes. At the end, the player with the most points wins and a new game begins.
  • There are two sides, Santa vs. the Elves.
  • The elves are looking for presents (worth 1 point each) and are trying to avoid the super-powerful Santa (any elf that knocks off santa will get a 3 point bonus, though).
  • Santa is looky for those pesky elves. He gets 1 point every time he bloxxes one. Anytime Santa accidently bloxxes himself, he loses 5 points. Be careful with those rockets, Santa!
  • Santa has two special powers: the Multirocket and the Jet Boots. The former lets him shoot rockets more than 3 times more rapidly than normal. The latter lets Santa fly for 9 seconds at a time (select the boots and hold down the mouse to use)

Pretty simple, but it took me more than 800 lines of lua code to implement it. Blah.

Since you’re here, I’ll give you some insider hints on how to play this level.

Elf Hints

  • Number one thing. Get over the bridge into Santa’s fortress right away. Santa will be out to blow it up and then you will have to take the long way in.
  • Killing other elves doesn’t get you any points. Only finding presents and getting Santa. Teamwork may be a good strategy.
  • There are places in this map where bombs can be really useful to blast through walls. Bombs in this map explode more quickly than on other maps.
  • There are three main treasure troves of presents on this level: in the black tunnel by the frozen lake, in the far corner of the map behind the ice, and in Santa’s throne room. You should try to get there before the other elves.
  • If you can’t reach a present, you might be able to knock it loose with a snowball.
  • Dying is a bad idea because elves always respawn at the starting cliff. It is a long walk from here to anywhere. Therefore, you should be more careful than in a regular BrickBattle game.

Santa Hints

  • Blow up all bridges and stairs. The harder it is for the elves to move around in your fortress, the longer it will take them to steal your presents. It also makes being able to fly a bigger advantage. 
  • You can’t pick up presents directly, but many are positioned so that you can knock them off the map, where no elf will ever be able to pick them up.
  • It takes a while to get from your starting location to where the elves are - this is by design. There are two quick ways out if you look for them.
  • Be aggressive. You’re better armed than the elves and you can fly. Try to pick them off one by one, rather than fighting everyone at once.

Well that’s it for today. I’d be curious to know if anyone has found all the presents that I put in this map, some of them are quite hard to find (and others are very hard to get to!)

- Telamon

    Elves on GuardSanta's VaultSanta's Throne Room
AddThis Social Bookmark Button

December 18th 2006

The evils of optimizing too early…

I write the physics code in ROBLOX and have just finished a major re-write to add articulated characters.  The new engine is fast, simple and easier to maintain (we hope!).  When I look at what I threw out, I see lots of code that was prematurely optimized.

Some background on the ROBLOX physics engine.  It’s designed to handle colliding bodies and joints in roughly order-N time.  This means that 1000 colliding bodies should only be twice as slow as 500 colliding bodies. The engine is constantly evolving and has not been highly optimized.  For example, there are many areas of the ROBLOX engine that would lend themselves to SIMD code (doing four numeric operations in parallel).  This has not been done yet.  The engine has been designed to work on n-core processing architectures, but once again we have not made this optimization.  We’re looking forward to getting our hands on a quad-core box to see if our physics really runs 4x faster!

In earlier versions of the engine I developed several high-speed container classes to hold lots (20,000+) of objects with very fast insert, find, and erase operations.  For those of you that are familiar with the standard template library, you know that each of the container classes has some problems in this area.  A std::vector will be slow in the find operation, because you have to traverse the complete array, as will a list.  A std::set carries the overhead of a binary tree, and the find operation is n log(n).  To make a long story short, the new engine is able to exceed performance of my prior versions while just using std::set instead of my finely crafted high-speed containers.  In time I will put my high speed containers back in, but it’s good to know that they are icing on the cake – core algorithms are much more important for performance.

Moral of the story – (for me at least):  The more you optimize, the more calcified your code becomes, and the less your C++ looks like the pretty examples from a college algorithm textbook.  And the harder it is to make sweeping changes that affect performance in a big-picture way.  Design for speed, but do the hard core optimization when the big picture is nailed.

- Builderman

AddThis Social Bookmark Button

December 11th 2006

Now We are 10,000

Sometime over the weekend we reached a milestone: our 10,000th Roblox user account was registered by “destroyman”. I haven’t seen him online yet, so maybe he is just sitting on it until he can flip it for a profit on eBay. We would love to be able to award our 10,000th user some sort of prize, but we don’t have anything to give at the moment. Maybe the 20,000th user will be more fortunate.

stcsean47 writes:

Who was the original creator of the crossroads? Tell the truth!

Crossroads, June 2006 For the time being, I am more or less the designer and maintainer of all official Roblox levels. But it wasn’t always this way. I joined the Roblox team just as they were rolling out the first multiplayer Roblox level - a very early version of Crossroads. This version featured a castle made by Erik and a white house and playground constructed by Builderman. There were two weapons: the slingshot and the rocket launcher. I remember the first time we noticed a user, “dergenx”, actually playing our game, everyone on the team got on and played with him for an hour. It was very exciting. Since the original Crossroads was published, it has been added onto many times as we push the state of the art forward. I took over managing the official maps soon after the first version of Crossroads was released.   

I have uploaded the original Crossroads to Roblox. You can visit it here. If you check it out, I think you will see that we have come a very long way in the past couple of months.

Our development process may seem slow to the outside observer. We manage to put out a major feature release every month, more or less. We put out minor feature releases and bugfix releases whenever we can, generally at least twice a month. That’s a development cycle of ten days for some features. In comparison, tradition software companies like Microsoft tend to put out new versions of stuff every 18 months. It may be true that Office 2007 has a more complicated codebase than Roblox (maybe), but it is also true that 18 months is a lot longer than 10 days. We must be insane.

AddThis Social Bookmark Button

December 8th 2006

Welcome!

In the beginning there was an empty darkness.. The only thing in this void was a black brick, Two-By-Two. Two-By-Two was the Alpha Brick, the First. Copied, pasted, and recolored a million times, Robloxia was built out of nothing from the images of Two-By-Two. These were the early days…

The Chronicles of Roblox, VI.203

Welcome one and all to the Roblox Developer’s Journal. Like everything in Roblox, this journal is an experiment. The idea is that members of the Roblox team will post here to share their thoughts about different aspects of the game, give hints, answer questions, and occasionally post some sneak-previews of what is in the works. Builderman wanted to write the first post to the roblog, but unfortunately he is buried under a mountain of gnarly C++ and merciless graph theory. We all hope that he recovers soon. 

One thing we at Roblox have been thinking hard about is how to make sure users can find fun maps on Roblox when they want to play a quick game. In the past this has not been a problem since we didn’t have all that many users, and only a handful of those users knew how to make cool places that others would want to play in. Recently, the number of users who are proficient builders has exploded, as evidenced by the abundance of cool new maps that are published to Roblox every day. If you go to the “Browse Places” tab, you’ll now get exactly 100 pages of places (as of this writing). That’s 1000 places. Let’s say you are tired of playing on the newest maps and you want to find an old favorite. If you remember what it was called, you can just search for it. Otherwise, you are hosed. Your best option right now is asking a veteran player what the cool maps were three months ago. Clearly we can do better than this.       

Some of the solutions were are considering are:

  1. Letting users give a “thumbs up” to a place. The places with the most “thumbs up” are probably pretty fun. Search results can be sorted by “thumbs up-ness” so that the best ones appear at the top. There are problems with this idea, mainly that once a place has enough “thumbs up” it will always be listed at the top, as new players will “thumbs up” it even more.
  2. For each place, track the amount of total time visitors spend there. In theory, people will stay longer in fun places, so we can rank places this way. This scheme has the same problems as above.
  3. Bring back our “Cool Places” feature, but make it “Cool Places of the Week”, where only the last week of traffic or rating data is used to rank places. Probably we would take the top 20 or so places on Roblox each week and everytime someone visits the Roblox homepage, we would randomly show 5 of them as links.
  4. Having a weekly “Blast from the Past” feature, where we somehow pick one really cool map that no one plays anymore, and host it on an official Roblox server.

We welcome player input, so if you have thoughts on this, post them as a comment to this entry or on the Roblox Forums. In the meantime, I have pulled out some of my old favorites that new players may not have ever seen. So if you are looking for something fun to play, check them out.

Sites to See

Tools Preview Since you’ve read this far, I feel like you should be rewarded with a little sneak-preview of what I am currently working on. If you look closely at the picture (click to enlarge), you will see at least one problem, so obviously it’s not going to be shipped tomorrow. Soon, though.

- Telamon

AddThis Social Bookmark Button