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

Multi-Area system overview and overhaul potential #1

Closed
23 of 28 tasks
Crystalwarrior opened this issue Jun 25, 2020 · 1 comment
Closed
23 of 28 tasks

Multi-Area system overview and overhaul potential #1

Crystalwarrior opened this issue Jun 25, 2020 · 1 comment
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@Crystalwarrior
Copy link
Owner

Crystalwarrior commented Jun 25, 2020

Example of the robust area system in action:
Flowchart Example

There exists an ever-growing niche of role-plays utilizing the immersive nature of location-specific areas. Case Cafe has recently introduced area linking, position locking and other features to aid in achieving this goal. Danganronpa Online similarly utilized a ton of areas but only implemented code to support visible links recently as well. Killing Fever Online server has been one of the first to do it after a Danganronpa role-play was hosted that necessitated this magic to hapepn.
However, the major issue with Killing Fever Online codebase right now is that it's using a severely outdated version of tsuserver3, and it completely breaks compatibility with current Area mechanics of the rest of AO2. This means casing on the KFO server is more annoying than it should be.

Therefore, I propose an overhaul of Killing Fever Online's area-specific featureset and an implementation of the rich area system.

Core/essential features that need to be implemented:

  • Area Link information stored on each area. This is a one-way connection to the specified area and can be configured to be visible/invisible, locked and unlocked. Therefore, links could be made their own abstract objects instead of a simple integer number.
  • Make areas invisible if there are no connecting links to them from user's current area. If the user is supposed to see this information, mark all inaccessible areas with an or other identifier to convey that the user is not supposed to access that area. CM's and spectators will be able to 'teleport' ignoring area links. There should also be an option to 'disable' the restrictions imposed by area accessibility, but said restrictions should be on by default.
  • Ability to lock the area into certain positions, disallowing the client from using any pos outside of the list.
  • Ability to define the "intended pos" for individual area links on arrival, for example if you enter from "room" area into the "hallway" area, you will be located on the "north" pos closest to the area you entered from.
  • Ability to lock and unlock entire areas without having to individually modify every area link.
  • Implement OOC messages for users entering/leaving areas
  • Ability for users to start "sneaking", hiding said OOC messages
  • Let CMs /hide and /unhide individual users
  • Let CMs mute entire areas or individual users from IC speech
  • Ability for CMs to broadcast their IC message across several areas at once, letting the CM select which ones
  • Ability for CMs to broadcast music across several areas at once
  • Ability to hide and unhide entire areas from view without having to individually modify every area link.

Hub system example
Hub system - a set of areas dedicated to CMs to create a CM-specific RP zone

  • Ability to add, remove, rename areas during server runtime for CMs without the need for restarting or yaml editing
  • Saving/loading data on the server for mods or high ranking CMs
  • Ability to turn off individual area status and arup system on entire hubs.
  • Distinction between "Master" CM and "Co" CM so that the Master CM can dedicate multiple helpers to assist with the RP. Master CM may assign or remove new Co CMs.
  • Ability to set up hub-wide configuration on certain elements of the role-play, as well as set /status and /doc on the hub itself rather than individual areas.
  • Saving/loading data on the client using some part of the client to share such information - evidence section can be used to achieve this but this may require some 2.8 client tweaks for maximum potential

Nifty features that would be extremely nice to have:

  • An ability for the client to only listen to the position his character is currently located in. All chatter outside of that position will be referred to OOC (there's no packet to send an IC log entry by itself yet.)
  • Movement delay system - ability to set the movement delay in seconds for 1) individual players 2) individual pos 3) individual areas and 4) individual hubs. Move delay total is added together to receive the final delay, so -1s for player +1 for pos +2 for area +5 default hub delay results in -1+1+2+5=7 seconds area transfer delay for that player.
  • Area description system that displays an area's desc as soon as the user enters
  • Character-specific data - save individual character data on the hub file such as move delay, etc.
  • Keys system - give specific characters access to /lock and /unlock specific pathways and rooms.
  • /peek system - look into another area to see who's there from your current one without physically entering the room. /peek is visible to everyone inside your current room.
  • Ability to use /hide for users on individual pieces of evidence (set up by CM), and an ability for anyone to detect someone hiding in that evidence when presenting it.
  • as an extension to /peek system, some form of eavesdropping mechanics would be nice.
  • CM logging system
  • I AM DEFINITELY FORGETTING A LOT OF THINGS, HELP ME OUT HERE BOYS
@Crystalwarrior Crystalwarrior added enhancement New feature or request help wanted Extra attention is needed labels Jun 25, 2020
@Crystalwarrior
Copy link
Owner Author

bro tbh this is pretty complete now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant