Need more info about your game mode and the level size. But I will spill a lil info to chew on.
For an effect/entrance how about spawning a destructible snowman, then spawning the character inside it? Kinda cool for a snow themed game.
Spawning in to instantly die has been one of the most hated things in every shooter I’ve ever played. It’s also one of the biggest complaints from their communities. Static spawns absolutely suck in this regard. They are easy to memorize and abuse.
If it’s DM/TDM take a look at how some of the classic AAA shooters did it. CoD, BF, MOH, UT, Quake, CS/CSS etc.
CoD (1- WaW) used a grid based system (4 quadrants). Each quadrant had static spawn points. You’d respawn at the furthest quad from the bulk of the enemy players.
1 ] 2 ]
3 ] 4 ]
e.g. If the majority of the enemy team (%) was in quad 1, then you’d spawn at quad 4.
A variant would be to have 3 variables. Quads (array, actor ref), Quad Index (int, default 0) and Quad Percentage (int/float, default 100).
For each loop the quads array, get overlapping actors of class (players) -> calc percentage of enemy team in quad (loop, use team identifier). If percentage is less than current, set “Quad Percentage” and “Quad Index”.
On completed (for each) set percentage to 100%, use Quad Index for the spawning quad… Quads → get copy(Quad Index).
You can take this a few steps further by having each quad sub divided and run the same process with it. Once you have your finalized quad pick a static spawn point inside the quad or go all in with random.