Closed TomAtGithub closed 1 year ago
Thanks for reporting!
Looks like there are all the required null checks in InputValidationHelper.java. I suspect that the game state is changed by another thread. Could be related to #65.
Found the cause of #65. Not related to this one.
Thanks for looking into this problem. Unfortunately I don't remember exactly what I did. I remember it as follows:
I played the game and then "mimized" it to use another app. Then, I started the game again and after a short while it crashed.
Also my phone is a bit slow, so maybe something took a bit longer to load and this lead to the crash.
Your phone being slow is a good hint. Might have caused some unusual timing.
Seems like the current game state was being rendered during the enemy turn. This is ok if triggered by the AI thread when you have visible enemy turns enabled. But it looks like you don't. Something else triggered the rendering. The stack trace leads to the parameter input stage (the one shown before you start the game). But it doesn't make much sense to me. Need to investigate further.
Do you remember if you tapped on any button just before the crash happened?
Yes, I have visible enemy turns disabled. It could be that I have tapped the "end turn" button (arrow on the right) but I am not sure. I tried to reproduce the crash but I was not able to reproduce it.
I remember experiencing crashes after the introduction of the "visible enemy turns" feature (which I had disabled). But this got fixed by some patch.
Edit: Usually the enemy turns finish immediately but sometimes the they take quiet long (~1-2 second). I think this was also the case when the crash happened. I think I solve the problem of long enemy turns by removing the App from the RAM and restarting it. So if these two problems are related I could be something during the game "initialization"?! But again I am not entirely sure. If it happens next time, I will pay attention and note my steps.
Edit2: When I think about it, maybe I minimized the game while the game was "calculating" the enemy turn.
Thanks for the additional details! When the enemy turns take long, is it more sporadically or does every enemy turn start to be slow until you restart the app?
Made some progress in my analysis as well: When the renderer crashed, it happened in the thread that would be called "main thread" on desktop. This however shouldn't happen while the Bot AI is doing a turn. You might have managed to cause this by quitting the game in the middle of an enemy turn. Your autosave from the report also starts in the middle of the enemy turn which is weird.
I think, I understand now. Your autosave is almost at the end of the last bot turn. When the game starts, it will initialize/update the map for the renderer. It will also update the map once the bot turn is finished. Since you have visible enemy turns disabled, both might have happened at the same time causing the crash.
Small correction: The updating of the map is already synchronized. But the ongoing enemy turn makes changes to the gamestate at the same time which likely caused this exception.
Very interesting. The "slow enemy turns" problem happens sporadically and I think it didn't happen in the last weeks.
The crash should be fixed.
About the slowdown: The fact that a restart fixes the problem makes it sound like a bug with the app. A memory leak for example could cause the app to be slow and would be fixed after a restart. But from your description, I'm not sure. It might be your phone having some random slowdowns too. If you notice some pattern on how to reproduce, please let me know.
Date: Tue Sep 19 08:08:54 GMT+02:00 2023
Game version: 1.2.0
Platform: Android
Platform version: 28
Thread: GLThread 13412
Thrown: java.lang.NullPointerException: Attempt to invoke interface method 'int de.sesu8642.feudaltactics.lib.gamestate.MapObject.getStrength()' on a null object reference at de.sesu8642.feudaltactics.lib.gamestate.InputValidationHelper.checkConquer(InputValidationHelper.java:290) at de.sesu8642.feudaltactics.renderer.MapRenderer.updateMap(MapRenderer.java:189) at de.sesu8642.feudaltactics.ingame.IngameRendererEventHandler.handleGameStateChange(IngameRendererEventHandler.java:37) at java.lang.reflect.Method.invoke(Native Method) at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:85) at com.google.common.eventbus.Subscriber$SynchronizedSubscriber.invokeSubscriberMethod(Subscriber.java:142) at com.google.common.eventbus.Subscriber.lambda$dispatchEvent$0$com-google-common-eventbus-Subscriber(Subscriber.java:71) at com.google.common.eventbus.Subscriber$$ExternalSyntheticLambda0.run(Unknown Source:4) at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31) at com.google.common.eventbus.Subscriber.dispatchEvent(Subscriber.java:68) at com.google.common.eventbus.Dispatcher$PerThreadQueuedDispatcher.dispatch(Dispatcher.java:109) at com.google.common.eventbus.EventBus.post(EventBus.java:267) at de.sesu8642.feudaltactics.ingame.ui.IngameScreen.lambda$addParameterInputListeners$15$de-sesu8642-feudaltactics-ingame-ui-IngameScreen(IngameScreen.java:470) at de.sesu8642.feudaltactics.ingame.ui.IngameScreen$$ExternalSyntheticLambda5.run(Unknown Source:2) at de.sesu8642.feudaltactics.menu.common.ui.ExceptionLoggingChangeListener.handle(ExceptionLoggingChangeListener.java:32) at com.badlogic.gdx.scenes.scene2d.Actor.notify(Actor.java:188) at com.badlogic.gdx.scenes.scene2d.Actor.fire(Actor.java:152) at com.badlogic.gdx.scenes.scene2d.ui.Button.setChecked(Button.java:125) at com.badlogic.gdx.scenes.scene2d.ui.Button$1.clicked(Button.java:93) at com.badlogic.gdx.scenes.scene2d.utils.ClickListener.touchUp(ClickListener.java:88) at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:71) at com.badlogic.gdx.scenes.scene2d.Stage.touchUp(Stage.java:355) at com.badlogic.gdx.InputMultiplexer.touchUp(InputMultiplexer.java:124) at com.badlogic.gdx.backends.android.DefaultAndroidInput.processEvents(DefaultAndroidInput.java:426) at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:472) at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1575) at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270)
Last autosave: {"players":[{"id":1,"color":{"a":1,"b":0.67,"g":0.67,"r":1},"type":"LOCAL_BOT"},{"id":2,"color":{"a":1,"b":0.8,"g":0.45,"r":0.2},"type":"LOCAL_PLAYER"},{"id":3,"color":{"a":1,"g":1},"type":"LOCAL_BOT"},{"id":4,"color":{"a":1,"g":0.5,"r":0.75},"type":"LOCAL_BOT"},{"id":5,"color":{"a":1,"b":1,"g":1,"r":1},"type":"LOCAL_BOT"},{"id":6,"color":{"a":1,"g":1,"r":1},"type":"LOCAL_BOT"}],"tiles":[{"id":7,"player_id":6,"position":{},"content":{"id":8,"class":"Capital"}},{"id":9,"player_id":3,"position":{"x":1},"content":{"id":10,"class":"PalmTree"}},{"id":11,"player_id":6,"position":{"y":1}},{"id":12,"player_id":1,"position":{"x":1,"y":1},"content":{"id":8,"class":"Capital"}},{"id":13,"player_id":6,"position":{"y":2}},{"id":14,"player_id":6,"position":{"x":1,"y":2}},{"id":15,"player_id":6,"position":{"x":1,"y":3}},{"id":16,"player_id":6,"position":{"x":2,"y":2}},{"id":17,"player_id":1,"position":{"x":2,"y":3}},{"id":18,"player_id":2,"position":{"x":3,"y":2}},{"id":19,"player_id":6,"position":{"x":3,"y":1}},{"id":20,"player_id":3,"position":{"x":2,"y":1}},{"id":21,"player_id":1,"position":{"x":2},"content":{"id":22,"class":"Tree"}},{"id":23,"player_id":4,"position":{"x":2,"y":-1}},{"id":24,"player_id":5,"position":{"x":3,"y":-2},"content":{"id":8,"class":"Capital"}},{"id":25,"player_id":2,"position":{"x":3,"y":-1},"content":{"id":8,"class":"Capital"}},{"id":26,"player_id":2,"position":{"x":3}},{"id":27,"player_id":2,"position":{"x":4}},{"id":28,"player_id":1,"position":{"x":4,"y":1}},{"id":29,"player_id":3,"position":{"x":4,"y":2}},{"id":30,"player_id":4,"position":{"x":3,"y":3},"content":{"id":10,"class":"PalmTree"}},{"id":31,"player_id":1,"position":{"x":4,"y":3}},{"id":32,"player_id":2,"position":{"x":5,"y":2},"content":{"id":10,"class":"PalmTree"}},{"id":33,"player_id":6,"position":{"x":5,"y":1}},{"id":34,"player_id":4,"position":{"x":5},"content":{"id":22,"class":"Tree"}},{"id":35,"player_id":3,"position":{"x":5,"y":-1},"content":{"id":8,"class":"Capital"}},{"id":36,"player_id":6,"position":{"x":4,"y":-1}},{"id":37,"player_id":4,"position":{"x":4,"y":-2}},{"id":38,"player_id":5,"position":{"x":4,"y":-3}},{"id":39,"player_id":2,"position":{"x":5,"y":-3}},{"id":40,"player_id":3,"position":{"x":5,"y":-2}},{"id":41,"player_id":3,"position":{"x":6,"y":-3}},{"id":42,"player_id":3,"position":{"x":6,"y":-2},"content":{"id":22,"class":"Tree"}},{"id":43,"player_id":2,"position":{"x":7,"y":-3}},{"id":44,"player_id":3,"position":{"x":7,"y":-2}},{"id":45,"player_id":5,"position":{"x":6,"y":-1}},{"id":46,"player_id":1,"position":{"x":6},"content":{"id":8,"class":"Capital"}},{"id":47,"player_id":1,"position":{"x":7,"y":-1}},{"id":48,"player_id":4,"position":{"x":7},"content":{"id":8,"class":"Capital"}},{"id":49,"player_id":4,"position":{"x":8,"y":-1}},{"id":50,"player_id":2,"position":{"x":8,"y":-2}},{"id":51,"player_id":1,"position":{"x":9,"y":-3}},{"id":52,"player_id":5,"position":{"x":8,"y":-3}},{"id":53,"player_id":4,"position":{"x":9,"y":-4},"content":{"id":8,"class":"Capital"}},{"id":54,"player_id":4,"position":{"x":10,"y":-5}},{"id":55,"player_id":5,"position":{"x":9,"y":-5},"content":{"id":8,"class":"Capital"}},{"id":56,"player_id":5,"position":{"x":10,"y":-6}},{"id":57,"player_id":5,"position":{"x":11,"y":-6},"content":{"id":10,"class":"PalmTree"}},{"id":58,"player_id":5,"position":{"x":12,"y":-7}},{"id":59,"player_id":5,"position":{"x":13,"y":-8},"content":{"id":10,"class":"PalmTree"}}],"kingdoms":[{"id":60,"player_id":6,"savings":13,"wasActiveInCurrentTurn":false,"tile_ids":[7,11,13,14,16,15,19]},{"id":61,"player_id":1,"savings":0,"wasActiveInCurrentTurn":false,"tile_ids":[12,21]},{"id":62,"player_id":5,"savings":8,"wasActiveInCurrentTurn":false,"tile_ids":[24,38]},{"id":63,"player_id":2,"savings":12,"wasActiveInCurrentTurn":false,"tile_ids":[25,26,27]},{"id":64,"player_id":3,"savings":16,"wasActiveInCurrentTurn":false,"tile_ids":[35,40,42,41,44]},{"id":65,"player_id":1,"savings":10,"wasActiveInCurrentTurn":false,"tile_ids":[46,47]},{"id":66,"player_id":4,"savings":8,"wasActiveInCurrentTurn":false,"tile_ids":[48,49]},{"id":67,"player_id":4,"savings":8,"wasActiveInCurrentTurn":false,"tile_ids":[53,54]},{"id":68,"player_id":5,"savings":17,"wasActiveInCurrentTurn":false,"tile_ids":[55,56,57,58,59]}],"player_turn":0,"bot_intelligence":"LEVEL_4","seed":1695103733497,"active_kingdom_id":61,"round":0}
Previous logs: [2023-09-19 08:05:57.728] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:05:57.728] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:05:57.728] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:05:57.728] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:05:57.729] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:05:57.729] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi selling previously bought castles again [2023-09-19 08:05:57.730] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:05:57.730] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:05:57.731] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:05:57.731] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:05:57.732] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:05:57.732] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi protecting the kingdom with leftover units [2023-09-19 08:05:57.733] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=ffff00ff, type=LOCAL_BOT, defeated=false] [2023-09-19 08:05:57.733] [INFORMATION] de.sesu8642.feudaltactics.lib.ingame.GameController human player turn begins [2023-09-19 08:05:57.733] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:05:58.658] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@af6d73b3, Type: SPEARMAN, CanAct: true, position=(-1.0,0.0)] [2023-09-19 08:05:58.665] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController activating Kingdom [tiles=[HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(5.0,-4.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(6.0,-4.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Castle, position=(5.0,-3.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(4.0,-2.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(5.0,-2.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(6.0,-3.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(7.0,-3.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(8.0,-3.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(8.0,-4.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Castle, position=(7.0,-2.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(6.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(5.0,0.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Castle, position=(4.0,1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(3.0,2.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(7.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(3.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Castle, position=(2.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(1.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(2.0,-2.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(3.0,-3.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(4.0,-4.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(3.0,-4.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(1.0,-2.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(4.0,0.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Castle, position=(2.0,-3.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(3.0,0.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(5.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(0.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(-1.0,-1.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=null, position=(2.0,-4.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@84697b5f, Type: KNIGHT, CanAct: true, position=(2.0,-5.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@af6d73b3, Type: SPEARMAN, CanAct: true, position=(-1.0,0.0)], HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c3052, Type: PEASANT, CanAct: true, position=(-2.0,0.0)]], player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], savings=12, doneMoving=false, wasActiveInCurrentTurn=false] [2023-09-19 08:05:58.667] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:05:58.676] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController picking up object from HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@af6d73b3, Type: SPEARMAN, CanAct: true, position=(-1.0,0.0)] [2023-09-19 08:05:58.677] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:05:59.008] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c310c, Type: PEASANT, CanAct: false, position=(1.0,-3.0)] [2023-09-19 08:05:59.009] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController conquering HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c310c, Type: PEASANT, CanAct: false, position=(1.0,-3.0)] [2023-09-19 08:05:59.011] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:05:59.492] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c3052, Type: PEASANT, CanAct: true, position=(-2.0,0.0)] [2023-09-19 08:05:59.494] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController picking up object from HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c3052, Type: PEASANT, CanAct: true, position=(-2.0,0.0)] [2023-09-19 08:05:59.495] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:06:00.073] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.PalmTree, position=(1.0,-4.0)] [2023-09-19 08:06:00.074] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController conquering HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.PalmTree, position=(1.0,-4.0)] [2023-09-19 08:06:00.075] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:06:00.457] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@84697b5f, Type: KNIGHT, CanAct: true, position=(2.0,-5.0)] [2023-09-19 08:06:00.458] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController picking up object from HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@84697b5f, Type: KNIGHT, CanAct: true, position=(2.0,-5.0)] [2023-09-19 08:06:00.459] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:06:01.424] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c3052, Type: PEASANT, CanAct: true, position=(5.0,1.0)] [2023-09-19 08:06:01.426] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController conquering HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Unit@16c3052, Type: PEASANT, CanAct: true, position=(5.0,1.0)] [2023-09-19 08:06:01.426] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:06:01.824] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController buying peasant [2023-09-19 08:06:01.825] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:06:02.239] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController clicked: HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.PalmTree, position=(4.0,2.0)] [2023-09-19 08:06:02.240] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController conquering HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.PalmTree, position=(4.0,2.0)] [2023-09-19 08:06:02.241] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:06:02.707] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false] [2023-09-19 08:06:02.712] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing the turn for bot player 'Player [color=00ff00ff, type=LOCAL_BOT, defeated=true]' with intelligence level 'LEVEL_4' [2023-09-19 08:06:02.714] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=00ff00ff, type=LOCAL_BOT, defeated=true] [2023-09-19 08:06:02.715] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing the turn for bot player 'Player [color=bf7f00ff, type=LOCAL_BOT, defeated=true]' with intelligence level 'LEVEL_4' [2023-09-19 08:06:02.716] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=bf7f00ff, type=LOCAL_BOT, defeated=true] [2023-09-19 08:06:02.717] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing the turn for bot player 'Player [color=ffaaaaff, type=LOCAL_BOT, defeated=true]' with intelligence level 'LEVEL_4' [2023-09-19 08:06:02.718] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=ffaaaaff, type=LOCAL_BOT, defeated=true] [2023-09-19 08:06:02.719] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing the turn for bot player 'Player [color=ffffffff, type=LOCAL_BOT, defeated=false]' with intelligence level 'LEVEL_4' [2023-09-19 08:06:02.721] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing moves in kingdom 'Kingdom [tiles=[HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(8.0,-2.0)], HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=null, position=(9.0,-2.0)], HexTile [player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], content=null, position=(8.0,-1.0)]], player=Player [color=ffffffff, type=LOCAL_BOT, defeated=false], savings=36, doneMoving=true, wasActiveInCurrentTurn=false]' [2023-09-19 08:06:02.722] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:06:02.723] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:06:02.724] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:06:02.724] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:06:02.726] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:06:02.727] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi selling previously bought castles again [2023-09-19 08:06:02.728] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:06:02.729] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:06:02.729] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:06:02.731] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:06:02.732] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:06:02.732] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi protecting the kingdom with leftover units [2023-09-19 08:06:02.734] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=ffffffff, type=LOCAL_BOT, defeated=false] [2023-09-19 08:06:02.735] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing the turn for bot player 'Player [color=ffff00ff, type=LOCAL_BOT, defeated=false]' with intelligence level 'LEVEL_4' [2023-09-19 08:06:02.736] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing moves in kingdom 'Kingdom [tiles=[HexTile [player=Player [color=ffff00ff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(3.0,-2.0)], HexTile [player=Player [color=ffff00ff, type=LOCAL_BOT, defeated=false], content=null, position=(4.0,-3.0)]], player=Player [color=ffff00ff, type=LOCAL_BOT, defeated=false], savings=14, doneMoving=true, wasActiveInCurrentTurn=false]' [2023-09-19 08:06:02.737] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:06:02.737] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:06:02.738] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:06:02.739] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:06:02.740] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:06:02.741] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi selling previously bought castles again [2023-09-19 08:06:02.742] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:06:02.742] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:06:02.743] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:06:02.744] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:06:02.745] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:06:02.746] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi protecting the kingdom with leftover units [2023-09-19 08:06:02.747] [FEIN] de.sesu8642.feudaltactics.lib.ingame.GameController ending turn of Player [color=ffff00ff, type=LOCAL_BOT, defeated=false] [2023-09-19 08:06:02.748] [INFORMATION] de.sesu8642.feudaltactics.lib.ingame.GameController human player turn begins [2023-09-19 08:06:02.748] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:08:53.499] [INFORMATION] de.sesu8642.feudaltactics.lib.ingame.GameController generating a new game state with bot intelligence LEVEL_4 and MapParameters [humanPlayerNo=1, botPlayerNo=5, seed=1695103733497, landMass=50, density=-3.0] [2023-09-19 08:08:54.247] [INFORMATION] de.sesu8642.feudaltactics.lib.ingame.GameController starting game [2023-09-19 08:08:54.255] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing the turn for bot player 'Player [color=ffaaaaff, type=LOCAL_BOT, defeated=false]' with intelligence level 'LEVEL_4' [2023-09-19 08:08:54.257] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi doing moves in kingdom 'Kingdom [tiles=[HexTile [player=Player [color=ffaaaaff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(1.0,1.0)], HexTile [player=Player [color=ffaaaaff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Tree, position=(2.0,0.0)]], player=Player [color=ffaaaaff, type=LOCAL_BOT, defeated=false], savings=10, doneMoving=true, wasActiveInCurrentTurn=false]' [2023-09-19 08:08:54.258] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:08:54.259] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi removing blocking objects [2023-09-19 08:08:54.257] [FEIN] de.sesu8642.feudaltactics.ingame.AutoSaveRepository autosaving [2023-09-19 08:08:54.261] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:08:54.263] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:08:54.266] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:08:54.268] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering tile 'HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(3.0,-1.0)]' with stored unit 'SPEARMAN' [2023-09-19 08:08:54.270] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering tile 'HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(3.0,-1.0)]' with stored unit 'KNIGHT' [2023-09-19 08:08:54.272] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering tile 'HexTile [player=Player [color=3372ccff, type=LOCAL_PLAYER, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.Capital, position=(3.0,-1.0)]' with stored unit 'BARON' [2023-09-19 08:08:54.273] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering tile 'HexTile [player=Player [color=00ff00ff, type=LOCAL_BOT, defeated=false], content=de.sesu8642.feudaltactics.lib.gamestate.PalmTree, position=(1.0,0.0)]' with stored unit 'PEASANT' [2023-09-19 08:08:54.275] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:08:54.276] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi selling previously bought castles again [2023-09-19 08:08:54.277] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi picking up all available units [2023-09-19 08:08:54.279] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi defending most important tiles [2023-09-19 08:08:54.280] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi conquering as much as possible [2023-09-19 08:08:54.283] [FEIN] de.sesu8642.feudaltactics.lib.ingame.botai.BotAi acquiring a new unit [2023-09-19 08:08:54.283] [SCHWERWIEGEND] com.google.common.eventbus.SubscriberExceptionHandler an unexpected error happened while handling the event de.sesu8642.feudaltactics.events.GameStateChangeEvent@792f4ed in method public void de.sesu8642.feudaltactics.ingame.IngameRendererEventHandler.handleGameStateChange(de.sesu8642.feudaltactics.events.GameStateChangeEvent) of subscriber de.sesu8642.feudaltactics.ingame.IngameRendererEventHandler@4b6f09b