I took the double blocked quotes from here. (I’m a lazy writer).
Blocked the text to ease reading.
“Chasing a variable with destination “another variable that is chasing something” can easily lead to problems (server crashes), especially if a camera is set to the position of the first variable (since the camera is also “chasing” that variable with Blend Speed != 0) and if the chasing is done for many players at once ( Ongoing – Each Player rule).”
Do not use Chase variable to destination action.
Create a loop rule that ticks the variable to destination every 0.1 seconds or so.
Avoid using conditions, which check for constantly changing float values.
[You can create a HUD entity for a game value (Game time) to check, if it is a float (x.xxx), and it changes in a very rapid rate.]
(Ex. Compare ( Game time > 600 ) condition is bad. Create a personal game time loop that ticks at a lower rate.)
“An Ongoing – Each Player rule that loops with a relatively low waiting time and has a lot of actions (problems started at around 10-15 for me) will cause micro-stutter and eventually make the server crash when there are 12 players or AI bots.”
If you use Ongoing – Each Player event, but with a certain hero, change it from All to the Hero, so it wont be condition run when the hero is not played by the player.
(Most of my rules work, thanks to this.)
Order your rule conditions top to bottom from the least to the most often changing to lessen the strain on condition checking.
(Secondary ordering: From most of the time false to the least often false.)
Ex. Is button held is updated less often (Your thumb press rate) than Distance between (Player1 , Player2) (Every 0.016 milliseconds).
If you can place conditions as skip if actions in a smart way, they may help against server crashes.
“Creating a lot of effects within a short amount of time will sometimes lead to problems, especially if there’s a lot of other actions in loops taking place already (effects don’t show up at all or with the wrong graphics and the server will crash shortly after that). In some cases, the problem can be solved by placing a short Wait action (like 0.1 seconds) right before and after a Create Effect action.”
Remove all Created entities when you don’t need them, do not trust that the game cleans them for you when you go over the maximum amount. (was it 64?).
Also Stop all Start Holding, Start accelerating, Start … actions when you do not need them, dont leave them hanging.
(I had a loop that created over 3000 Start Holding Button entities, eventually crashed the game.)
Arrays don’t seem perform well in the workshop. I have stopped using them, and try to use the variable letters only if it’s possible.
Loops that don’t have a clear ending condition will alert the server and create a crash.
(Create an artificial ending condition if you really have to have a loop like that. Like x = true, but never make it true. But don’t do that if you can make it work some other way.)