schrum2 / MM-NEAT

Modular Multiobjective (Hyper) Neuro-Evolution of Augmenting Topologies + MAP-Elites: Java code for evolving intelligent agents in Ms. Pac-Man, Tetris, and more, as well as code for Procedural Content Generation in Mario, Zelda, Minecraft, and more!
http://people.southwestern.edu/~schrum2/re/mm-neat.php
Other
50 stars 20 forks source link

UT^2 can't handle Team Death Match Server #138

Open schrum2 opened 6 years ago

schrum2 commented 6 years ago

Keeps crashing with this exception:

    Component:  Mediator[producer=WorldMessageTranslator[parser=UT2004Parser, handler=BotFSM], consumer=UT2004SyncLockableWorldView]
    Message:    MediatorWorker: Consumer exception.
    Cause:      class cz.cuni.amis.utils.exception.PogamutException: InfoMessage[TeamScoreMessage][Id = WorldObjectId[0] | Team = 0 | Score = -1 | ][Id = WorldObjectId[0] | Team = 0 | Score = -1 | ]: Can't update different class than TeamScoreMessage, got class AutoTraceRayMessage! (at cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.TeamScoreMessage.update(TeamScoreMessage.java:572))
    Stacktrace:
        cz.cuni.amis.pogamut.base.component.controller.ComponentController.fatalError(ComponentController.java:513)
        cz.cuni.amis.pogamut.base.communication.mediator.impl.Mediator$Worker.run(Mediator.java:339)
        java.lang.Thread.run(Unknown Source)
    Caused by: class cz.cuni.amis.utils.exception.PogamutException: InfoMessage[TeamScoreMessage][Id = WorldObjectId[0] | Team = 0 | Score = -1 | ][Id = WorldObjectId[0] | Team = 0 | Score = -1 | ]: Can't update different class than TeamScoreMessage, got class AutoTraceRayMessage! (at cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.TeamScoreMessage.update(TeamScoreMessage.java:572))
        cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.TeamScoreMessage.update(TeamScoreMessage.java:572)
        cz.cuni.amis.pogamut.base3d.worldview.impl.VisionWorldView.objectUpdatedEvent(VisionWorldView.java:149)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.innerNotify(EventDrivenWorldView.java:127)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.notify(EventDrivenWorldView.java:230)
        cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView.notify(BatchAwareWorldView.java:100)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.notify(UT2004SyncLockableWorldView.java:251)
        cz.cuni.amis.pogamut.base.communication.mediator.impl.Mediator$Worker.run(Mediator.java:327)
        java.lang.Thread.run(Unknown Source)
]
friedmaa commented 6 years ago

-go in change pogamut (might not be possible) -find class that is incorrectly parsing and make own version to handle it -turbo option: find where exception is being thrown, use try catch, catch exception and ignore it rather than crashing

friedmaa commented 6 years ago

removed ray tracing, bots ran for maybe a minute running around, then crashed with

Component:  SyncUT2004BotLogic
    Message:    Thread 3: Logic iteration exception.
    Cause:      class java.lang.NullPointerException: null (at utopia.controllers.scripted.UnstuckController.moveAway(UnstuckController.java:246))
    Stacktrace:
        cz.cuni.amis.pogamut.base.component.controller.ComponentController.fatalError(ComponentController.java:513)
        cz.cuni.amis.pogamut.base.agent.module.LogicModule$LogicRunner.run(LogicModule.java:457)
        java.lang.Thread.run(Unknown Source)
    Caused by: class java.lang.NullPointerException: null (at utopia.controllers.scripted.UnstuckController.moveAway(UnstuckController.java:246))
        utopia.controllers.scripted.UnstuckController.moveAway(UnstuckController.java:246)
        utopia.controllers.scripted.UnstuckController.control(UnstuckController.java:186)
        utopia.controllers.scripted.UnstuckController.control(UnstuckController.java:51)
        edu.utexas.cs.nn.bots.UT2.getAction(UT2.java:617)
        edu.utexas.cs.nn.bots.UT2.logic(UT2.java:436)
        cz.cuni.amis.pogamut.base.agent.module.LogicModule$LogicRunner.run(LogicModule.java:425)
        java.lang.Thread.run(Unknown Source)
]
friedmaa commented 6 years ago

Problem found to be with ray traces, and the bot could run until it got stuck, but when it tried to use unstuck, it tried to use a ray trace, and since these were commented out, it crashed on unstuck

friedmaa commented 6 years ago

commented out the addRayToAutoTrace method, and any lines that called it.

friedmaa commented 6 years ago

tested raytraceing bot in team server, and it does work

schrum2 commented 6 years ago

I would like an update on this issue. It looks like the simple raytracing bot does work fine in a team server, but UT^2 does not? I just want to confirm what state this issue is in.

Also, when you said you commented out addRayToAutoTrace above, what bot was that in? Does UT^2 no longer have working ray traces at all? Even in free-for-all death match?