12-07-2020, 01:37 PM
Hi,
I think I found the problem.
If a spectator enters, the game will vanish.
Cheers,
Yen-Chi
I think I found the problem.
If a spectator enters, the game will vanish.
Cheers,
Yen-Chi
12-07-2020, 01:37 PM
Hi,
I think I found the problem. If a spectator enters, the game will vanish. Cheers, Yen-Chi
12-07-2020, 01:39 PM
Hi Yen-Chi,
Thank you!! That does indeed seem to be the cause of the problem. I will fix this up and release a new version ASAP. My apologies to anyone affected by this. Cheers. Matthew
12-07-2020, 02:03 PM
(This post was last modified: 12-07-2020, 02:07 PM by MatthewStephenson.)
Hi,
We have updated our online server code to partially fix this problem. Players joining a game as a spectator will now no longer cause the game to end. However, players who attempt to join a game as a spectator will also not be able to see the game. We will fix this soon and push out a new Ludii version, but for the time being you should not experience any issues with games randomly ending from Ludii v1.1.7. If you are still experiencing issues, please let us know. Cheers, Matthew
12-07-2020, 03:41 PM
Hi,
We have just uploaded a new version of the Ludii v1.1.7 release which fixes the spectator issue. This is not a full new release, but please re-download v1.1.7 if you wish to spectate a game. Thank you all for your patience during this. Cheers. Matthew
12-08-2020, 08:17 AM
There is another bug (or the same without the message "Your local game state is out of sync with the server, please re-join this game from the remote dialog.").
In the game 452, which has vanished during the game after the move of johan de Koning. I play the move 24, then johan the moves 25 and 26. In my app, it is write in the Status tab "Game 452 is waiting for your move", which is normal. However, in the Moves tab, there are no the moves 25 and 26 and i cannot play.
12-08-2020, 08:46 AM
Hi Quentin,
Thanks for letting us know. Our records indicate that this game was played using app version 1.1.5, can you confirm this is correct? We advise you to use v1.1.7 from now on if possible. I will also try and update our server code for handling older older app versions as well, to prevent this spectator bug in them as well. Cheers, Matthew
12-08-2020, 09:06 AM
We use 1.1.5 (i update my code, but my opponent could not use the latest version).
Going back to my previous idea to add flexibility to the online mode, it would be nice to have an option in the online game creator that instead allows one to choose a new game and start it from the beggining, launch a remote game from the current state of the board window. This would allow, I think most simply, to add the function of saving and loading of games for the online mode (in using the option of the offline mode). Thus in case of bug, it is enough to leave the online mode, to reconnect and start from the current state so that the current bugs are less penalizing). However, this option may be complicated to implement with your code.
12-08-2020, 09:20 AM
Hi Quentin,
Thanks for the suggestion. This would be a complicated feature to implement correctly, especially for stochastic games. But I will discuss it with the rest of our team. Games played using v1.1.5 should no longer end prematurely, but please let me know if it happens again. Cheers, Matthew
12-08-2020, 11:07 AM
(This post was last modified: 12-08-2020, 11:12 AM by Quentin Cohen-Solal.)
With Ludii 1.1.7, in Game 461, there is the following bug message for my opponent: The subbitted player hashcode does not match that stored in the database. Quentin Cohen-Solal to move". But, in my app, i do not see its move (it is "zhangpei to move").
In the console: SuccessUPDATE mybb_users SET IncomingMessages = CONCAT(IncomingMessages,'Game 461 is waiting for your move',CHAR(10)) WHERE uid = '281' Few moves before (just before or after move 26), the following error occurs in the terminal: Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException: Vector Enumeration at java.base/java.util.Vector$1.nextElement(Vector.java:375) at java.desktop/javax.swing.plaf.basic.BasicTableHeaderUI.getPreferredSize(BasicTableHeaderUI.java:816) at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1680) at java.desktop/javax.swing.table.JTableHeader.getPreferredSize(JTableHeader.java:447) at java.desktop/javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:98) at java.desktop/java.awt.Container.preferredSize(Container.java:1823) at java.desktop/java.awt.Container.getPreferredSize(Container.java:1807) at java.desktop/javax.swing.JComponent.getPreferredSize(JComponent.java:1682) at java.desktop/javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:728) at java.desktop/java.awt.Container.layout(Container.java:1537) at java.desktop/java.awt.Container.doLayout(Container.java:1526) at java.desktop/java.awt.Container.validateTree(Container.java:1722) at java.desktop/java.awt.Container.validate(Container.java:1657) at java.desktop/javax.swing.RepaintManager$3.run(RepaintManager.java:745) at java.desktop/javax.swing.RepaintManager$3.run(RepaintManager.java:743) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:742) at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1889) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) at java.desktop/java.awt.Dialog.show(Dialog.java:1070) at java.desktop/java.awt.Component.show(Component.java:1716) at java.desktop/java.awt.Component.setVisible(Component.java:1663) at java.desktop/java.awt.Window.setVisible(Window.java:1031) at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005) at app.display.dialogs.util.DialogUtil.sharedInitialisation(DialogUtil.java:85) at app.display.dialogs.util.DialogUtil.initialiseSingletonDialog(DialogUtil.java:49) at app.display.dialogs.remote.RemoteDialog.showDialog(RemoteDialog.java:109) at app.menu.MainMenuFunctions.checkActionsPerformed(MainMenuFunctions.java:761) at app.DesktopApp.actionPerformed(DesktopApp.java:294) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1020) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1064) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6635) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6400) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5011) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4843) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) I try to reconnect and in the consol, i have an infinite loop of "received move was not legal: [...]" and in the Status tab : "Your local game is out of sync with the server, please re-join this game from the remote dialog."
12-08-2020, 11:19 AM
Hi Quentin,
The issue seems to be that the hash of the players name that is stored when they log in is not the same as that being transmitted on their moves. When you say that you try to reconnect, do you mean to the game? And whenever you reconnect, do you get the "Your local game is out of sync with the server, please re-join this game from the remote dialog." message repeated? |
|