I wanted to pull together a list of some of the major arcs I have in mind for the engine in the future, to get some feed back on the desire for the different features. I would like to know if what people feel is a priority or if there are any concerns with the direction.
In no particular order
In no particular order
- Module system improvements. This is both around firming up some details of the current module system.
- Fix components to optionally use uris. At the moment there is an implied rule that component class names are unique, so if MyModule added a HungerComponent and YourModule added a HungerComponent, the two would conflict. The solution is to use uri to refer to components ("MyModule:Hunger" and "YourModule:Hunder"). Additionally, if there is no conflict in the dependency tree of a module, the short name could still be used, as the component resolution mechanism could be clever enough to work out which one you meant.
- Module versioning - adding versions into module.txt, and version ranges to the dependencies. The implication is modules would only work with the correct versions of their dependencies, and wrong versions or version conflicts could be detected.
- Prefab extension system - this would allow a module to inject additional components into prefabs from dependencies. This avoids situations where you add item durability system but don't have any way to apply it to existing items.
- Module sandboxing - securing modules so they cannot use potentially dangerous features (like file system access or network access) without approval from the user. Essentially a custom class loader that restricts the classes they can use to a white list, in addition to installing a java security manager. This will allow automatic downloads of modules when connecting to a server (the risk is too great otherwise)
- Modding. This is building the actual gametype and mod support (modules are the lower level components supporting this)
- Game types, Mods and World Generator extension mods. There are bits in this direction at the moment, but not fully fleshed out. World Generator in particular has some issues with its configuration not being stored in the saved game.
- Support for Mod-specific config to be stored in the config file.
- Assets work - Further work improving the asset system
- Removing the AssetType enumeration and replacing with something more flexible.
- Adding support for new asset types in modules, including automatically hooking them up.
- Asset reloading through a console command (so you can edit and reload in place)
- Setting up Icons as a proper asset.
- Get asset disposal working better.
- Block improvements
- Change blocks to a special case of prefab. Blocks would be able to be given components, and most block settings would be moved into those components. These components would be reflected in block entities.
- Limited support for blocks determining their appearance during chunk generation (must be determined solely though the block's definition and adjacent blocks definitions).
- Support for blocks using multiple textures in the same mesh part.
- World generation improvements
- Allow the specification of entities to be created during chunk creation. These would only be created when the chunk is complete.
- Entity System improvements
- Delay entity destruction to set points, but mark them as pending deletion. This will avoid some issues around event flow
- Investigate defensive copying and other strategies to improve safety of usage and possible allow future multithreaded use.
- Vertical chunk support
- Multiple world support (think multiple active planets, or alternate dimensions)
- UI improvement
- Time event subscription
- Physics System - cleanup and complete the API
- Specialised shader language
- Optimisations
- Replace reflection-based class metadata system with code generation based system
- Further network optimisations
- Replace JBullet with Bullet
- Documentation