Skip to content

Conversation

@portfiend
Copy link
Contributor

@portfiend portfiend commented Jan 1, 2026

About the PR

This PR adds outline sprites to the room spawners (regular, maints, vgroid) to clearly indicate the boundaries of the spawner.
Some of the room spawners have also had their min/max bounds set explicitly as datafields, so that the sprites remain an accurate representation of the spawner's generated room size.

Why / Balance

This makes it easier for mappers to visualize what a generated room's bounds would look like without having to look at the code. This is less important for the other room spawners, really, but I mainly wanted this for the random maints rooms added in #33619 to encourage people to play with that feature more.

Technical details

A bunch of new RSIs for room-sized outlines. Not all of them are used, but they could be generically useful.
Added the sprite component to the roomfill spawners
Note that room spawners with even tile dimensions should have a 0.5 tile offset in that direction (see: bagel theater)

Media

maints.mp4

Bagel before and after init:

image image

Requirements

Breaking changes

N/a

Changelog

No changelog I think?

@PJBot PJBot added S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. size/M Denotes a PR that changes 100-999 lines. Changes: Sprites Changes: Might require knowledge of spriting or visual design. Changes: No C# Changes: Requires no C# knowledge to review or fix this item. labels Jan 1, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 1, 2026

RSI Diff Bot; head commit b10d66b merging into 4f1a111
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Markers/Outlines/10x10.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/11x11.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/11x5.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/11x8.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/2x2.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/3x3.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/4x4.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/5x5.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/6x6.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/7x7.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/8x8.rsi

State Old New Status
label Added
rect Added

Resources/Textures/Markers/Outlines/9x9.rsi

State Old New Status
label Added
rect Added

Edit: diff updated after b10d66b

@Pok27 Pok27 added P3: Standard Priority: Default priority for repository items. DB: Beginner Friendly Difficulty: Great for beginners. Unambiguous in scope, and explains how to achieve the result. A: Art Area: Art with no implications for other areas. and removed S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. labels Jan 2, 2026
@portfiend
Copy link
Contributor Author

i have made an adjustment to the offsets as it actually nearly fucked up the bagel map. i have included screenshots to prove that bagel's theatre spawner now works as intended

@ArtisticRoomba
Copy link
Member

Hero-level mapping QOL, however I will remark that the sprite that shows the room layout should probably be auto-generated to some extent via an overlay or something as having a sprite for each layout becomes a pain when we'd like to add rooms with more unique dimensions. However if this is out of scope I guess it's fine.

i have included screenshots to prove that bagel's theatre spawner now works as intended

Has it not been working as intended? I explicitly tested that PR multiple times to ensure that every variant of the room spawned fine.

@portfiend
Copy link
Contributor Author

portfiend commented Jan 3, 2026

However if this is out of scope I guess it's fine.

i would consider this out of scope, yeah, unless there's a relatively-easy way to do it

Has it not been working as intended? I explicitly tested that PR multiple times to ensure that every variant of the room spawned fine.

specifically; my sprite offsets were off by a full tile upwards which would've initalized wrong in-game, iirc. i fixed the offsets to go the other direction. this was an issue on my part and not yours

Copy link
Member

@slarticodefast slarticodefast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with Roomba, I'm not a fan of having a separate sprite for each possible size. Can't you just use the existing tile smoothing system for this and only do the size indicator via a sprite layer?
Also the larger ones will spam the sprite atlas, you might want to set "metaAtlas": false in the json file.

@TiniestShark TiniestShark added the S: Art Approval Status: The art (e.g. Spritework) has been approved by an art lead. label Jan 15, 2026
@portfiend
Copy link
Contributor Author

I agree with Roomba, I'm not a fan of having a separate sprite for each possible size. Can't you just use the existing tile smoothing system for this and only do the size indicator via a sprite layer? Also the larger ones will spam the sprite atlas, you might want to set "metaAtlas": false in the json file.

should i apply this property to all of them? or just ones above a certain size?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A: Art Area: Art with no implications for other areas. Changes: No C# Changes: Requires no C# knowledge to review or fix this item. Changes: Sprites Changes: Might require knowledge of spriting or visual design. DB: Beginner Friendly Difficulty: Great for beginners. Unambiguous in scope, and explains how to achieve the result. P3: Standard Priority: Default priority for repository items. S: Art Approval Status: The art (e.g. Spritework) has been approved by an art lead. S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. size/M Denotes a PR that changes 100-999 lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants