Comments (9)
Yo, on my fork the main commits you're interested in if you're not keen for the Lua are probably:
- f5a663...580ce7 - merging dynamic moving clouds, some other random changes
- 268cd - better whitespace for clouds
- 35174 - "fixing an off-by-one error"
- 0d65a - fixing a compilation error with the clouds
- b2e20 - "fixing another off-by-one error"
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.
from netcraft.
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
from netcraft.
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:
- https://github.com/satoshinm/konstructs-client/tree/emscripten
- https://github.com/satoshinm/nanogui/tree/emscripten
However now we run into a shader incompatibility. Compare with commit to Craft: fogleman/Craft@601a5c3 - but Konstructs uses #version 330
, so under WebGL it fails:
Shader shader/vert error:
ERROR: 0:1: 'core' : unexpected token
ERROR: 0:8: 'in' : storage qualifier supported in GLSL ES 3.00 and above only
ERROR: 0:9: 'in' : storage qualifier supported in GLSL ES 3.00 and above only
ERROR: 0:10: 'out' : storage qualifier supported in GLSL ES 3.00 and above only
ERROR: 0:11: 'out' : storage qualifier supported in GLSL ES 3.00 and above only
and under native, the #version
directive is required. And cannot add #ifdef __EMSCRIPTEN__
since #version
must be very first statement, according to the native error message. Started backporting but there is significant usage of new GLSL features not present in WebGL, such as bitmasks, significant effort would be needed to get it to a functional state. There is a lot of "cleverness"/modern features or abstracted programming in Konstructs and its major dependency Nanogui impeding porting, abandoning for now, Craft
is a more tractable base. Revisit after WebGL 2 (OpenGL ES 3.0)?
A brief comparison of https://github.com/fogleman/Craft vs https://github.com/konstructs/client:
Craft | Konstructs |
---|---|
C | C++ |
GLSL 120 | GLSL 330 |
raw GL | Nanogui |
Client/server | Client+server |
Single/multiplayer | Multiplayer only |
Thick client | Thin client |
Small | Bigger |
from netcraft.
Back to Craft, forks:
- https://github.com/libretro/Craft - 216 commits ahead, libretro is "A crossplatform application API", see also RetroArch "program with which you can play many emulators and games" ported to libretro API - how are they using Craft?
- https://github.com/zeliard/Craft/ - 7 ahead but 204 behind?
- https://github.com/DanielOaks/Craft - 71 ahead, 6 behind, adds Lua and SGLib deps, using Lua for scripting - interesting for sure, but for the web extending with JavaScript #24 may be a better match
- https://github.com/cjdell/Craft/ - 1 ahead, 4 behind "Works in Emscripten" - wow, ahead of me I didn't see this (2015). Review the differences see how their approach compares, at first glance they have a custom Makefile instead of cmake, and separate glsl's for webgl instead of running on both, and lots of commenting-out; similar
- https://github.com/nathanial/VGK - 24 commits ahead, C++, looks like some good changes, what is VGK?
- https://github.com/Pugduddly/Mine/ - just a rename to "Mine"
- https://github.com/lowagner/home - 66 ahead, called a "complicated fork", adds some nice enhancements, change colors, stair fixes
- https://github.com/louisstow/EmCraft/commits/master - tweaks + also adds Emscripten! (2015) albeit a bigger commit, compare and contrast it
- https://github.com/zerotri/Craft/commits/master - reorganization, but before that, adds "cvars", seems good for configurability
- https://github.com/crazy2be/Craft/commits/master - moved meshing code to new file, cleaner
- https://github.com/wetstreet/Craft - 2 commits, added a Visual Studio project
- https://github.com/twetzel59/CraftNG - 30 commits ahead as of 2017/05/07, worldgen, biomes, inventory
... can I get the list of forks by most number of commits?
from netcraft.
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 )
from netcraft.
fogleman/Craft#112 has some discussion..
fogleman/Craft#138 especially fogleman/Craft#138 (comment) should be considered. DanielOaks fork, not to keen on Lua but investigate other changes:
- https://github.com/Seegras/Craft - 810 commits, even with DanielOaks:dynamic_stuff.
- https://github.com/DanielOaks/Craft - 71 commits ahead, 10 behind fogleman:master
from netcraft.
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
from netcraft.
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:
from netcraft.
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
from netcraft.
Related Issues (20)
- Cookie to save login session?
- Screenshots look brighter than they are - saving alpha channel? HOT 1
- Liquids should target block underneath when mining HOT 2
- Crouching with shift should allow sliding along edges
- Crouching while falling but not flying allows hovering midair
- [VR] Use window size as vr size, allow resizing by retoggling to reinitialize
- Touch controls should allow full game interaction
- Use only terrain from server, remove local generation when online
- Update glfw to fix build and runtime warnings HOT 1
- Touch events not received on initial page load
- /list command to list player names and count online
- [VR] Google Cardboard support
- [Touch] Block should mine only when touching in same place without moving
- Showing chunk boundary borders
- View bobbing when walking HOT 1
- Rendered arm of player in first person HOT 1
- Crafting HOT 1
- Try out "Voxelus"? HOT 1
- Texture Management Change
- Build failing on Linux when building LLVM from source HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from netcraft.