bnolan Posted June 17, 2018 Share Posted June 17, 2018 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! NasimiAsl, Sebavan, coolroar and 8 others 11 Quote Link to comment Share on other sites More sharing options...
Sebavan Posted June 17, 2018 Share Posted June 17, 2018 I love it so much !!! good job and do not hesitate to reach out if you need help Quote Link to comment Share on other sites More sharing options...
jerome Posted June 17, 2018 Share Posted June 17, 2018 excellent work Quote Link to comment Share on other sites More sharing options...
bnolan Posted June 18, 2018 Author Share Posted June 18, 2018 Thanks! It's been a really fun project, and babylon.js has made it very easy. I'll try and share some of my code as time goes on Quote Link to comment Share on other sites More sharing options...
Guest Posted June 18, 2018 Share Posted June 18, 2018 This is so cool! You should add a link to your project here: https://github.com/BabylonJS/Website/blob/master/index.html Quote Link to comment Share on other sites More sharing options...
JackFalcon Posted June 19, 2018 Share Posted June 19, 2018 Super cool, and.booking vacation. : ) Curious, about that websocket, babylon node server, (examples or link)... How does that render out? Quote Link to comment Share on other sites More sharing options...
bnolan Posted June 19, 2018 Author Share Posted June 19, 2018 @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. ☺️ JackFalcon 1 Quote Link to comment Share on other sites More sharing options...
bnolan Posted June 19, 2018 Author Share Posted June 19, 2018 @Deltakosh do I just add a screenshot and a link to the demos section of that page? I'd love to be on the babylon.js site. GameMonetize 1 Quote Link to comment Share on other sites More sharing options...
Sebavan Posted June 19, 2018 Share Posted June 19, 2018 Yup, this would be perfect. Quote Link to comment Share on other sites More sharing options...
Guest Posted June 21, 2018 Share Posted June 21, 2018 Exactly! JackFalcon 1 Quote Link to comment Share on other sites More sharing options...
JackFalcon Posted June 22, 2018 Share Posted June 22, 2018 "binary encoded packet"... excellent! And multi-player tip very helpful. Thank you. Quote Link to comment Share on other sites More sharing options...
vamos Posted June 27, 2018 Share Posted June 27, 2018 This is very intriguing (and looks superb!), but I dont really understand the connection to ethereum. Can you explain to me how that works? Quote Link to comment Share on other sites More sharing options...
bnolan Posted June 28, 2018 Author Share Posted June 28, 2018 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. Wingnut 1 Quote Link to comment Share on other sites More sharing options...
Wingnut Posted June 29, 2018 Share Posted June 29, 2018 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. (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. Quote Link to comment Share on other sites More sharing options...
bnolan Posted July 31, 2018 Author Share Posted July 31, 2018 Wrote a medium post on using mapnik / chrome headless to generate orthographic map tiles: https://medium.com/@bnolan/generating-a-live-map-view-of-cryptovoxels-b8d1e68a067 inteja 1 Quote Link to comment Share on other sites More sharing options...
bnolan Posted August 4, 2018 Author Share Posted August 4, 2018 Wrote a medium post about optimizing / rewriting the voxel mesher: https://medium.com/@bnolan/optimizing-a-voxel-mesher-with-one-weird-hack-5190c673ce84 Quote Link to comment Share on other sites More sharing options...
Guest Posted August 6, 2018 Share Posted August 6, 2018 Excellent writing! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.