-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Review other forks of Craft and integrate the good stuff #25
Comments
From fogleman/Craft#112 (comment), Konstructs looks to be the most developed fork, though it is no longer a fork, being rewritten in C++, still quite a full-featured client: https://github.com/konstructs/client - restart on top of it? Konstructs is intriguing, their approach is to make the client very thin and push as much game logic to the server as possible. Trying out their native binaries, this has some noticeable impacts: when I broke a block (they already have block hardness #17, nice), the breaking animation lagged because of slow Internet connection. A server is required to play. The advantage of being able to use the same client for many servers is not necessarily a strength when compiling to emscripten and targeting the web, since any server could ship its own custom client. So I'm not sure it is a good fit for this project (web-based client), at least as-is. Even though it has inventory #18 and other features, including a commendable plugin system: http://www.konstructs.org/plugins/ - 10 plugins listed, not bad. Start with it as a base, then add client-side performance enhancements on top? Could be a viable beginning. Testing with similar changes against Craft for emscripten (fogleman/Craft@2d93dfd - but changing Konstructs and nanogui to use emscripten's glfw instead of its own), hits an error "Could NOT find ZLIB", required by lib/CMakeLists.txt. Requires zlib for deflate compression of block data, cross-compile with emcc. zlib port for emscripten? https://github.com/hachque-Emscripten/zlib-1.2.5 or newer: https://github.com/emscripten-ports/zlib - see http://kripken.github.io/emscripten-site/docs/compiling/Building-Projects.html#emscripten-ports Got konstructs to compile under emscripten, using port of zlib and modified nanogui submodule:
However now we run into a shader incompatibility. Compare with commit to Craft: fogleman/Craft@601a5c3 - but Konstructs uses
and under native, the A brief comparison of https://github.com/fogleman/Craft vs https://github.com/konstructs/client:
|
Back to Craft, forks:
|
… branch 'peter-conalgo' fogleman/Craft#147 #25
Merged all open Craft pull requests at https://github.com/fogleman/Craft/pulls - except for fogleman/Craft#146 "Implement a lua scripting api", which the contributor says is not ready to merge, and Lua may not necessarily be the best scripting language choice for a game embedded in the web browser (JavaScript? #24 In-game extensibility at runtime using JavaScript ) |
fogleman/Craft#112 has some discussion..
|
Yo, on my fork the main commits you're interested in if you're not keen for the Lua are probably:
I dunno whether those off-by-one error commits were just due to API stuff I changed or bugs upstream as well but yeah, hopefully that pulls out the more-useful stuff. Particularly for that first range, keep an eye on the list of commits since there's a bunch of dynamic-clouds stuff, and some other various changes merged too. Didn't keep up with Seegras' changes further than that so ye definitely good to take a look on theirs as well. If I remember correctly, the world generation change commit in that first linked set of differences was pretty interesting. Honestly, my fork was mostly merging a bunch of existing relatively-sane-looking extensions in various forks and then doing the API stuff on top of that, so I'm not sure how much of what's in mine you'd have already picked up otherwise. If I remember correctly, the dynamic clouds looked really nice but might've also been a bit heavier on CPU/GPU than I'd like. |
Another interesting thing I was playing with was allowing the API to add blocks dynamically (i.e. you load a plugin and it makes a new type of block). I don't remember exactly how it went but it might be good to take a quick look at this branch if you're interested in doing something similar. iirc this is mostly changes in the db and such to help allow this sort of feature: DanielOaks:dynamic-db-blocks |
Dynamic clouds would be pretty cool to differentiate the clouds from static blocks. Adding blocks dynamically would be sweet for #24 In-game extensibility at runtime using JavaScript and/or TypeScript |
Just saw this other recent fork, CraftNG: https://github.com/twetzel59/CraftNG - 30 commits ahead, lots of cool stuff planned, already has worldgen improvements, biomes with sky tint, and expanded hud for inventory: |
Not a fork of Craft, but in a similar vein: ThinkMap, https://www.spigotmc.org/resources/thinkmap.413/ https://github.com/thinkofname/ThinkMap. Required some changes to update, pushed here: https://github.com/satoshinm/ThinkMap - also a Bukkit plugin, with a WebGL frontend, except it is written in Java compiled using GWT down to JavaScript. In my testing it seemed to be a lot slower than WebAssembly/asm.js NetCraft although there may be some other issues causing it (not known, asked on https://www.spigotmc.org/threads/thinkmap.13782/page-7#post-2442256). Good news is that it supports a ton of blocks, including with sophisticated models. And compact chunk updates: #136 - could be useful for reference |
https://github.com/fogleman/Craft/network shows 612 forks, building on fogleman's original work, is there any which is the latest and greatest worth rebuilding on instead? Or are there forks or pull requests https://github.com/fogleman/Craft/pulls adding new features or fixes worth merging? Review all that is out there.
The text was updated successfully, but these errors were encountered: