-
Notifications
You must be signed in to change notification settings - Fork 258
Dynamic Rooms #552
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
base: master
Are you sure you want to change the base?
Dynamic Rooms #552
Conversation
|
I can imagine uses for crew objectives like "Keep medical 90% clean" for a janitor or "Keep station integrity above 75%" for engineers using whats discussed here as a framework. ALSO, I know skeletons spawning anywhere is funny but stowaways, paradox clones for sure and other roles/antags could really use something to fine tune their spawn locations. Allot of stuff can be built, ontop of this. Very good stuff. |
slarticodefast
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Worth mentioning the core design pillar of the dynamic environment - which is why pre-mapped game areas are not a thing at the moment. Players should be able to transform the station over the course of the round.
And another system that would benefit from this is ambient music. If you have a look at the current track selection algorithm you can see that it checks a bunch of conditions in a fixed order, for example:
- Is the player near a morge, altar or fog?
- What is the nearest door access?
- What tile is the player standing on?
And so on. This is currently not ideal, since the ambient music for maints is often not playing because you almost always have a substation room or a firelock with engineering access close to you - turning all of maints into an engineering area.
In general I think the room system should be something that is only subtly communicated (like antag spawn locations or ambient sound rather than a room type UI) to the player to prevent them from minmaxing or exploiting the system. Room types should feel like they organically adjust to the players' actions and be used to improve the roundflow and ambience rather than be a direct game mechanic.
|
|
||
| As such, we need a premade room model of the station, set at round start. If the station's walls and structure change, rooms should be marked as invalid in the model, and those rooms require maintenance. The game internally keeps a track of what rooms exist on the station, but converting those rooms into the model is first done by the mapper, and then left up to the station's crew to maintain. | ||
|
|
||
| This is a job that feels appropriate for the Station AI to keep on top of. Keeping an eye on new rooms bolted onto the hull and adding them to the room model, and fixing the model when the bar is remodelled, are tasks which can't, and shouldn't, be left to an automatic system running on some update loop. It would be always broken in annoying ways. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if the room declaration should be something that can directly be selected by players, especially if it has an impact on the round - like antag spawns. Instead I would prefer it as a Rimworld/ONI style point system that automatically adjust to the structures inside a room.
Medical machines give points towards a medbay. Lots of closets and catwalks - this is maints. Hydroponic trays - Botany. And so on. The players can still inderectly influence this system, but they will have to entirely refunction the room for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can see this point. This document "we should have a dynamic room system in code, here's some ideas of things that could be built off of it to demonstrate why".
Will let this sit for a bit so that others can put in ideas and thoughts, then I can trim back any proposals folks are not keen on or regard as bloat.
Space stations are both big floating metal structures which you can stand on ("grids") and places of habitation with hallways, maintenance tunnels, departments, offices, and so on.
In Engineering, it's useful to think about a station, be it a static one or a shuttle, as "zones" - an area provided atmosphere that is airtight is one zone, or maybe an area serviced by one substation is one zone. Security and Command can think about the station as being broken up into areas based on access. But every department and every agent on the station can agree that the station is definitely broken up into rooms.
This document discusses how to define rooms, what their impact on parts of the game are, and how they can be modelled to build features on. It'll explore some ideas for features that could use rooms.