NetCraft
NetCraft copied to clipboard
Entities
Objects of arbitrary 3d models not locked to the world grid, unlike blocks.
- [x] Spawn entities
- [ ] Object model loading
- [ ] Save/load to disk
- [ ] Physics
- [ ] Behavior ("AI")
- [ ] Mobs
Craft actually already supports a form of entities: players. This includes position/rotation updates with interpolation (P command), naming the entities by id (N), deleting entities when they leave the game (D). Players can roam freely from the world grid, as disembodied cubic heads.
The same existing functionality could be extended and reused for other kinds of "entities", question is, what next? Item drop entities? Mob entities? Projectile entities?
Use http://assimp.org Open Asset Import Library (assimp) for asset loading object models files? Supports many types of formats including .stl (stereolithography) common on http://www.thingiverse.com and formats of various 3d modeling software packages. There is a tutorial to use assimp at https://learnopengl.com/#!Model-Loading/Assimp. And then drag-and-drop an object file to load it into the world as an entity.
Assimp is not suitable for various reasons, see: https://github.com/satoshinm/NetCraft/pull/139#issuecomment-302745455
Some alternative code to consider, or write anew:
- https://github.com/charles-l/sanegl/blob/master/sgl_mesh_loader.c .3ds Autodesk 3ds Max model loader
- https://github.com/rlk/obj - Wavefront .obj - found here
- Binary STL or text STL. three.js STL loader test: https://threejs.org/examples/webgl_loader_stl.html
https://github.com/nothings/single_file_libs#geometry-file shows some promising model loading libraries in C: https://github.com/joeld42/tk_objfile https://github.com/syoyo/tinyobjloader-c and https://github.com/xelatihy/yocto-gl are for .obj, and https://github.com/ddiakopoulos/tinyply for .ply (C++)
OBJ is one of the easier formats to parse. It would require hard-coding animations, but that may, or may not be an issue.