This is _MASSIVE

edited in Projects
Heya, first post. woohoo!

This is a _project I've been working on for a few years, finally ready for IPT - initial public _tinkering.


Download the _MASSIVE alpha 0.1 here

_MASSIVE is a _massively multiplayer open sandbox _universe with _crafting. You can even upload your own photos or textures for any object you own. Is it a game? A new _Internet? Is _MASSIVE the next VR Facebook? I don't know, but it's happening.

The vision:
The grand vision is another universe, where real homes and shops exist in VR space. Want a delicious pizza? Hop on _MASSIVE and Teleport to the pizza restaurant, browse the menu, and order right there. You get the whole pizza parlour experience without the queue.
Want to visit an Art Gallery in _New York? Hop in the teleporter and you're there, along with other art lovers. Chat with people around you about the importance of mauve, or even buy a painting, real or virtual.
Have virtual VR meetings. Hang out with your friends in their VR home they built while eating the delicious pizza you just ordered.

Features:
Full size universe to explore and build. That's 16,000,000,000,000,000,000,000,000, 000, 000km in every direction! It's one continuous, multiplayer universe. You can walk from any area to another without teleporting, or you can teleport to zones because teleporting kicks-ass and life's short.
Add your own zones to the public zone directory. A zone address is like a URL. Or a bookmark.
All your favourite Solar System planets, to scale. Build anywhere on Mars. Build on the Moon. Or even on Earth if that's your thing.
Universe sized physics, including localized gravity. In _MASSIVE there is no single "UP" vector. Up depends on the real gravity around you according to Astrophysics calculations (Real Astrophysicians please don't examine my numbers too closely). When you build you are always building perpendicular to the current gravity. Gravity is calculated based on all the astronomical bodies around you, so if you're floating in space you may fall towards the moon, or earth, depending on your location. Just like Kerbal!
Upload your own _textures. Build a house, build a wall, add a picture frame, upload a photo of _granny. It's your space, do what the heck you want.
People can't build in your zone. Once you lay a foundation block you have claimed that property. No land grabs! Early adopters will get prime properties (I heard that Waterfront virtual property is going to be worth a lot!)
Maps of your favourite planets. Just click and you're there, more or less near the surface. Not to worry, there's a teleport to surface button if you don't like skydiving.
Streaming images and (coming soon) 3D models. That means you only download the content for the zones near you, and it's all done behind the scenes.
MultiThreaded environment. _MASSIVE starts up quickly, content is streamed in.
Public JSON API. E.g. City planners can upload road segments via an API.

Current limitations / in development / bugs:
100 crafting objects per player. 100 concurrent players. (this is just during testing, release will be unlimited)
Very much in development. "It works on my machine". Some testers would be appreciated. Early _Voortrekkers will probably get prime land.
Graphics are not brilliant yet. The priority has been to create a craftable universe before I polish the furniture.
Very few building blocks. (A foundation, walls, a doorway, cubes, pictures, a wedge/ramp, and big light spheres)
Navigation is a little awkward. Quaternions on a flat earth are easy. Quaternions in real space with a localized gravity vector are more complex.
No character animation yet. Only 2 fugly-ass avatars.
Text Chat is for all, no proximity yet. Just text chat for now, will implement proximity voice soon.
No economy yet. (in development. _Blockchain?)
Server is limited. I've hard-limited the max concurrent players to 100 for now while I figure out how to scale the server.
(Vertical? Horizontal? Diagonal? Trans-dimensional?)
Windows 64 only (for now). Anyone wanna help with a Mac port?

Some of the challenges I've overcome/am overcoming.
_MASSIVE is native C# and OPENGL. Yup, it's not written in Unity. Unity is simply not up to the task of rendering full-size anything without a lot of hacks due to floating point precision problems. So I've built my own engine with Blackjack and ... big coordinates.
_MASSIVE has very few spatial hacks, coordinates are in real meters, up to the full 64bit of 10^308, although the usable portion is about 1/100th that, which is still the size of the Universe x 2. Planets are to scale.
Adapting a physics engine to work in 64bit coordinate space. I chose to mod Bullet, purely because it's free. Bullet has a few issues / limited documentation, but it works. Creating a collision planet mesh in Bullet is no small task.
The world is big. Rendering a full size Earth requires a lot of textures, so I've chosen a simplified mesh (simplified by our eyes, it's still the max density possible for a single mesh in OPENGL). The planet _Meshes still needs to be subdivided using ROAM or some planet rendering technique, that's in the TODO.
The server has to do _spatial stuff on a universal scale. Obviously you don't want to load the entire universe, just what's around you. Nearby objects are streamed to the user/player.

