Awake/Start order across different platforms.

I’m aware that I can’t rely Awake () to be called in hierarchical or some other predictable order between builds and changes in a scene. However, I can observe that awakes will be invoked in the same exact order when neither code nor data were changed between runs. And this is a very important feature, especially when you write lock-step synchronization between clients. It makes you certain that every bit of synchronization-sensitive data gets initialized on all clients in the same exact way in every aspect. This leads to the following question: if I publish and deploy same exact code with the same exact data to some other platform, will this order remain intact? Is there any chance that developers of unity engine internals have some specification on this topic that they adhere to, upon writing runtimes for each platform?

There is no guaranteed order for anything except as explicitly documented. So no, you can’t expect GameObjects to run Awake functions in any particular order unless you do something to make that happen. Relying on undocumented behavior is pretty much 100% guaranteed to backfire…even if something works consistently now, it can and will change in the future.

A bit late but you can also specify the order of your scripts, which will force awake etc. to be called in a certain order: Unity - Manual: Script Execution Order settings