Mam 18 lat doświadczenia jako programista, większość rzeczy sam projektowałem, od dekady programista wydajnościowy (tj. piszę kod, w którym uwzględniam to jak działa pamięć procesora czy jego optymalizacje, np. branch predictor). Pracowałem 10 miesięcy przy MG, w tym czasie ilość błędów zwróconych przez QA to były może 3 czy 4 sztuki, 1 (słownie jeden) zwrot od dwóch graczy z crashem (nie przypilnowany nullpointer, bo leciałem unmanaged). Włożyłem w tą pracę absurdalną ilość godzin, ale i tak było za mało i za skomplikowanie (przyszedł i pokazał jak się robi prosto... tj jak prosto dostaje się karę na 4.5kk za błędy).
Piszesz o "procedurze" - tego terminu używa się głównie w bazach danych, nie ma wzorców projektowych opartych o procedury, jak już to wydzielanie faz (wymagające odgórnego systemu), jakieś szablonowane metody (też coś musi je odpalać i pilnować ich stanu), od biedy architektura mikroserwisów (mikroserwis jako zbiór procedur operujący na wydzielonym zestawie informacji, ale do gamedev to średnio pasuje koncepcyjnie) - bo wydaje Ci się że istnieją jakieś magiczne, proste rozwiązania na synchronizacje 20 współzależnych elementów ( w tym przykładzie powiedzmy 3-4 gangusów, 3-4 policjantów, 5 npc i 6 samochodów ) gdzie każdy dysponuje 4-8 różnych opcji, każdy będący w innym otoczeniu i z innym celem własnym, oraz akcją której warunki mogą się zmienić po każdej klatce. Nie ma. Trzeba to wszystko wytyrać.