Everyone is welcome to jump in the _MASSIVE universe and build. All you need is a Windows PC and an okay graphics card with 2GB RAM. (I still have to optimize textures and culling)
Download the _MASSIVE alpha 0.1 here

Some in-game screenshots:

Crafting toolbar:
image

You can build teleporters and texture them how you want. (warning: crappy developer art)
image

Someone built an art gallery near the Constellation Orion. It has great atmosphere.
image
Thanked by 2bischonator Jay

Comments

  • edited
    Here's a video of a first BIG test - crafting a few walls on the moon,then flying to earth and crafting some more, all seamless.
  • edited
    I was having problems with Z-Fighting on the Earth clouds (they're 67000km radius), so implemented a dual camera system.
    The first camera renders nearby objects 0.1m to 100m, and the second camera renders 100m to 10000000m. This did wonders for the z fighting. Here's a video of the new improved camera system.
    p.s. if you haven't yet, install Nvidia Nsight into Visual Studio, helps a ton with OpenGL debugging.
  • This is an enormous undertaking, and you've achieved a lot so far by the look of it. I'm going to avoid the obvious concerns about scale, maintainability and all that for now because I'm curious about the similarities to- and differences from other mmo craftable universes. Where did you take inspiration from? Did you check out second life at all? They had some really interesting blogs back in the day on how they handled both server and client side challenges. Your mention of virtual real estate also reminded me of that, I remember the SL property booms and busts back in the day :)
  • I remember there being a talk in the past little while where a developer who was talking about having massively differing scales struggled to make it feel good from a design point of view. Something about if things are at their realistic scales and distances, then flying between areas is either far too fast, or tediously slow; that the universe itself is very sparsely populated, so that the actual "fun things to do" per volume at real scales is very low. I can't remember if it was the new Beyond Good and Evil, or No Man's Sky, but that sounds like it'd be something to have to solve here too.

    Is this primarily a creative sandbox, where you're trying to make the most well-decorated place in the universe that you can? It's not very clear to me what it is players would actually do. It's certainly interesting as a technical challenge though!
    Thanked by 1mattbenic
  • edited
    @mattbenic That problem of _scale, both physical and technological, is certainly a fun _challenge.

    Right now I have limited texturing, so flying very low around planets almost feels like standing still. Check in the top-right of the video to see the speed. Only when you build something do you notice how fast you're going... Maybe I need to spawn particles and things to help with that feeling.
    After the terrain _tesselation is done there will be more detailed ground textures and features like grass and trees and buildings (Geometry _shaders!).

    I've played with Second Life and RoBlox, enjoyed them earlier on, but Second Life has become almost unusable now, too many big custom meshes and slow loading textures. It's also hard to build stuff for it.
    _Massive is easy. I want _granny to be able to build a little house and put up some photos and invite friends over for a laugh.
    I am inspired by Rust's _crafting system, which is genius, building houses without a 'click and drag' 3d widget... and I took notes from Unity's scenegraph callbacks...

    _MASSIVE is a continuous universe. You can fly from one 'game' to another without interruption. There's also a plugin architecture, so user-written scripts can load and unload depending on location. (Security!)

    As for _scaling the _server, I have the advantage that _MASSIVE is not a _bullet-fighter like _Battlefield, so syncing objects is lower priority, even <1 sync per second is okay, and it can happen via a message queue like Rabbit or even via Akamai's CDN (There's a trick that if you end a json query with .jpg it goes through the internet 5x faster because of image priority ISPs). I'm also running a Windows server on AWS (up to 16000000 concurrent connections!!!!) and can easily scale vertically (at a price), but if it grows I may migrate to a dedicated box or shard some zones across multple boxes (the client won't know, it will still be a seamless experience).
    It's honestly not much more load than a PHP host. (actually a lot less because there's no 1MB of js + html Angular/webpage junk to send out, and user-textures are served from a CDN, not from the spatial server. To boot up your initial location is under 56kb! Protobuf!)

    @Elyaradine _MASSIVE is... a continuous universe. It's definitely a persistent multiplayer sandbox. I became bored with the WordPress internet and want to build a new creative space for everyone. In _MASSIVE you can do what you want. Right now I'm building a pizza restaurant that I want to link to a real one, also integrating some OpenStreetMaps stuff.

    The concept of popular zones is important, so that people know where the social action is, but have the freedom to fly anywhere in space. Might build a working racetrack at Kyalami... anything is _possible...

    It just occurred to me... because each object is _timestamped it will be possible to rewind time and watch the _universe being built from nothing... might be a good tool to record history...

    Eina, long essay. But what would you want to do in a virtual universe?
  • Where are you based? Will you be coming to one of the meetups sometime to get focused feedback from people getting hands-on with it?

    I last visited SL long before they introduced custom meshes, but soon after they introduced sculpted spheres (using textures to deform the limited face count sphere primitive). At that point, their choice to limit building to a handful of primitives, with basic transforms allowed on each, felt like a great balance from an ease of creation point of view (everyone understands building from basic shapes) and server/client load (they know exactly what load any given primitive places on server and client hardware). Their selection gave an optimal balance of simplicity and creativity (you're not constrained to the idea of creating buildings because all their primitives are related to creating buildings.

    The server side of it is interesting, we don't get much discussion about that here-largely because the kinds of titles typically suited to single man teams don't really make use of any server tech. Scaling definitely isn't an issue you'll need to deal with anytime soon, but when you discuss scaling and what can be handled, is this based on testing or some calculations based on others' tests? It's amazing how quickly the complexity of your solution can outpace what you thought your server architecture could handle :)

    A small thing, the underscore prefix to random words in your posts.. I get why you're doing it, the relation to your project name and all that. But you're not marketing to us or at least shouldn't be because we're not worth the effort. It honestly just makes your posts a bit harder to follow :)
    Eina, long essay. But what would you want to do in a virtual universe?
    Personally, I don't enjoy crafting games at all, and I get cranky when "open world" is applied to games that would be fine with a menu based system to jump between menus. So I'm clearly not your target market ;) I'm just here because I'm interested in your tech choices.
  • Hey John,

    Firstly, WELL DONE. I'm mega impressed in the fact that you built this from the ground up sans engine. If nothing, it is a heck of a portfolio piece. It brings back memories of the mid 90's VR craze when everybody surmised that online malls would be a virtual 3D place. I think lawnmower man had something to do with this.
    Just a note that this craze was short- lived because nothing beats the practicality of a simple GUI when shopping.

    I don't know where the game is here but congrats on the technical achievements.
  • edited
    @bischonator Thanks! I now consider the the old-school internet way of filling in forms... _interesting. As interesting as doing homework. Things will be much simpler with proximity chat.
    Yeah, old, old school VR was quirky and ahead of its time (Get your money for nothing and your chicks for free...), but look at where it's headed these days. Dual Universe looks stunning (although Voxel meshes have their own issues with physics).
    RoBlox is pretty cool, even 5-year-olds can use it, despite the complexity. Old VR also didn't have connected cloud services like AWS to _exploit, or GLSL to make pretty effects.

    @mattbenic okay mr _crankypants ;) ... but you've hit the nail on the head, because that's the point of _MASSIVE, to be a creative space for people who love creating (in any form), just like the internet was in the beginning. It was fun to do, and layout didn't matter (tables! Flash! Experiments!).
    I find _scaling communities more of a social problem than a tech one... I'm in CT, but far from town.

    As for _UI, yes indeedy, that fine line between teleporting (which is essentially what a menu does, teleport you to a different space), and real space...

    As for difficult... hmm, I tried to make the front-end in Unity several times and hit against Unity's limitations - 32bit coordinates limit the playable area to +-20km... hacks like floating origin do bad, bad things to physics and audio.
    Rust is a prime example of how inefficient Unity gets at real-world scales. Unity is single threaded - boo!
    _MASSIVE has 64bit coordinates, 64bit memory, and multicore threading.
    It's actually easier to create a proprietary engine, because I don't have to work around Unity/Unreal's crappy "mobile first" way of doing things. If you've ever tried to create a planet in Unity you'll quickly find stuff going horribly wrong, never mind the whole _universe!
Sign In or Register to comment.