Skip to content

Port Game Director from Goobstation #3148

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

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

sowelipililimute
Copy link
Contributor

@sowelipililimute sowelipililimute commented Mar 7, 2025

About the PR

This ports the Game Director from Goobstation.

Why / Balance

As it is, our current ways of scheduling events are purely random, only using shift time and player population with no regard for what came previously or where we'd like to be. This frequently leads to unsatisfying event scheduling. Goob Station's Game Director is a new event scheduler that fixes all of these problems in one fell swoop.

The way it works is that each Game Director has a set of stories that it can choose from, for example, a calm story may start at a peaceful station, work its way towards a minorly scuffed station, and then finish up with power issues. A difficult story may start at a peaceful station, scuff up the station, queue power issues, severely fuck with the station, try and get the security team back on its feet, try and get engineering back on its feat, followed up by a peaceful ending.

These story beats don't call for any specific events, but rather, direct the Game Director to head towards a specific metric goal: the Attackers beat directs the Game Director to attempt to queue events to get towards a Hostile rating of 100, but to bail out early if the Atmos, Power, Medical, or Death metrics get severely out of control.

Events themselves have estimated effects on these metrics, for example, a Revenant will be estimated to cause a lot of Medical and Death chaos, and thus, makes a viable choice if the story beat calls for those two factors. However, the Game Director is able to measure the station itself to determine where the station actually is in terms of these metrics, instead of assuming that every event has the same impact on the story. For example, if a Ninja gets taken out early, the Game Director will observe that the metrics haven't progressed much towards the goals of the story, and will choose another event towards this direction in due time.

Technical details

  • new CCVar to determine how long before the Game Director starts scheduling events
  • new log category for Game Director status
  • StationEventComponent has a Chaos property that measures its estimated impact on the story
  • metric systems & components that actually do the job of measuring the story metrics
  • GameDirector system & components actually do the job of choosing from available events and stories to progress the plot
  • new gamerule/preset prototypes for the game directors to actually take place in (presets being located in _DV and not _Goob because I expect we'll be doing a lot of changes instead of using something close to what they have, but otherwise located under _Goob)

Media

image

Requirements

  • I have tested all added content and changes.
  • I have added media to this PR or it does not require an ingame showcase.

Changelog

🆑 tom-leys, gusxyz, sowelipililimute

  • add: Game Director is here from Goob Station, to offer a more thoughtful and less RNG-reliant method of scheduling events (Test Merge)

@sowelipililimute sowelipililimute requested review from a team as code owners March 7, 2025 16:18
@github-actions github-actions bot added size/XL Over 1024 lines S: Needs Review Changes: YML Changes any yml files Changes: C# Changes any cs files labels Mar 7, 2025
@deltanedas deltanedas requested a review from a team March 7, 2025 16:22
@deltanedas
Copy link
Member

deltanedas commented Mar 7, 2025

tom-leys is the actual author of it on the closed pr upstream

also this has only been on goob for 11 hours wait for the bugs to be found...

@Lyndomen
Copy link
Member

Lyndomen commented Mar 7, 2025

tom-leys is the actual author of it on the closed pr upstream

also this has only been on goob for 11 hours wait for the bugs to be found...

Durk said it was good smh

@Lyndomen
Copy link
Member

Lyndomen commented Mar 7, 2025

Direction is standing up a test server to run this on, and figure out what's cooking

@sowelipililimute sowelipililimute force-pushed the work/jblackquill/gd-port branch 5 times, most recently from 9154922 to bb2fe2b Compare March 9, 2025 19:19
@sowelipililimute sowelipililimute force-pushed the work/jblackquill/gd-port branch from b883e6e to 4a9c698 Compare March 9, 2025 23:25
@github-actions github-actions bot added the S: Merge Conflict Fix your PR! label Mar 14, 2025
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Changes any cs files Changes: YML Changes any yml files S: Merge Conflict Fix your PR! S: Needs Review size/XL Over 1024 lines
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants