You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
4.2 KiB
77 lines
4.2 KiB
Buildat TODO |
|
============ |
|
- Modules should be run in threads. |
|
- Design how to manage scenes in a future-proof way |
|
- Implement easy Lua scripting on the server |
|
- Allow creating Lua modules on the server, for those who don't like C++ |
|
- Allow recycling the same Lua code on the client and the server |
|
- Move all Lua functions from client/app.cpp to a reusable location so that they |
|
can be used from server-side Lua in the future |
|
- New things in meta.json? |
|
- disable_module |
|
- override_module (in such a way that the module will be gotten from the |
|
server with it's original name, and with the name of the overridden |
|
module. The overridden module will still be loaded and be available to the |
|
overriding module in some way.) |
|
- Doxygen for the C++ interfaces |
|
- Copy compiler flags (at least -m32/64 and stuff like -D_GLIBCXX_DEBUG) from |
|
CMake to RCC++ |
|
- Support Cereal's shared pointer serialization in Lua |
|
- Automatically fetch and build and patch Urho3D when building buildat |
|
- Maybe no |
|
- Precompiled mode |
|
- Singleplayer UI |
|
- Show all exceptions and errors on client using ui_utils.show_message_dialog |
|
- magic.sub_sync_node_added -> replicate.sub_sync_node_added |
|
- Use tags for module dependencies (tags, require_tag, disallow_tag), and |
|
auto-tag each module at runtime with game_<current_game> |
|
- Threaded mesh generation |
|
- If an error occurs on the client in module initialization, show error and quit |
|
- Show sandbox_test status at corner and don't show dialog unless something is |
|
found |
|
- Local split-screen multiplayer: Two options: |
|
- One Urho3D instance with systems in place to manage two UIs and things in |
|
the same instance (may be impossible) |
|
- Allow connecting the input systems of multiple windows, which is simple |
|
but less automatic and most people don't know how to get rid of window |
|
borders |
|
- Maintain a global budget of background processing per frame so that a long |
|
woxelworld:update and ThreadPool::run_post() will not be run on the same frame |
|
- Pre (lod) geometry can take up to 2500us, and post can take 7200us, which |
|
means this will have a visible effect. |
|
- Don't emit all world generation events at once |
|
- Handle module load order properly in reloads (unload by popping from top, |
|
then reload everything until top) |
|
- Is this actually needed? |
|
- When reloading a module, unload all dependants first; then load dependants |
|
again |
|
- Each module should be able to choose whether they want their dependants |
|
unloaded or not; eg. network can just store the socket fds and be reloaded |
|
without anyone noticing |
|
- Altough, network is very rarely modified so it doesn't really matter |
|
- If a file tracked by client_data is deleted and re-added, it won't get updated |
|
before server restart(?) |
|
- An option in the server to just compile and quit (to be used when one wants to |
|
check for compiler errors but not actually run anything) |
|
- Saving and loading of the world |
|
- Redirect stdout and stderr of compiler to log so that it's readable on Windows |
|
- voxelworld: An easy way of turning a piece of static voxels to a dynamic node |
|
- Fix server from crashing to socket "no error" on windows when a client |
|
disconnects |
|
- Keep track of voxel instances with handler_module defined on the client, and |
|
call the handler module in construction and destruction |
|
- Make some kind of an ace of spades clone (or less of a clone); something that |
|
requires the game to control the creation and deletion of the world anyway, |
|
and implement the required interfaces |
|
- If loading a pre-built module fails even while files haven't been modified, |
|
try building it again (this is sometimes needed when buildat_core is updated |
|
without header modifications) |
|
- Figure out a way to let the windows executables run without copying all DLLs |
|
to the same binary directory (can be done on the client, but on the server |
|
they must be in the compiler directory too) |
|
- When a module is modified at runtime and reload fails, the server crashes: |
|
- terminate called after throwing an instance of 'Exception' |
|
what(): access_module(): Module "main" not found |
|
- Probably should try building first, and only if it succeeds, then unload |
|
and reload |
|
- Implement backtraces in Windows: http://stackoverflow.com/questions/16768363/exception-handling-and-stacktrace-under-windows-mingw-gcc
|
|
|