Skip to content

Add Spawn Points#1490

Open
Lumminal wants to merge 8 commits intoRE-SS3D:developfrom
Lumminal:spawn-tiles
Open

Add Spawn Points#1490
Lumminal wants to merge 8 commits intoRE-SS3D:developfrom
Lumminal:spawn-tiles

Conversation

@Lumminal
Copy link

@Lumminal Lumminal commented Feb 10, 2026

Summary

Adds SpawnPoints which can be used by mappers for jobs and late-join players.
Map Editor has 3 new prefabs, SecuritySpawnPoint, AssistantSpawnPoint and LateJoinSpawnPoint.

The current maps have late join spawn points mapped in them (they act as fallback but work for now)

PR checklist

  • The game builds properly without errors.
  • No unrelated changes are present.
  • No "trash" files are committed.
  • Relevant code is documented.
  • Update the related GitBook document, or create a new one if needed.
  • Add art assets for spawn point prefabs
  • Add spawn points to available maps

Pictures/Videos

2026-02-12.16-38-20.mp4

Testing

  • Open server
  • Open client instances
  • Start round
  • Map some spawn points
  • Restart round
  • You should spawn at a spawn point according to your job or if you're late-joining. If you ready and there's no job spawn point, you should spawn at a random one.

Networking checklist

  • Works from host in host mode.
  • Works from server in server mode.
  • Works on server in client mode.
  • Works and is syncronized across different clients.
  • Is persistent.

Changes

  • Adds prefabs named SpawnPoints with their own script called Spawn Point which hold SpawnPointData (scriptable object) and get registered in SpawnPointManager (subsystem) when the round is warming up
  • Adds ScriptableObject that holds the data about the Spawn Point, like SpawnType (is this a spawn point for a job, or a late-join? can be expanded for observers once that is implemented), and the job related to this Spawn Point if there's any (for now assistant and security).
  • Added a new subsystem SpawnPointManager which handles spawning during EntitySubSystem's SpawnPlayer() method. It chooses between valid spawn points, and if it doesn't find one, it logs as an error and the client will spawn at EntitySubSystem's _spawnPoint position (which was how it worked before).
  • Adds a new visibility layer in Tags and Layers called "MapEditor" which gets activated for people once they have the map editor ui open. The SpawnPoints live on that layer, therefore only the map editors can see them. Tested with different clients.

Related issues/PRs

Closes #1435

@Lumminal Lumminal marked this pull request as draft February 10, 2026 22:45
@Lumminal Lumminal marked this pull request as ready for review February 13, 2026 16:09
@Lumminal
Copy link
Author

I think its good for review.

Right now its still early to tell how it'll hold up with a full lobby, but it works for debugging cases. I tried to optimize it as much as I can. This is my first pr here so i hope i didn't write code that will burn your eyes

I tested this multiple ways:

  1. 2 clients and 1 host. Added spawn point for assistant, 5 late join spawners, 1 security spawn point. Press ready for everyone, sec spawned at sec spawn point, assistant at assistant spawn point and the other assistant at late-join spawn point as fallback.
  2. Pressed embark by late-joining, spawned at late-join spawners without being on top of each other
  3. Everyone shows up correctly on the screen, no issues with syncing but the sync code is kinda weird

@Lumminal Lumminal changed the title [WIP] Add Spawn Points Add Spawn Points Feb 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Spawn clients on different tiles

1 participant