343 Industries,
I wrote an open letter for 343 Industries on my blog proposing a new spawn system for the next Halo title (I assumed would be Halo 5 when I began writing it up). In that open letter I propose both a new approach entirely, but also offer some suggestions on how to alter the influencer weights of the current system should you wish to use it for the next title instead.
I hope that you will take the time to read through it and even reply to either this thread or post a comment on my blog under the letter so I know that you have read it.
Thanks.
I’m not 343i, but I have a few comments, if you don’t mind me sharing.
I’m curious as to how your system would handle very distant cross-map sightlines. It occurred to me to have the ability to place some sort of “spawn influencer” that can be linked to respawn zones. If an enemy stands inside a spawn influencer, it would be tantamount to standing inside of the lniked zone. Thoughts on this?
> 1. Calculating the distances between each enemy and each Respawn Point is eliminated. Instead, the intersection of each enemy and each zone is performed (faster than calculating three dimensional distance, and less number of calculations to perform).
I’m not so sure.
For a rectangular-prismatic respawn zone, the game would probably use a separating axis test to determine whether an enemy is inside. You’d need one SAT per enemy, and that SAT would consist of three axis checks, each of which involves a few cross and dot product operations.
By comparison, blindly checking distance only requires that you subtract one vector from another.
> I’m not 343i, but I have a few comments, if you don’t mind me sharing.
>
>
> I’m curious as to how your system would handle very distant cross-map sightlines. It occurred to me to have the ability to place some sort of “spawn influencer” that can be linked to respawn zones. If an enemy stands inside a spawn influencer, it would be tantamount to standing inside of the lniked zone. Thoughts on this?
>
>
>
>
> > 1. Calculating the distances between each enemy and each Respawn Point is eliminated. Instead, the intersection of each enemy and each zone is performed (faster than calculating three dimensional distance, and less number of calculations to perform).
>
> I’m not so sure.
>
> For a rectangular-prismatic respawn zone, the game would probably use a separating axis test to determine whether an enemy is inside. You’d need one SAT per enemy, and that SAT would consist of three axis checks, each of which involves a few cross and dot product operations.
>
> By comparison, blindly checking distance only requires that you subtract one vector from another.
I would have thought intersection calculations would be much faster because it would involve simple value comparisons. Where as distance requires the addition of squares and the resulting square root. Vector math would be based in part on that approach, i don’t know how you would get away from it. Regardless, I doubt that it would be any slower simply because the number of zones would be quite few in comparison to the points.
As for open spawning, i think i addressed that didn’t I? A zone could stretch quite a distance to cover all terrain (and air space) where an enemy could be present to prevent LOS to the spawn point.
But on another point you would want to locate spawn points behind some obstacle even if in the open to some degree. I don’t see anyone wanting to have a spawn point in full view across the map by the enemy’s base. That doesn’t seem necessary, and would require a very long zone. So in essence it may not work well for cross map base to base sight lines, but then it shouldn’t need to work for that scenario in the first place. That would be my thought on the matter.
In my honest opinion, the current system is perfectly fine, it just needs some minor tweaks; mostly in weightings. My biggest issues with the current system in H4 is the radius of influence for enemy players, the low weighting from sight lines on spawn points, and the algorithm that forces players to spawn at the highest weighted (based on influences in game) spawn point at the furthest distance from the lowest (most negative) position on the map. That being said, here are my recommendations.
First and foremost, tie the radial distance of player influences to the size of the map. Small maps meant for 4v4 should be no greater than a 3 to 4 forge unit radius, which is a fraction of the current radial size. For forge maps, this could be tied to an object spawned such as the safe boundary to define whether it’s a small map or large. Currently, with the 9 (or 9.5) unit radius, it is too easy for players to effectively position themselves to essentially block spawns for the opposing teams, which leads to messy spawn trapping set ups.
The weighting for line of sight is too low in this game currently. With the right set up to deny spawn points, players can easily watch where they know opposing players will spawn. Some sort of radial influence based on the reticule of the player should be utilized for this. Spawning in a players sight is unacceptable, but spawning in their perimeter vision is fine. There should also be something to account for a player about to spawn, as it should be rare that a player spawns and has a direct line of sight to an opposing player.
As for the algorithm, it makes the spawn system far to predictable and really throws off the ability of players to spawn in middle sections of maps, which is really problematic for elongated maps such as Narrows or even my own Orion.
Another trait I would like to be included is for every objective gametype to have spawn zones that can be tied to the objective. This would be especially useful in KotH and Extraction, as you will be able to tie where players can spawn based on where the objective is. Of course this would also include removing the influence affect that objectives would have as well.
At the end of the day, I don’t expect 343i to build an entirely new spawn system. I do hope that they can at least take simple changes such as the ones I listed into consideration for improving the current one in use.