bnolan

Cryptovoxels - an ethereum based virtual world

Recommended Posts

Cryptovoxels is my ethereum virtual world. You can buy parcels of land in the world, then build shops and stores using the in world voxel tools. I started this project in babylon.js about 3 months ago and sold the first parcels of land last week.

A video of the editing tools:

The world is multiuser, I use websockets + a node.js server (using babylon on the server side) so that you can see other players as they explore the world. The voxel engine uses a greedy mesher with ambient occlusion to generate the meshes, and then a custom fragment shader to do the texture lookup in a texture atlas. The performance is really good on mobile, and it works well in VR as well (mobile VR and desktop).

Babylon.js has been really awesome to work with, the typescript bindings are great and the playground has helped me out heaps. I also created a .docset file for browsing the documentation using Dash on os x.

Glad to be part of babylon.js community! :)

Share this post


Link to post
Share on other sites

Super cool, and.booking vacation. : )

Curious, about that websocket, babylon node server, (examples or link)... How does that render out?

 

Share this post


Link to post
Share on other sites

@aFalcon sorry I don't have any code online, but I basically encode the position and quaternion of the players camera and send that to the server, the server then broadcasts that to all connected clients, and I create a player model on each client to draw each other player.

You can use json or a binary encoded packet to send the positional updates, and assign a unique UUID to each player that connects to the server. ☺️

Share this post


Link to post
Share on other sites

Hey @vamos! Happy to explain. :) The world is broken up into parcels (which have an axis aligned bounding box), and these parcel records are stored in our ethereum contract. You can interact with the parcel on etherscan and get the bounding box, and the owner of the parcel. If you are the owner of a parcel, you can log in on the cryptovoxels site, and we let you edit your parcel (placing blocks and signs inside your bounds).

The ownership record is an ERC721 token, which is a standard for cryptocollectibles, so once you own a parcel, you can sell it on marketplaces like OpenSea or Rarebits.

Share this post


Link to post
Share on other sites

Hey, thx for sharing all this with us, bnolan.  You seem like a person we would want to keep nearby... so we're building you a mansion on Lake Babylon... comes with a jet boat.  :)

Ok, so, I was thinkin'... what the heck do people do with voxel worlds?  (never played much Minecraft, but I hear that's THE "voxel thing")

We got this pile of borrowed polygon shapes... you can see them here... http://urbanproductions.com/wingy/babylon/wotas/wotas20/wotas.htm

(control-mousewheel as needed)

There's a playground around that shows them, too.  I forget where it is.  @jerome might know.

Would these kinds of shapes/polyhedra... be a wise "next step" in "shapes that users are allowed to add to a parcel"?  One might call them "decorating mesh" or "proxies".  Proxies... meaning... it is a shape that "represents" a fishing rod, a lady's shoe, a wedge of cheese, a pinecone, etc.  It is much too vertex-heavy to represent each item... as a REAL MODEL of THAT ITEM.  Notice the mouse-overs on those hedra.  THAT... is what you might want for CryptoVoxels world, too, IF you were to allow these "decorating polyhedra".

The user might recognize what CLASS or TYPE of object it is... by the shape of the polyhedra.  But the user might not know what "real life item" it represents, until mouseover.

Each of these polyhedra is a small packet of JSON data... defining their shape.  They do not need mathematical re-calc, other than the BJS standard rendering.  But hats-off to Jerome... for converting their number-packets... to BJS mesh.  Jerome is an excellent vert-wrangler.

Anyway, bn... grab the entire WOTAS thing and run with it, if you wish (change .htm to .zip in URL, to get the zip).  Call it yours, even.  Re-code it.  It is an Infocom-like text adventure game-engine... but perhaps more powerful than Infocom, by a long-shot.  It is all JS.... badly coded by me.  Just a big web page, no server, but COULD use a server.  It's modular and clumsy OOP-ish.  Anyone else, too... run-with-it.  Call it yours and advance it.  It's already, probably, the #1 most-powerful/versatile JS-based text adventure game engine... in the world.  I don't mean to brag, but I think WOTAS currently leads the pack in that sliver-width, completely ignored specialized niche.  hehe

