Skip to content
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

Next in Multi-world Support #3146

Open
Cervator opened this issue Nov 18, 2017 · 3 comments
Open

Next in Multi-world Support #3146

Cervator opened this issue Nov 18, 2017 · 3 comments
Assignees
Labels
Category: Performance Requests, Issues and Changes targeting performance Multiplayer Affects aspects not visible in Singleplayer mode only Size: L Very big effort likely requiring a lot of research and work in many areas across the codebase Status: Needs Investigation Requires to be debugged or checked for feasibility, etc. Topic: Architecture Requests, Issues and Changes related to software architecture, programming patterns, etc. Topic: WorldGen Requests, Issues and Changes related to facets, rasterizers, etc.

Comments

@Cervator
Copy link
Member

Cervator commented Nov 18, 2017

This is a substantial topic, worthy of GSOC, but likely still blocked by additional foundation work such as re-integrating gestalt-entity-system (#3145).

With the GSOC item on Sectors in 2017 by @Vizaxo we've got some of the initial foundation work in place, such as improved entity scope and independent entity pools. In brief the goal with sectors is isolating a sub-set of entities in a world that can be grouped in a sensible fashion away from one or more other groups so each can be processed independently and only shared with relevant connected clients.

That sounds an awful lot like having multiple independent worlds, doesn't it? The Sector thread in the forum goes deeper into the details: http://forum.terasology.org/threads/new-conceptual-layer-sector-plus-musings-on-multi-world-node.1420

But sub-instancing within a single world is still not quite splitting a hosted game universe into having multiple worlds in it, and even that we still don't quite have, just some pieces for it. It might be that another GSOC project could make more pieces even without #3145, maybe some could be split out from this issue. Some ideas:

  • Changing save structure to add another layer so worlds can be stored separately. Consider impact to central files like the world manifest
  • Prepare various engine systems to target an optional world target (hopefully this would only be needed for actions that go between worlds, so regular method invocation can leave it out and the right world will be deduced)
  • Prepare UI elements to allow configuring / displaying details about additional worlds. One example could be simply treating a zone (like the world layer provided by the Inferno module) like its own world instead of a sub-world
  • Preparing logic that can transfer a player from one world to another (similarly could likely be simulated by transferring between sectors)
  • Preparing universe-level logic like universal chat that can be visible in all worlds (and conversely world-local chat)
  • Extending the ServerFacade to also consider world, such as to support an external world map that can switch between different worlds

Edit: Linking to #2774 which is another GSOC scope item and very related to this issue

@Cervator Cervator added API Topic: Architecture Requests, Issues and Changes related to software architecture, programming patterns, etc. Category: Doc Requests, Issues and Changes targeting javadoc and module documentation Size: M Medium-sized effort likely requiring some research and work in multiple areas Multiplayer Affects aspects not visible in Singleplayer mode only Category: Performance Requests, Issues and Changes targeting performance labels Nov 18, 2017
@Cervator Cervator added this to the v3.0.0 milestone Nov 18, 2017
@OvermindDL1
Copy link
Contributor

Could always start by instead of using an integral x/y/z for coordinate, instead start converting to integral w/x/y/z block coordinate, just make the 'world' another dimension to make it a 4-dimensional world. That alone would allow you to unify a lot between the multi-worlds by just treating the w coordinate like any other, but keep the physics/rendering constrained to the current 'w' only (although it is possible to 'rotate' to another primary axis to make a 4d rotating game in the Terasology engine as well at that point).

@syntaxi syntaxi added Size: L Very big effort likely requiring a lot of research and work in many areas across the codebase Discussion Status: Needs Investigation Requires to be debugged or checked for feasibility, etc. and removed Category: Doc Requests, Issues and Changes targeting javadoc and module documentation Size: M Medium-sized effort likely requiring some research and work in multiple areas Discussion labels Jan 29, 2018
@TheFlash98
Copy link
Member

TheFlash98 commented Mar 7, 2018

So digging up old issues, I found these issues related to entity system

  1. #3244 : Revise BlockLifecycleEvents sending logic when chunks are loaded/created
  2. #3095: Some type of blocks remain invisible on a client connected to a server
  3. #3010: Advanced chunk monitor prevents game from closing cleanly
  4. #3006: Bug in chunk prioritizing after respawning - player position wrongly related to camera?
  5. #2949: Client entity polling in input system
  6. #2896: Add ability to deactivate (or reactivate) components on entity
  7. #2873: Protobuf updates
  8. #2774: World storage / phase improvements
  9. #2516: Having certain modules (with substantial item/block count?) causes invisible blocks in multiplayer
  10. #2477: Better / clearer handling of duplicate chunk loading in multiplayer
  11. #2385: Race condition / bad initialization order during game start vs chunk generation
  12. #2381: No support for auto-downloading modules if server if running from source
  13. #2343: Prefabs with empty lists cause failures - add support?
  14. #2336: @in fails to initialize something that works via direct CoreRegistry retrieval
  15. #2294: Thread pool model update / salvage old PR
  16. #1936: Blocks with assets with the same name somehow get muddled
  17. #1886: 343 chunks or over 22 million blocks need to be loaded at the server just to make the first chunk visible at the client?
  18. #1780: World preview refactoring
  19. #1770: Engine Initialisation and Lifecycle improvement
  20. #1765: Request to change the way entities in a chunk are loaded and their life-cycle events called
  21. #1720: When chunk is loaded, block entities are added into manager one by one (edited)
  22. #1709: Observable Configs
  23. #1700: Harden event handling against errors
  24. #1698: When I do “Return to main” or “Exit Terasology” the BeforeChunkUnload is not called
  25. #1694: Any block setting code should be using PlaceBlocks to allow vetoing
  26. #1693: Any inventory changes should be going through InventoryManager
  27. #1441: spawnPrefab behavior vs authority / network mode
  28. #1402: Improve visibility of missing resource / asset scenarios
  29. #1296: Improve game entry/exit with more hooks for disposal + docs
  30. #1281: BlockStructuralSupportSystem cannot deal with stacked supported blocks
  31. #1127: Refactor StateMainMenu.init(GameEngine) to remove line RegisterInputSystem
  32. #1125: ComponentSystemManager initialization, registration and re-registration
  33. #1079: EntityManager::copy works incorrectly on a remote client
  34. #813: Allow overrides to be declared in a file (rather than just via the overrides directory)
  35. #704: Events getting called after modules are “shutdown()”
  36. #513: @ReceiveEvent should allow to exclude events for entities with specified Component
  37. #256: Procedural creature generator
  38. #137: Block Integrity System

I think some filtering can be done in these, some are even GSoC scope which can be removed. I tried as finding many possible 🙂
issue -> May be related
issue -> Definitely related
issue -> unrelated

@Cervator
Copy link
Member Author

@skaldarnar skaldarnar removed the Api label May 15, 2021
@jdrueckert jdrueckert removed the GSoC label May 15, 2021
@skaldarnar skaldarnar added the Topic: WorldGen Requests, Issues and Changes related to facets, rasterizers, etc. label May 23, 2021
@skaldarnar skaldarnar changed the title Multi-world support Next in Multi-world Support May 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Performance Requests, Issues and Changes targeting performance Multiplayer Affects aspects not visible in Singleplayer mode only Size: L Very big effort likely requiring a lot of research and work in many areas across the codebase Status: Needs Investigation Requires to be debugged or checked for feasibility, etc. Topic: Architecture Requests, Issues and Changes related to software architecture, programming patterns, etc. Topic: WorldGen Requests, Issues and Changes related to facets, rasterizers, etc.
Projects
None yet
Development

No branches or pull requests

6 participants