Metaplace! That's what!

Build a virtual apartment and put it on your website. Work with friends to make a huge MMORPG. Share your puzzle game with friends. We have a vision: to let you build anything, and play everything, from anywhere. Eventually, anyway. We have to finish first.

Latest Forum Posts

Diehvel on Alpha Closed?

July 24th, 2008 at 8:54 AM PDT
3 Replies, 28 Views

DarknessFalls on Alpha Closed?

July 24th, 2008 at 8:49 AM PDT
3 Replies, 28 Views

Diehvel on HELLO RED NAMES

July 24th, 2008 at 8:42 AM PDT
12 Replies, 127 Views
MetaForums
Media Info

Feel like writing about Metaplace.com on your own site? Maybe you're a journalist? Here you'll find all sorts of materials that might make that easier: fact sheets, screenshots, logos and other artwork, and all the other handy stuff that goes in a Media Kit. Go nuts -- you've got blanket permission to use any of this stuff!

Contact Info
Areae, Inc.
11770 Bernardo Plaza Court
Suite 101
San Diego, CA 92128
USA
Phone: 858-451-2700 Fax: 858-451-2722
For press enquiries, please email:
FAQ

Our motto is: build anything, play everything, from anywhere. Until now, virtual worlds have all worked like the closed online services from before the internet took off. They had custom clients talking to custom servers, and users couldn't do much of anything to change their experience. We're out to change all of that.

Metaplace is a next-generation virtual worlds platform designed to work the way the Web does. Instead of giant custom clients and huge downloads, Metaplace lets you play the same game on any platform that reads our open client standard. We supply a suite of tools so you can make worlds, and we host servers for you so that anyone can connect and play. And the client could be anywhere on the Web.

We hope there will be millions of worlds made with Metaplace. It could get hard to find stuff if we're right, so the portal lets you easily search, rate, review, and tag worlds and games of all sorts. You also get a user profile so you can find each other.

That's sort of the whole point. You should be able to stage up a massively multiplayer world with basic chat and a map you can build on in less than five minutes. It's that easy. Inherit a stylesheet -- puzzle game, or shooter, or chat world -- and off you go! Building maps and places is as easy as pasting in links from the Web, and dragging and dropping the pictures into your world.

What's more, you can link your world to someone else's world. Put a doorway in your virtual apartment that leads to Pirate Vs Ninja-land! Stick your world in a widget on your Facebook or MySpace profile. Mail it to a friend and they can log in with one click.

You can make pretty much any sort of game or world you want. You can decide whether it's massively multiplayer or not (it's MMO out of the box, but you can set it to a lower size if you want). You can decide whether to have physics or not, you can change the keymappings and the interface, the sort of stuff there is in the world, the maps... basically, it's all up to you. Game logic is written in MetaScript, which is based on Lua. So it's easy to make whatever kind of game or world that you want.

Metaplace will support everything from 2d overhead grids through first-person 3d. However, right now we only have clients that do 2d of various sorts, including grid view, 2d isometric, 2.5d heightfields, and so on. We expect to keep working on the 3d client support.

We speak Web fluently. Every world is a web server, and every object has a URL. You can script an object so that it feeds RSS, XML, or HTML to a browser. This lets you do things like high score tables, objects that email you, player profile pages right on the player -- whatever you want. Every object can also browse the Web: a chat bot can chatter headlines from an RSS feed, a newspaper with real headlines can sit on your virtual desk, game data could come from real world data... you get the idea. No more walled garden.

Metaplace is made by Areae, Inc. We're a team of veterans of the game and Web industries who thought that the current way of doing things was kinda slow and didn't give users like you enough control. Check out the company website to learn more about us!

Developer Blog

Cuppycake's Metaplace Journey - Part 2

My Journey With Metaplace (Part II)
Templates, Scripts, Inputs and Commands – Oh My!


At this point in time, Ponyplace was nothing more than a flamboyantly colored background of grass and rivers (made completely of tiles that were available for free on the web) with a gaudy orange and pink pony plopped down in the middle. Not much of a game yet, but I could clearly see the vision of where I wanted Ponyplace to be. The question was, how do I get there?

The first thing that I knew I needed was movement, crucial in making Ponyplace a game rather than a slide show. This was where I was about to start my intimate romance with scripts. *cue dramatic music* At this point I wasn’t familiar at all with templates, but knowing about them now makes this a lot easier to explain – so I’ll attempt to do so.

A template is really a pretty simple concept that took me a little bit of time to comprehend, so I’ll try to define one in terms that will make everyone understand. Basically, every object in your world has a template. It isn’t necessarily its own unique template (for example, every gnoll in your RPG can be from a gnoll template) but every object needs one. What this means is that if I make a gnoll template, and make it so that gnoll has 40 hitpoints, and give it pink hair – every gnoll that I place down in my game using that template will have 40 hitpoints and pink hair. If I want an ogre instead of gnoll, then I make a new template called “Ogre.” Templates are the cookie cutter for all the different cookies I’ll want to put in my game.

