2.6 Release Getting Close - Need Volunteers to Help Beta Test 2.6
-
@zlefin Check for a file called 'triplea.log', it would be in the 'triplea' folder. That file likely has the full stack trace in it.
-
@cameron wrote:
why would you remove the 'sleep' option‽
https://forums.triplea-game.org/topic/2458/unit-scroller-issues-rfc-on-changes
In short:
- multiplayer games don't go for that many rounds, sleep not persisted in save games, relatively frequent loading of saves make sleep not useful. Sleep is most useful for large maps ,large maps are likely to be played for fewer rounds (where it would be most useful, except for those games don't go that many rounds between save/reload)
- the number of units that are put to sleep is overall low, the effort to skip them again is somewhat low
- issues with keybindings, particularly an issue in multiplayer where it's easier to not have keyboard focus on the map.
3 years later, I think we need usage statistics more than ever to help us. That is a bit of an aside.. Before bringing back sleep, we would want to redesign the hot keys a bit at least. I feel like 'a,s,d,f' should also be used for map navigation. Though, working through the various design issues and everything working well in multiplayer is possibly a hot mess. Getting 2.6 actually launched at all is the goal at the moment. Following that the release model is different.
-
@panther The serious problem is only for bot-users right? Anyone who does not use bots has no reasons not to get 2.6 correct?
I think @TheDog narrowed it down pretty precisely somewhere... My recollection, 2.5 host with 2.6 client is bad, mixing versions is bad. The problem is observed after trying to move a unit as a client, game crashes. (Bots are running 2.5, they count as the host)
Another issue, 2.6 can read save games from 2.5, but not the other way round. Having players downgrade pro-actively is not cost free (breaks all of their saves). Meanwhile those that joined lobby with 2.6 & played on bots quickly ran into issues already. This makes me think the focus needs to be on getting the 2.6 lobby & bots up & then vetted properly before we take next steps.
-
-
surely large maps mean more turns not less... certainly do in my games.
it seems what you're saying is that it's not useful in multiplayer games so you're taking away the option from solo players just because we don't matter? i really don't understand why you'd remove the option. people don't have to use it if they don't want to. seems like you're punishing people for not playing the way you do.
i didn't really get your bit about the keyboard shortcuts but if that's the problem just remove the keyboard shortcut - surely we don't have to have a keyboard shortcut for everything.ugh. skipping dozens of aaguns every round is such a pain in the arse.
-
ok, found that log file. here's the data it has from around the most recent instance
313 08:16:49.940 [main] INFO o.t.game.client.HeadedGameRunner - Launching game, version: 2.6.14759
406 08:16:50.033 [Thread-4] DEBUG g.s.e.data.gameparser.GameParser - Parsing game XML: C:\Users\Tom\triplea\downloadedMaps\battle_for_arda\map\games\Battle_For_Arda.xml
10049 08:16:59.676 [HttpClient-1-Worker-0] ERROR o.t.h.c.w.s.GenericWebSocketClient - Web Socket error
java.util.ConcurrentModificationException: null
at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1626)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at org.triplea.http.client.web.socket.GenericWebSocketClient.messageReceived(GenericWebSocketClient.java:133)
at org.triplea.http.client.web.socket.WebSocketConnection$InternalWebSocketListener.onText(WebSocketConnection.java:248)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl$ReceiveTask.processText(WebSocketImpl.java:627)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl$ReceiveTask.run(WebSocketImpl.java:435)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl.tryChangeState(WebSocketImpl.java:853)
at java.net.http/jdk.internal.net.http.websocket.WebSocketImpl$SignallingMessageConsumer.onText(WebSocketImpl.java:786)
at java.net.http/jdk.internal.net.http.websocket.MessageDecoder.payloadData(MessageDecoder.java:222)
at java.net.http/jdk.internal.net.http.websocket.Frame$Reader.readFrame(Frame.java:465)
at java.net.http/jdk.internal.net.http.websocket.TransportImpl$ReceiveTask.run(TransportImpl.java:665)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.websocket.TransportImpl$ReadEvent.handle(TransportImpl.java:762)
at java.net.http/jdk.internal.net.http.RawChannelTube$ReadSubscriber.checkEvents(RawChannelTube.java:174)
at java.net.http/jdk.internal.net.http.RawChannelTube$ReadSubscriber.onNext(RawChannelTube.java:204)
at java.net.http/jdk.internal.net.http.RawChannelTube$ReadSubscriber.onNext(RawChannelTube.java:157)
at java.net.http/jdk.internal.net.http.common.SSLTube$DelegateWrapper.onNext(SSLTube.java:202)
at java.net.http/jdk.internal.net.http.common.SSLTube$SSLSubscriberWrapper.onNext(SSLTube.java:484)
at java.net.http/jdk.internal.net.http.common.SSLTube$SSLSubscriberWrapper.onNext(SSLTube.java:287)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run1(SubscriberWrapper.java:318)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper$DownstreamPusher.run(SubscriberWrapper.java:261)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper.outgoing(SubscriberWrapper.java:234)
at java.net.http/jdk.internal.net.http.common.SubscriberWrapper.outgoing(SubscriberWrapper.java:200)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader.processData(SSLFlowDelegate.java:403)
at java.net.http/jdk.internal.net.http.common.SSLFlowDelegate$Reader$ReaderDownstreamPusher.run(SSLFlowDelegate.java:264)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829) -
@zlefin Thanks for reporting!
I believe it should be fixed now with 2.6.14762. -
it seems to be fixed, I'll keep an eye on it.
However there's another issue which isn't necessarily new.
I'm getting an error whenever I try to open the admin toolbox, which I uised to be able to when I was using 2.5.x
other mod actions still work (insofar as I've tested), it's just opening the admin toolbox that isn't working.
here's the log from the session, the error is a few lines down.
204 13:21:30.921 [main] INFO o.t.game.client.HeadedGameRunner - Launching game, version: 2.6.14762
329 13:21:31.046 [Thread-4] DEBUG g.s.e.data.gameparser.GameParser - Parsing game XML: C:\Users\Tom\triplea\downloadedMaps\battle_for_arda\map\games\Battle_For_Arda.xml
14725 13:21:45.442 [AWT-EventQueue-0] ERROR o.t.game.client.HeadedGameRunner - [401 Unauthorized] during [GET] to [https://prod.triplea-game.org/maps/list-tags] [MapTagAdminClient#fetchAllowedMapTagValues()]: [Invalid request]
feign.FeignException$Unauthorized: [401 Unauthorized] during [GET] to [https://prod.triplea-game.org/maps/list-tags] [MapTagAdminClient#fetchAllowedMapTagValues()]: [Invalid request]
at feign.FeignException.clientErrorStatus(FeignException.java:224)
at feign.FeignException.errorStatus(FeignException.java:203)
at feign.FeignException.errorStatus(FeignException.java:194)
at feign.FeignException.errorStatus(FeignException.java:171)
at feign.InvocationContext.decodeError(InvocationContext.java:126)
at feign.InvocationContext.proceed(InvocationContext.java:72)
at feign.ResponseHandler.handleResponse(ResponseHandler.java:63)
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:114)
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:70)
at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:99)
at com.sun.proxy.$Proxy30.fetchAllowedMapTagValues(Unknown Source)
at games.strategy.engine.lobby.moderator.toolbox.tabs.maps.MapsTabModel.fetchAllowedMapTagValues(MapsTabModel.java:44)
at games.strategy.engine.lobby.moderator.toolbox.tabs.maps.MapsTab.mapTagTable(MapsTab.java:74)
at games.strategy.engine.lobby.moderator.toolbox.tabs.maps.MapsTab.get(MapsTab.java:56)
at games.strategy.engine.lobby.moderator.toolbox.tabs.TabFactory.buildMapsTab(TabFactory.java:77)
at games.strategy.engine.lobby.moderator.toolbox.tabs.TabFactory.buildTabs(TabFactory.java:37)
at games.strategy.engine.lobby.moderator.toolbox.ToolBoxWindow.lambda$showWindow$0(ToolBoxWindow.java:47)
at org.triplea.swing.JFrameBuilder.lambda$build$0(JFrameBuilder.java:102)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at org.triplea.swing.JFrameBuilder.build(JFrameBuilder.java:102)
at games.strategy.engine.lobby.moderator.toolbox.ToolBoxWindow.lambda$showWindow$1(ToolBoxWindow.java:50)
at org.triplea.swing.SwingAction.invokeNowOrLater(SwingAction.java:151)
at games.strategy.engine.lobby.moderator.toolbox.ToolBoxWindow.showWindow(ToolBoxWindow.java:27)
at games.strategy.triplea.ui.menubar.LobbyMenu.lambda$new$2(LobbyMenu.java:71)
at org.triplea.swing.JMenuBuilder.lambda$addMenuItem$0(JMenuBuilder.java:54)
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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
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) -
Is there a setting to change the battle calcs default nation selection? I couldn't find anything in engine settings or in the battle calc screen itself
It used to be that it would default to the first hostile nation, but now it defaults to the nation who's current turn it is. That means that when I select one of my own provinces and open the battle calc it defaults to having my units as both the attacker and defender, which means I have to clear it in order to see what my units actual defenses are like (because a lot of units in the Arda map have modifiers that reduce hostile unit stats). I want to change the default so it's like it used to be, or at least defaults to something empty.
-
I thought when you overbought max units, it wouldn't obliterate your entire buy ?
@TheDog did this change ?
-
@beelee
depends on game setting:<property name="Unplaced units live when not placed" value="true" editable="false"> <boolean/> </property> -
I thought when you overbought max units, it wouldn't obliterate your entire buy ?
Yes in latest 2.6 this is true.
Zlefin is asking about battle calcs, but I dont use that much. -
ok I had that happen so I'll grab a save next time and make a issue
-
Here's the save
Max Build Kills Entire Buy.tsvg
Game is here https://github.com/triplea-maps/global_40_expansion_uhd_boxes





