If interested, my situation is a car racing game. The graphics code is in the client module, and the logic code is in the shared module. The player plays in the browser, and once finished, their input controls are sent to the server, that then replays the race in the logic code to make sure they didn't cheat.
Thus, the logic code is run in JavaScript in the browser, and in Java on the server. In addition to that, players also race against replays of other players. Those replays are generated in the browser, again using the logic code from the recorded player inputs. JavaScript has been rock solid, across all browsers and platforms (PC / Mac / Android / iPhone / Smart TVs, Tesla browser / ...) The logic code always outputs the same results. Java not so much. There is a pattern however: - The failures always occur with races that have computer opponents (which is about 30% of the races). - The failures always consistently fail with the same results. Ie: If I run a test with mvn test, I'll always get one result. If I run the same test with IntelliJ, I'll always get the same different result. I'm trawling through the computer opponent logic code to see if I can see anything suspicious. I have avoided obvious things like: - Not using Math.sin, Math.cos, Math.atan, etc. as those return different results based on the platform. - Not using floats, as they are not suported by JavaScript. As Colin suggested, I'm also implementing the tests with GWTTestCase, to see if they pass or not. The game if you're curious: https://drift.team/ Cheers. On Monday, 28 April 2025 at 5:01:33 pm UTC+10 RobW wrote: > If your solution relies on absolute accuracy across different languages > and machines but you're using floating point I'd say you are setting > yourself up for some major heartache and issues. Even with IEEE 754, and > supposedly strict rules on rounding I wouldn't trust the fidelity across > machines. Do you really need to do the math both on the server in Java and > in the browser? Pick one and use that maybe. Or, if you need complete > fidelity, use something other than floating point - integer arithmetic or > maybe BigDecimal on the server. > > On Sunday, 27 April 2025 at 13:39:06 UTC+1 Thomas Broyer wrote: > >> On Sunday, April 27, 2025 at 2:06:11 AM UTC+2 ma...@craig-mitchell.com >> wrote: >> >> I asked AI about my problem, and it told me it was due to Java not >> following the IEEE 754 standard and I have to expect inconsistant results. >> However, I don't know if that's correct. There are people saying Java does >> follow IEEE 754 and others that say it doesn't. >> >> >> It does: >> https://docs.oracle.com/javase/specs/jls/se24/html/jls-4.html#jls-4.2.3 >> >> -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/bfcc50a6-a012-4bc9-a5b1-10430e63ea13n%40googlegroups.com.