Napisze tak... Twoje rozwiązanie już dąży w kierunku Real Time, a to na samym php jest w zasadzie niewykonalne. Tu trzeba by już kombinować pod kątem albo JAVA by uzyskać możliwość nie tylko w kierunku klient-> serwer, ale już full duplex, czyli także informacje idące w druga stronę, czyli zainicjowane przez sam serwer. Inaczej będziesz zmuszona do tworzenia czegoś w stylu AJAX ustawiony na wykonywanie się w pętli co ileś sekund. Im krótszy okres tym większy realizm, ale też mocne obciążenie serwera. Dlatego myślałbym o czymś w stylu:
plansza, grafika, animacje itp preloadowane, w miarę możliwości statyczne lub ściągane tylko w ostateczności. Sam AJAX zaś odpowiadałby za przesyłkę minimalnej ilości danych zmieniających się, czyli przykładowo ruch jednostek lub jakakolwiek akcja uchwycone w znaczniki czasu. Takie trochę pseudoturowe. Akcja miała by czas trwania jako wielokrotność okresu między odświeżeniami. W ten sposób przeciwnicy byliby częściowo uodpornieni na prędkość łącza. Tura 5-10 sekund pozwalałaby wykonać w miarę jakąś ilość rozkazów. Przy czym rozkazy z obu stron szły by nieco "na ząbki", znaczy początki/końce odświeżania wypadały by w środku tur przeciwnika, co pozwalało by odbierać przez bazę i aktualizować naprzemiennie ruchy wojsk wroga. Może zaprezentuję tok:
Robię ruchy, które lecą do bazy z AJAXa, a jako zwrotka dostaję pozycję wszystkich wojsk na mapie które uległy zmianom wraz z określeniem dokąd idą lub jaką akcję wykonują. Jeśli nie robiłbym nic, to i tak co pewien okres (owe 5-10s) dostaję odświeżone informacje o działaniach. Jako że każdy ruch to wielokrotność "tury", to mogę szacować kiedy dana jednostka zakończy działanie, dojdzie na określoną pozycję (koszta ruchu i akcji), co pozwala samemu podjąć pewne działania. Przy czym zmiany te byłyby samoaktualizowalne. O co mi chodzi? Ano fakt, że jeśli jednostki obie są w tym samym czasie w ruchu względem siebie to dystans się zmienia w każdej turze co pozwala im podjąć działania względem siebie w innym niż wyliczony czas. Strzały w końcu też lecą choćby i strzał w pozycję pewną może się zakończyć chybieniem jeśli przeciwnik zszedł z linii strzału lub zwiększeniem obrażeń jeśli się zbliżył bo "idzie po naszej linii strzału". Szarża kawalerii może się zaś nadziać na nadbiegających pikinierów, przez co straty konnicy będą większe. To już pole do pomysłowości jak algorytmy walki zaimplementować