Go ahead and move to wherever if needed. Saw we didn't have todo git reports anymore
-
Edit
14752 -
Idk if this matters but some units you are able to buy 3 of with 1 purchase
-
@beelee
I have checked, 1941 GCD also has the same problem, that is all the purchases are wiped, when one of the purchases exceeds the maxBuiltPerPlayer, just like 2.5 used to do. Also 1941 GCD only has 1 for 1 purchases.Shame 2.6 has regressed.
-
-
@zlefin said in 2.6 Release Getting Close - Need Volunteers to Help Beta Test 2.6:
Is there a setting to change the battle calcs default nation selection? I couldn't find anything in engine settings or in the battle calc screen itself
It used to be that it would default to the first hostile nation, but now it defaults to the nation who's current turn it is. That means that when I select one of my own provinces and open the battle calc it defaults to having my units as both the attacker and defender, which means I have to clear it in order to see what my units actual defenses are like (because a lot of units in the Arda map have modifiers that reduce hostile unit stats). I want to change the default so it's like it used to be, or at least defaults to something empty.
I think this was just an oversight, I guess the case of someone doing a battle calc on another player's turn wasn't considered... I can check if we can revert that part of the logic.
-
@myrd said in 2.6 Release Getting Close - Need Volunteers to Help Beta Test 2.6:
@zlefin said in 2.6 Release Getting Close - Need Volunteers to Help Beta Test 2.6:
Is there a setting to change the battle calcs default nation selection? I couldn't find anything in engine settings or in the battle calc screen itself
It used to be that it would default to the first hostile nation, but now it defaults to the nation who's current turn it is. That means that when I select one of my own provinces and open the battle calc it defaults to having my units as both the attacker and defender, which means I have to clear it in order to see what my units actual defenses are like (because a lot of units in the Arda map have modifiers that reduce hostile unit stats). I want to change the default so it's like it used to be, or at least defaults to something empty.
I think this was just an oversight, I guess the case of someone doing a battle calc on another player's turn wasn't considered... I can check if we can revert that part of the logic.
@Myrd Defaulting to "the first hostile nation" or whatever other deterministic way seems to me so simplistic that I would leave it empty.
If it has to default to something (and we are not using some sort of artificial intelligence somehow to calculate the most likely player against which it can be assumed one would want to calculate), I would have it being purely randomized but excluding the "Neutral" player and every player assigned as default to "Does Nothing".
For example, if, in "270BC Wars", I open the battle-calculator on "Carthage", the other side would be given as either "Rome", "FreeGreece", "Egypt" or "Parthia" with a chance of 25% for each of them (the random selection happening every time it is opened).
Alternatively, it would make sense to base it on simple statistical values, like opening on the enemy player having the highest current production amongst them all (the "biggest" one).
(The eligible players should be either them all or based on the alliances of
playerList, not on the relationships (because there are and may be games in which you want to battle-calculate now against players having an allied relationship with you with which you may be at war in the future))
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login