Voxel.js: Minecraft-like Browser-Based Games, But Open Source
Paul Fernhout writes with a snippet from Joystiq: "Voxel.js is a new open-source project designed to allow anyone to create 3D games that run directly in a browser. Created by Max Ogden and James Halliday, Voxel.js is based on JavaScript and WebGL, and makes it relatively easy to build Minecraft-like games that play in browsers like Chrome." Paul adds a link to this interview with Max Ogden about the creation of Voxel.js in 22 days. The main site is at Voxel.js.
Call me silly, but I think there is something to this "everything through the browser" malarkey. That's not to say everything should be on the cloud, but I don't see why we can't push non-critical functionality on rendering engines. A lot of mobile apps are just native interfaces to webservices anyway.
If computers were people, I'd be a misanthrope.
needs webgl to run, I think that would have been more important to mention than the whole js thing?
this comment is best viewed in ________
and they recommend you install a web browser that is made by the largest advertising company in the world.
this generation is nuts
Hi, I'm the Max mentioned above. Here is a post I did yesterday with more background details on the project: http://maxogden.com/bringing-minecraft-style-games-to-the-open-web.html
Slow as hell.
The cross-platform install process is easier with Javascript than just about anything else. That is the biggest win here -- beyond the idea of open source virtual worlds which others have done before. Perhaps that didn't used to be the case years ago, but it is now for any software that is going to quickly get mass adoption. Still, it's true that Android and iOS both try to make that easy -- if you've bought special hardware. HTML5 and related technologies like WebGL are trying to create standards for being able to use back-end engines, and Voxel.js taps into that.
Here is Alan Kay talking about why Dan Ingalls started working on the next generation of Squeak (the "Lively Kernel") in Javascript:
http://bitworking.org/news/290/JavaScript-is-the-new-Smalltalk
Still, I tried to run Voxel.js in Firefox 18 on the Mac, with having to turn on "experimental" (for my mac) WebGL support just for this, and it crashed my browser every time. Nonetheless, it's only a matter of time before good 3D support is in browsers everywhere. Personally, I'd have rather seen a well-sandboxed virtual machine as the standard in the browser (whether Java, Parrot, Lua, or anything else), but Javascript is what we got.
Actually, I've been wondering if I could run Voxel.js on top of Java running a Javascript engine that talks to a 3D backend? As a software developer, I'm willing to go through more install hassles, even if I know most people aren't.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
In terms of graphics, it wouldn't be so hard to make surfaces a little bit more varied. Why the blockiness in Minecraft? Why not give people roundish and triangular things to play around with too?
It's 8-bit retro.
Great blog post, Max. Thanks for chiming in. I've enjoyed your previous instructional materials about CouchDB and other things like "JavaScript for Cats".
http://jsforcats.com/
So far our cat has only expressed limited interest in that website, but maybe over time interest will pick up? :-)
For some reason, I think it would be really cool to put some sort of Couch-like database backend to this, even though I can't think of what it could be used for? :-) But that is the beauty of your well-architected modular approach to Voxel.js (which you mention in comparison to other systems out there). It should be relatively easy to make an interface to any data source (whether hosted using CouchDB or anything else) using standard web protocols.
An example of that is what you did when you made a module that "dynamically renders any area of San Francisco into a crude voxel world". My wife worked towards doing that with data from the USGS for Minecraft, but there were various difficulties trying to transform the data. As a trustee of a local small community historical society, which has trouble competing for attention of the younger crowd against the web and apps and such, I've been thinking that it would be great if communities could make virtual worlds that local residents could visit. There could be different versions of these worlds, for the past, the present, and the future. Then people could discuss history, current issues, and long-term planning in them.
Although there is a lot to be said for face-to-face get-togethers too, like with your Gather project.
https://gather.at/
This modular extensibility of Voxel.js seems like a huge win long-term, as does being easy to install as more and more browsers improve their support for WebGL. I feel it also might be cool to run Voxel.js on Java using the Rhino JavaScript engine and some Java 3D backend, for people to use if their web browser still struggles with WebGL.
Anyway, thanks for making this fantastic hopeful project! I hope being on the front page of Slashdot brings in more developers and users.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
Did anyone else look through the examples on Github? There are basically 0 comments within the example source code.
The author has made it fun for a lot of people to mash up and build their own Minecraft like games with it.
Unfortunately, we are better off putting these innovations in a generic format, as opposed to a Minecraft like one. E.g.: Handling of spatial/streaming data, LoD/rendering optimizations for big 3D games, Libraries for efficient sparse representation of world/multiplayer data ...
I think the idea itself is so-so, but the potential of useful code coming out of it are huge.
First, they say "Chrome version 23 or above or Firefox version 17 or above are recommended." So, you can try either.
I had problems using Voxel.js in Firefox 18 on the Mac, so I downloaded Chromium (the open-source fork of Chrome) from FreeSMUG , and Voxel.js ran fine it it. It was actually snappier than Minecraft on my machine, but that may just be because of a smaller world?
I feel I'd probably rather download Chromium once and then surf to web pages than download a Java application like Minecraft and deal with all sorts of issues when trying to use Minecraft add-ons (given Minecraft has not prioritized supporting community add-ons). It has been a pain to manage lots of incompatible Minecraft add-ons (my wife even wrote a tool to help our kid deal with that). Also, when you download Minecraft addons, they presumably with full permissions and so could do anything to your system like read or delete files. I presume that web pages in Chromium are much more limited in what they can do (even though I have heard about theoretical WebGL exploits).
http://news.slashdot.org/story/11/06/17/121236/microsoft-brands-webgl-a-harmful-technology
Here is a pre-built download link for Chromium if Mac users need it:
http://www.freesmug.org/chromium
Or people can build it from source:
http://www.chromium.org/
It would probably be fair to say WebGL is not that well supported everywhere. I had problems with it in Firefox as above. Still, it seems to me like this group is trying hard to use open standards with JavaScript and WebGL, so I'm not sure your criticism is fair in that sense. WebGL is supported by multiple browsers, but probably just not very well yet:
http://en.wikipedia.org/wiki/WebGL
Still, give it time, and I expect WebGL (or something similar) will run most anywhere.
Anyway, this generation may be "nuts" in their own way, true. :-) The question is, is the "nuts" of a bunch of people across the planet getting together virtually to write free and open source software (for shareable virtual worlds of abundant virtual resources) more "nuts" than a bunch of people getting together to give us, say, the "Cold War" and the artificial scarcity of software patents and endless copyrights etc.?
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
Thanks for the info. I ended up installing Chromium to run it.
As "eksith" points out in another reply, everything has hiccups at first. The important thing is that this is working with technology that is based around open standards. And the design is modular and expandable.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
You may have found it slow, but I have found it faster than Minecraft on a desktop (Mac Pro with eight 2.8 Ghz Intel Xeon cores, where only 60%-75% of one core seems to be used by Voxel.js under Chromium). Granted, Voxel.js may be doing a lot less than Minecraft, or the demo worlds may be smaller, I don't know, so this is not a comprehensive comparison. But at least for something simple, Voxel.js seems very useable on a Mac desktop that is more than four years old and does not have especially fancy graphics cards in it. I have not seen any lag in it.
Which demos did you try from here?
http://voxeljs.com/
What browser, OS, and hardware did you try with?
I have noticed an issue where I don't see a hand or pointer. I'm not sure if that is a limit in the software or an issue with my configuration.
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
I was messing with the Voxel Forest one, and I wanted to see where digging got me. Needless to say, I squealed with delight when I realized "OHSHI-! I'm FALLING!!!!!" I wonder when you stop falling though because it would seem you keep falling forever. Where's a space-time loop when you need it? :-P
I don't really see the point. it's nice, but it's not novel.
Why not just a Java Web Start with http://jmonkeyengine.com/
You could even run that in the web browser with a Java Applet.
It would run with 200 fps (or more) and not with the lousy 22 fps what I get in the browser. And it would be cross-platform, too.
Sorry, I don't really see the point to re-implement everything we have on the desktop now in the browser. It's like we throw everything we achieved in the last 25 years on the desktop in the trash for what? For iPhone? Instead that we use what the desktop have (OpenGL, Java, VLC, etc.) we implement now everything in the browser (Pdf, WebGL, sound, etc.). Mozilla team couldn't be happier of course. But now I have a clone of my system, done badly and ugly, as my browser.
http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
This really makes http://games.slashdot.org/story/13/01/21/1843232/javascript-comes-to-minecraft much more interesting.
Well, then again I'm pretty sure ScriptCraft does not support WebGL. But the idea would still be kinda cool...
As someone trying to get voxels to work in another engine (CryEngine), this might actually be right up my alley. All I'd need to do is code in atmospheric simulation and variable gravity (no mean feat) and then it'd be off to the races.
(I'm one of the many people interested in bringing SS13 to 3D.)
And they would go about securing JS code how, exactly? It's cleartext to the browser! You just can't protect that. I just thought of three ways to get the source, in the time it took me to type this sentence.
Making laws based on opinions that stem up from false informations leads to witch hunts.
I'd figure your position might overflow at some point and plop you back on the world. Whether it occurs in your lifetime is something that the source code could tell you.
It is no longer uncommon to be uncommon.
Seems like a few guys did a nice hack - more power to them - I look forward to a Sunday I waste messing about with it when I get the chance.
Ideally, yes. However, what if it's like many games that detect you're out of bounds and force you back in at the closest point possible? In the simplest case, it would just keep resetting Y to 0 while X and Z would remain constant as long as you're not moving. I'd look at the source code, but I don't care about it. I love the ability to be able to see how it works, but sometimes not knowing is more fun. :-)
I have been a captive in America my entire life. Everybody and everything uses customary units instead of metric.
I just tried it.
It barely runs at all. It's extremely slow. At 20-25 fps, walking feels more like crawling, and it uses all my computer resources, fans running as loud as they can, showing 100% CPU usage on two threads + GPU usage.
There is no point if the experience cannot at least as smooth as Minecraft.
... to get supercool authoring. As part of AgentCubes, a 3D creativity tool supporting Casual 3D design, we have created a new kind of a 3D authoring tool. Casual 3D, similarly to Voxel or Minecraft is not aimed at Pixar animators but at people who have not done any 3D authoring before and would not want to spend more than a minute to get started. Imagine combining Inflatable Icons with Voxel. One could build some pretty cool worlds and program them. You can see an early draft of a short demo video below. I am guessing that AgentCubes may be using similar technology as Voxel. Every game/simulation is turned into a HTML5/WebGL version using the Three.js game engine.
draft of AgentCubes video http://www.youtube.com/watch?v=85CMrbvIYc8&feature=youtu.be
The programming built in to AgentCubes is accessible even to young kinds. You can see and run some samples here (the WebGL part is still alpha). The 2D games are Java, the 3D ones are in Javascript and WebGL: http://scalablegamedesign.cs.colorado.edu/arcade/
Can you say what browser, OS, and hardware you tried it on?
Voxel.js was snappy when I tried it with Chromium on a Mac Pro desktop (vintage about four-five years ago with 2.8 Ghz Intel Xeon, fairly stock graphics card). It seemed to run even faster than Minecraft (granted it was probably doing a lot less with demo worlds).
A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
One glaring problem, I don't believe large(relatively) textured cubes can be considered voxels.
Am I the only one who caught the names and the tie to "Ready Player One"? http://en.wikipedia.org/wiki/Ready_Player_One James Donovan Halliday and Ogden Morrow are characters in that book. Audio book narrated by the inimitable Wil Wheaton. Good book.
Simply stating [Citation Needed] does not automatically make you insightful or brilliant.