Wanna try some driving?  Click in lower input box... type... ? (enter)

Or type info ... @or ... @oi here ... or @oi me ... or @oi west ... storage  (cool report tables, eh?) ...and you can type almost any Infocom-like verbs, then hit enter.  All directionals... e,w,n,s,nw,sw,ne,se,u,d... and swear words/phrases!  Perhaps MORE verbs allowed than Infocom text adventure games.  Even long stuff... 'hit blue fish with red stick'.  Entering +bot (enter)... then bot, talk (enter) is annoyingly fun.  :) 

Walk around for a while, room to room, and the mesh rotate slower and slower... indicating I'm leaking webGL juice somewhere.  :o  (shutting off the wegGL panel is easy, inside the code, no problems)

There is so much "crap" in that code... it's amazing.  It does "revealings"...  and attachments ('attach hose to spigot')... and containment (open-reveal/close-hide)... and integration-messages, where obj descriptions contain appended 'integrated' sentences about the 'state' of an object, such as:  "'The container is currently open." or "The blue fish appears to be sleeping."  Very Infocom-ish, eh?  ;)

On and on... just a mess of advanced Infocom-game "stuff".  Feel free to install ANY of it... in Cryptovoxels... if you want.  I don't know if puzzle systems and text input (Infocom-crap+) is one of your end goals... but, it COULD give people something to do (adventures, or writing of such)... or something to throw at one another.  Are you thinking moo/mud/mush, where users can create/run code (often called verbs)... stored on the server (on user-created objects), and each user is given some byte quota for such? 

This way, users could dynamically generate the voxel structures on their parcels... instead of manually building them.  If your server is running nodeJS... should be reasonably easy.  But... all objects need .owner props, so their memory-usage can be tallied into the user's byte quota.  And... there might need to be ranks... guest, builder, programmer, wizard, etc, and permission levels on the user-created server-stored code, too.  Only wizards or archwizard can edit/code "core" or "root" verbs/code.

Essentially, it would be a voxel-graphics-enhanced MOO/MUD/MUSH... but not over telnet like the old days.  :)  In fact, we had no graphics on those old moos, but a few of us installed some VRML canvas/plugins in the webpages that the user-objects could generate, when browsed (each obj had a number).  Moos were very "chatty" places.  NUMEROUS ways of sending text-messages from online-user-to-online-user... were invented, and visiting each others' rooms... was very common.  Walk or teleport.  See "LambdaMoo" for more info about moos.

Just speculating... trying to learn what others think.  @NasimiAsl once built something similar to a webGL moo... called 500blog.  It is nice and has tons of potential, but would need some  teamwork to flesh-out.  Definitely geographic... can travel/see far distances... but view-distance might need reducing if lots of complex models were added. 

A few others have built multi-user VR worlds, too, but I can't remember the names/URLs/authors.  Sorry guys, I have bad memory.

Most importantly, I'm wondering if allowing users to put shapes like those polyhedra.... into their CV parcel... would load down their scenes too much.  I imagine it depends-upon HOW MANY they want.  I suppose you have some maxZ view-distance concerns, right?  Too many verts in-view, too many parcels crowded close-together, too much voxel constructions complexity... may cause a bit of bog.  The polyhedra would just add-TO that problem.  :) 

Thoughts?  (thx either way).  Or perhaps, parcel-owners don't see other people's adjacent/nearby parcels?  Walk from one to another?  *shrug*   For King Wannabees... who buy 10 parcels on the first day, they will probably want to view their entire 10-parcel kingdom from a wide overhead view... for admiration.  :)  It could be loaded with complex math-generated voxel castles... and 100 "decorator polyhedra"... all in-camera-frustum at the same time, with shadows and reflections and particle fountains and depth blending.  Yuh... could be substantial.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.