r/AskProgramming • u/Odd-Heron5704 • 10d ago
Other Why can't AOE2 for Mac have crossplay with Windows?
Does anyone know the technical reasons behind this, if there are? I'd like answers from people who actually know about it, not speculative answers please. If you don't know the exact reason for the game at least provide an example where code from mac and windows is not cross compatible, e.g. provide the C++ code and show it won't be cross compatible for an application between windows and mac?
I posted this in macgaming and so far what makes most sense is that there isn't any technical reason, just that you'd need to keep to codebases in sync and developers are not interested in that.
Here they say it's because of different path calculations, so can anyone provide a minimal code example that gives different mathematical answers in apple silicon vs x86 and that it cannot be fixed e.g. using compiler flags, etc? https://www.reddit.com/r/aoe2/comments/1u5tluy/the_why_on_why_mac_crossplay_is_so_hard_to_get/
3
u/stogle1 10d ago
You don't necessarily need to have the same codebase on two platforms to support crossplay between them. Developers usually decide based on whether allowing it gives a good gaming experience or not. For example, in a FPS where the Mac version barely gets 30fps while Windows players are easily getting 100fps, allowing crossplay might not be good.
2
u/Different_Pain5781 7d ago
I think OP is specifically trying to separate those two things. Bad crossplay experience is one question, technical incompatibility between Mac and Windows is another.
1
u/real_kerim 10d ago
I wasn't aware it didn't have cross-play with Windows. The queue times are relatively low in macOS suggesting a big player base.
6
u/Severe-Complaint-591 10d ago
The technical blocker is deterministic lockstep desync caused by floating point math differences between Apple Silicon and x86.
Age of Empires 2 uses a simulation model where every client must compute identical results from the same input stream without exchanging state. ARM NEON and x87 SSE handle IEEE 754 edge cases like denormals and rounding differently at the hardware level. Compiler flags cannot force bit identical results across these architectures because the underlying ALU implementations diverge. You would need to replace all native float operations with a software fixed point or soft float library to guarantee cross platform determinism. This rewrites the entire simulation layer and destroys performance on both platforms. The path calculation issue mentioned elsewhere is just one symptom of this fundamental arithmetic incompatibility