I really don't get it, despite having written my first game over 20 years ago. How can a large company publish a game for multiple systems, but fail to support cross platform play? I was really disappointed a couple times.
- Using unsized C types (long in particular) that are sized differently between Windows and macOS/Linux. Combine that with cast-to-structs for (de)serialization and suddenly different platforms are incompatible.
- Different float rounding modes (possibly changed by some external code) that will lead to desynchronization.
Nothing that can't be fixed but considering that non-Windows PC platforms tend to be an afterthought its not hard to imagine that things like cross play are often cut.
Another thing that can happen is that the different platforms don't all have the same version. This is usually only a problem with external porting companies that don't get the code until it is finished for the main platform, but could also happen for in-hosue ports when issues crop up that only affect secondary platforms and the release is not held back for the main platform as well.
Oh my, thanks, that makes sense. But damn, that almost sounds like a problem solvable with a regular expression :/ Well, at least before you released the game and nobody will protest about save game compatibility yet.
Two possible reasons: one is that console platform owners don't like that idea and they have torpedoes it in the past. The second one is that gameplay and control schemes may be radically different across platforms. Controller input on consoles vs. Keyboard and mouse on PC does lead to platform specific differences in some games ("auto aim" in shooters, for example). Balancing that so that only a minimum number of players feel cheated is hard.