[HN Gopher] Minetest for the Web ___________________________________________________________________ Minetest for the Web Author : tech234a Score : 86 points Date : 2022-10-14 18:52 UTC (4 hours ago) (HTM) web link (minetest.dustlabs.io) (TXT) w3m dump (minetest.dustlabs.io) | satoshinm wrote: | This looks amazing, great work! | | A web-based "Minecraft" has great potential, in my opinion, and | has long been a dream of mine. My humble attempt at such a | project: https://satoshinm.github.io/NetCraft/ (2017) - a port of | Michael Fogleman's Craft, a simple Minecraft clone written in C, | ported to the web using WebAssembly and Emscripten. It works, | reasonably well (after a few small enhancements/fixes to | Emscripten) but did not get very far. But it could be so much | more, a "metaverse", if you will. | | Minetest is a much more sophisticated application: paradust7's | minetest-wasm port, even in its early stages, is already quite | impressive. If it can be optimized, with streamlined add-on | installation, seamless multiplayer/networking support, browser | compatibility improved - I would not be surprised if this project | catches on and gives Minecraft a run for its money. | | Having the ability to easily casually play within a web browser, | no install needed, is a massive advantage over the Java or C++ | implementations of Minecraft - which have not (officially) | embraced modding to the extent Minetest has. If successful, this | project could capture the large and diverse community of | Minecraft modders - able to more seamlessly deliver their | creative content through the web. Excited to see how it develops | further. | Sardtok wrote: | I guess you never played the early alpha versions of Minecraft. | It used to run as a Java applet back when that was still kind | of a thing. It ran just fine in the browser 13 years ago. Of | course, you'd have to put in a bit of effort to be able to run | an applet today, as that tech has been shut down due to | security issues quite a while back. | slim wrote: | it was outdated even back then | dekhn wrote: | Minetest is great. After the last Microsoft debacle I looked into | Minetest and after a bit managed to amass a nice collection of | mods to make a truly enjoyable game. UIt's everything Minecraft | has come to not be. | Iv wrote: | Gotta love open source | Macha wrote: | What mods do you use? | | I've tried base mineclone2 and mineclone 5 and they just feel | like a clunkier version of minecraft. I played Minecraft Alpha | and that was more polished. | dekhn wrote: | 3d_armor, awards, basic_materials, beds, binoculars, | biome_lib, boats, bones, bucket, butterflies, carts, | chest_of_everything, compost, creative, default, dfcaverns, | digilines, digistuff, display_biome, doors, dungeon_loot, | dye, dynamic_liquid, env_sounds, farming, fire, fireflies, | flowers, game_commands, give_initial_stuff, item_drop, keys, | map, mesecons, mobs_animal, mobs_monster, mobs_npc, | mobs_redo, moreblocks, mtg_craftguide, pipeworks, player_api, | ropes, screwdriver, sethome, sfinv, signs_bot, spawn, stairs, | tnt, travelnet, tubelib2, unifieddyes, unified_inventory, | vessels, vines, walls, wielded_light, wool, xpanes | | So basically, it's the minetest game with a number of | additions to make survival mode more interesting or | convenient (dfcaverns, mobs, travelnet, unified_inventory, | ropes), some automation I haven't used yet (mesecons, | digilines, signs_bot), some things that sounded cool but | haven't tried yet (tubelibe, signs ) and other things that | round out the world (wool, dyes, vines). | | I make a small number of concessions in survival mode: | occasional use of flying, XYZ location, extremely rare use of | the chest of everything or /giveme. And a stratum of iron at | -8 :) | | My current focus is on dfcaverns- massive caves with | different ecosystems that involve digging deep. For exmaple, | in minetest, ores often don't show up frequently until you | get to -1024, which means digging straight down and building | elevators for a while. | | I played Mineclone 5 for a while and it was mostly feature | complete for what I wanted to do, but it doesn't play with | other mods all that well, while all the mods I selected have | good interoperability. | poser-boy wrote: | I suppose it depends on perspective. MC Alpha these days | lacks performance optimisation, and cannot beat the | extensibility of Minetest IMO. | dvh wrote: | https://minetest.dustlabs.io/mt/minetest.js(1): Uncaught | RangeError: WebAssembly.Memory(): could not allocate memory | isaacaggrey wrote: | I also see an error but instead: | | Uncaught TypeError: GLctx is undefined | | -- | | Firefox 105 on Linux 64-bit (ElementaryOS) | tomrod wrote: | A lot of lag, but has a lot of promise. Neat! | jhatemyjob wrote: | Wait... this is amazing. Is there Lua addon support? | jasonjayr wrote: | The official mod API is pure lua: | | (as an example:) | | https://github.com/tenplus1/minetest_game/blob/master/mods/f... | | That code would run server side, but there is some recent work | for client-side scripts as well. | ROllerozxa wrote: | All Minetest games consist purely of Lua, so of course there | is. I don't know if there's a way to "sideload" games and mods | into the browser storage but installing them from ContentDB | works. | cowtools wrote: | Seems like one might be able to use emscripten_wget or | something. Emscripten can expose a unix-like filesystem | paradust wrote: | Hi all, I made this. Surprised by the sudden interest. It has | been live but unchanged for 6 months. | | There's an updated launcher. It's not finished yet, but it is | nicer for exploring single-player community-made games: | https://minetest.dustlabs.io/ez/ | | I'm not actively working on this, as I have concluded it is not | (yet) possible to create a good web experience. There are | problems with storage, network, keyboard side effects (e.g. Ctrl, | W), concurrency, and performance that need to be addressed by | browser vendors. I highly recommend installing the native | Minetest! | hutzlibu wrote: | "keyboard side effects(e.g. Ctrl, W), " | | You can intercept and cancel the standard browser events and | therefore prevent closing the tab for example with Strg W. | | Storage option on the web for more data is indexedDB. It is | quite fast and stable by now. | | What kind of network issues do you have? | | But general performance I would not suspect to go drastically | up anytime soon, since you already use wasm. (Unless you find | some emscripten flags, that speed up things, but this is not my | area) | paradust wrote: | A handful of key combinations cannot be cancelled. With the | Full Screen API, the page also loses use of the ESC key, | which is extremely important to Minetest's menu interface. | (That's why F11 is the recommended way to go full screen) | | For storage, a bare minimum Minetest world needs 1GB, grow- | able to multiple gigabytes. I don't think IndexedDB is meant | for that. | | The network issues are specific to Firefox. Multiple threads | in Minetest do network I/O. In Chrome this works fine, but on | Firefox only the main thread can do I/O, and so network | requests are proxied to the main thread (this is done | transparently by Firefox, using a mutex internal to firefox). | Unfortunately this arrangement leads to a deadlock given the | particular way it is used. | tech234a wrote: | You actually can't override a few of the events such as | Control-W [1], however that could easily be fixed by using an | alternate keybind for the game instead. | | This port uses a proxy for networking, as the main game uses | UDP-based networking [2]. Perhaps it would be possible to | upstream basic WebSocket/WebRTC packet-wrapping support to | the servers in the main Minetest project? | | I am also curious about the storage issues. | | [1]: https://source.chromium.org/chromium/chromium/src/+/main | :chr... | | [2]: https://dev.minetest.net/Engine/Network_Protocol | hutzlibu wrote: | "You actually can't override a few of the events such as | Control-W" | | I definitely did overwrite it in my app, but I just checked | and remembered, that you also have to be in full screen | mode. | paradust wrote: | WebRTC data channels would be ideal, so that clients can | connect directly to servers (or at least regional proxies) | in a UDP-like way. Vanilla minetest would need to include | an WebRTC endpoint for this to become universally | available. There are lots of details that would need to be | worked out. | freedomben wrote: | Neat project! And thanks for the explanation :-) | | Do you think the browser issues are being addressed already or | will be addressed soon? or do you think it's a low priority for | them? I would think enabling complex WASM apps would be a | priority (especially for Google/Chrome) but you never know. | paradust wrote: | There is definitely a tremendous amount of work going into | emscripten/wasm. Minetest is multi-threaded, and so relies on | SharedArrayBuffer which only became available in 2020. | | The UX issues do seem to be stubbornly persistent though. I | ran into the same issues long ago porting games with NaCl and | asm.js. I'm not sure what is preventing progress there. | mysterydip wrote: | It would be great to be able to pair this with the server, | letting people play on it together just by going to a website. I | have a server set up for my daughter and her cousins, so reducing | the friction to "go to this site, that's it" would be very | useful. | satoshinm wrote: | This is the precise reason I'm also very interested in this | project (or more generally, any implementation of a web-based | voxel game). Douglas Crockford correctly identified "load and | go delivery" as a key feature of the web platform. I've lost | friends as players because of problems they had installing the | Java version of Minecraft on their new PC. If they could simply | visit a website in their browser, especially on a mobile | device, we could play again. | | Amusingly, very early versions of Minecraft circa 2009 _did_ | run on the web browser: as a Java applet. This was short lived, | and of course since 2017, Java applets are completely | deprecated. | | Mojang also published a JavaScript implementation of Minecraft | at https://classic.minecraft.net/. You can share a link to play | multiplayer. However, it is only a version of Minecraft | "classic" (reports as 0.0.23a_01), and even then, a | reimplementation, not 100% faithful to the original. It seems | to be more of a "hey look what you can run your browser" cool | tech demo of WebGL and WebRTC, than a serious multiplayer | survival game. | | Hopefully Minetest for the Web can succeed in this niche. I, | for one, am rooting for them. | freedomben wrote: | Minetest is an absolutely incredible project. My kids love to | play it and it's one I can get behind because I can easily self- | host so I own all the data, and I know my kids aren't talking to | internet strangers through the game. | | It's packaged on most distros also so you can probably `apt get | install minetest` or `dnf install minetest` and have it running. | You can host games on the LAN from your machine, or you can | easily start a server. On fedora you can trivially `dnf install | minetest-server` and then run `minetestserver` and you've got a | server! | makarhum wrote: | Here is the original Minetest project if someone has missed it: | https://www.minetest.net/. | robotnikman wrote: | Speaking of Minetest and the Web, it would be great if there was | a web based control panel for Minetest servers, similar to how | there are many out there for minecraft servers like Multicraft ___________________________________________________________________ (page generated 2022-10-14 23:00 UTC)