Git Product home page Git Product logo

orangebugreloaded's People

Contributors

svenev avatar

Stargazers

 avatar

Watchers

 avatar  avatar

orangebugreloaded's Issues

Think about timing of follow-up events

e.g. Player moves over a teleporter (follow-up is scheduled for +1s) and pushes a box onto the teleporter half a second later. 2 options here:

  • Should the box be teleported after the remaining .5 seconds?
  • Should we re-schedule the follow-up event, so that - after the box is pushed onto the teleporter - teleportation is delayed a full second as intended?

Handle concurrency

We will need some locking mechanisms to ensure concurrent transactions are executed correctly.

Add tile metadata

We need to store metadata for tiles, e.g. the designed tile (tile "template"), region ID, date/time of last modification, ...

Fix CornerTile

Currently every entity is pushable around a CornerTile because it just uses MoveAsync instead of DetachAsync. Some entities however, such as CoinEntity, are not pushable and should be collected instead.

Random notes

Things that came to my mind (in no reasonable order):

  • We need different permissions:
    • Option 1 - For each region store which players can edit it
    • Option 2 - For each player store the list of regions he/she can edit
    • Not only edit permissions, but also access permissions and probably others
    • Additionally we need to store which players can manage regions (add/remove/assign/delete/...) - again two options here
  • Organizing regions not only in a flat list but in a hierarchical structure would be cool!
    • E.g. we could have a "map admin" with the permission to manage the root region (i.e. the whole map)
    • Subregions are then manageable by managers of parent regions (inheritance) and by players explicitly granted the management permission for that region
  • Gameplay and map editing should be completely independent of each other
    • That means a gameplay transaction and an edit transaction may be constructed concurrently
      • Committing the gameplay transaction after the edit transaction must not overwrite changes made by the edit transaction
      • What about concurrent edit transactions?
      • What about concurrent gameplay transactions affecting overlapping sets of tiles? The first that commits wins, others are cancelled?
    • So it's probably not a good idea to store the whole TileInfo within Transaction.Changed
    • We could use different transaction chains for gameplay (Tile changes) and map editing (TileTemplate changes)
      • Common denominator?
  • Should implement Tile.Equals, Entity.Equals

Tiles are not correctly initialized on chunk loading

When a chunk is loaded, we should allow every tile to update themselves by calling OnEntityMoveTransactionCompletedAsync and OnFollowUpTransactionAsync. And those methods should probably be renamed then.

Think of the following chunk scenarios and what should happen when the chunk is loaded:

  • Teleporter with box
  • Blue pin with blue balloon
  • GateTile/PistonTile that point to a trigger in the same chunk
  • GateTile/PistonTile that point to a trigger in an already loaded chunk
  • GateTile/PistonTile that point to a trigger in another not yet loaded chunk (verify correct loading)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.