I mentioned attaching scripts already but I’ll explain it a little more in detail. The tools allow you to create as many scripts as you want, but they don’t really do anything unless you attach them to one of your templates. What good is a script telling an object to walk if you don’t tell it WHICH object to make walk? This is where attaching comes in. Attaching a script is as easy as making one by clicking a “New Script” button, and then dragging your resulting script onto a template. So if I make a script and name it “Run” and I attach it to the gnoll template, then all my gnolls will be able to run. Neat huh?

 

Another important thing to know is that your player has a template. Of course it does, it’s an object remember? Every object has a template. I talked about this in the last blog post a little bit when I needed to change the art for my avatar from being a stick figure to being my awesome pony. Just to confuse you, there is also a template for your “World” and one for your “Place”. It’s not as complicated as it sounds. Think of your world as being your entire game, and your place as being the one “zone” that you’re in at any given time. You might want to make a script that causes a thunderstorm, and if you only want it to rain in one place you’d attach it to the “Place” template. If you wanted it to rain in the entire world you would attach to your “World” template. It gets a little more confusing than that but that’s really all you’d need to know.


Now that I’ve given a little primer, I’ll explain how I made my pony move. Right off the bat I thought to myself, “How the heck will I come up with the code to make my pony move!!??one11” but it proved to be quite simple. We have this awesome resource called the Metaplace Wiki that has an entire section dedicated to code snippets. These are little pieces of rad functionality that I can completely rip off (read: steal) by coping and pasting it into my world. There happened to be one named “Simple click-to-move” and since I like simplicity – I stole it.

 

-- Inputs and commands
Define Commands()
(1) MakeInput('Click on terrain to move to destination.',
'mouse-terrain', 'click', 'none', 'slide_terrain')
(2) MakeCommand('slide_terrain', 'Slide to destination on terrain.',
'x:float', 'y:float', 'z:float')
end

-- Commands
Command slide_terrain(x,y,z)
(a) distance = math.abs(x - self.x) + math.abs(y-self.y)
(b) slideTime = 350 + distance * 75
(c) SlideObject(self, x, y, z, slideTime, 1)
end

 

There’s the code. Daunting, isn’t it? It’s really not that scary – but I remember being TERRIFIED by this. Let’s break it down a bit.

Let’s start with the second section which is the Commands section. This is the real meat of the script; the part that actually makes the avatar walk around. The first line (labeled with an “a”) just calculates the distance between where you’re currently standing and where you click to move. The “b” line calculates the time you should take to move in, or the speed. The third line, “c”, actually moves the object. SlideObject is a built in function that my world will already understand as long as I give it the right parameters. You’ll notice there are 6 parameters (self, x, y, z, slideTime, 1) and I could explain each one – but this is already a lot more technical then I wanted it to be.

The first section is the Inputs and Commands section. Line 2 just makes a command named “slide_terrain” and line 1 makes it so that command is executed whenever you click the mouse. Easy! Less than 15 lines of code and now every single person who plays Ponyplace will be able to move.

 

So I opened up my player script and plunked this chunk of code right down inside it. I saved the script (which checks for any script errors – luckily I didn’t have any errors or I’d blame someone else for them). My player script comes automatically attached to the player template, but I double checked it just to be sure. I tried to click around in my world and nothing happened.

Oh! Silly me, I forgot to change my world to “play” mode. Worlds have two different modes when you’re in the tools – “Build Mode” and “Play Mode”. A simple button click toggles the two modes, but while you’re in build mode it makes it so that your scripts don’t function so that things aren’t moving around while you’re working on your world. I changed to “Play Mode” and clicked around. Nothing happened. I swore.

After swearing a lot, I decided to just restart my world to see if that would fix it. It did! (Turns out I could have just reloaded my user instead of restarting the whole world, but I hadn’t learned that yet). My pony could now glide gently around the pasture by clicking the mouse. It was incredible! I have never felt so triumphant in my life. After prancing around the office and proudly proclaiming that I am the best programmer who has ever worked on Metaplace – I came down to earth and realized that I hadn’t REALLY done anything other than copy/paste a script. It still felt amazing and made me want to do more and more. After learning how to make my pony walk, it was only minutes of work to learn how to make the pony rear up on its hind legs when you hit space bar. Hitting “E” for eat, made my pony put its head down to the ground. I imported a galloping sound for when the pony ran, and a munching sound for when the pony eats. It was simple and awesome.

I quickly announced to everyone in the office that I have created a masterpiece and that they should come check it out by pasting them a URL right to my game. I had 5 or 6 people in Ponyplace at once, everyone an exact orange and pink clone of my pony (those thiefs!). Everyone could click around and move because they were all “players” and the player template had a player script that contained my movement code. All little objects running around my world, instantly multiplayer with all the same abilities. Watching everyone run around galloping, eating, and rearing up on their hind legs was an exhilarating feeling. It wasn’t much, but I had made my first epic game within Metaplace.

Tami "Cuppycake" Baribeau

Community Manager

Previous Post | 0 Comments | Next Post
Posted on Monday, May 12th, 2008 at 4:22 PM PDT