GithubHelp home page GithubHelp logo

bw4t's Introduction

Blocks World for Teams

Blocks World for Teams (BW4T) is a testbed EIS environment for team coordination. BW4T allows for games with human-human, agent-agent and human-agent teams of variable sizes. The goal is to jointly deliver a sequence of colored blocks in a particular order as fast as possible. A complicating factor is that the players cannot see each other.

This page describes how users can install and use the Blocks World for Teams environment. For developer information please follow this Link to Developer details

Blocks World for Teams has a client-server architecture. This means that you need to install and run two parts to use it: a client and a server. The server is the Blocks World for Team Server where the real simulation takes place. The client is the agent programming environment, which communicates with the server to run the simulation. This architecture was chosen to allow multi-machine configurations, where multiple users can interact in the same Blocks World.

This environment is a general EIS environment, you can use it from GOAL but also from other EIS-compatible systems or even stand alone. To install GOAL, please refer to GOAL

We deliver a number of components to work with this environment:

To install BW4T and for all details on how to use the environment and related tools, please consult the BW4T user manual.

WARNING The collisions and e-partner options are not completely ready for use.

BW4T Main Maven Module

This is the directory contains the main maven module. BW4T is split up in six submodules which are explained below. Each submodule is compiled and tested separately by Maven. A good overview of exactly how Maven module organization works can be found at Sonatype.

bw4t-client

The bw4t-client submodule is used either directly by a user or indirectly via GOAL. Basically this module allows you to connect an agent to the bw4t-server. If this is launched with the GUI enabled, the user is able to perform actions and see the percepts that the robot can perform and percept respectively.

bw4t-core

The bw4t-core submodule basically contains lots of "model"-classes which are needed by multiple other modules. For example the AbstractMapController can be found in this class, because it is needed for the bw4t-client as well as the bw4t-server.

bw4t-environment-store

The bw4t-environment-store allows you to configure all kinds of options regarding the map and/or environment.

bw4t-integration-test

This module performs integration testing, by launching the server and the client and performing a small test.

bw4t-scenario-editor

The scenario-editor allows you to configure connections options, epartners and the types of bots and their abilities/handicaps.

bw4t-server

The bw4t-server basically runs the bw4t environment with a given configuration to which clients can connect.

Dependency information

<repository>
  <id>eishub-mvn-repo</id>
  <url>https://raw.github.com/eishub/mvn-repo/master</url>
</repository>

The client artifact:

<dependency>
  <groupId>eishub.bw4t</groupId>
  <artifactId>bw4t-client</artifactId>
  <version>3.10.0</version>
</dependency>

The server artifact:

<dependency>
  <groupId>eishub.bw4t</groupId>
  <artifactId>bw4t-server</artifactId>
  <version>3.9.1</version>
</dependency>

bw4t's People

Contributors

749 avatar amalhoe avatar dependabot[bot] avatar joopaue avatar joostrothweiler avatar jumba avatar katiaas avatar liebens avatar martinrogalla avatar ontwikkelaar avatar rubenstarmans avatar sdewit avatar swaab avatar tompeeters368 avatar trvanrossum avatar universal-church avatar venorcis avatar vm00z avatar wendybolier avatar wouter1 avatar xanderzonneveld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bw4t's Issues

TODO Place the EPartner

Found TODO in method spawn(), in nl.tudelft.bw4t.server.environment.BW4TEnvironment.
TODO was placed above 'epartner.moveTo(point.getX(), point.getY());'

handleNewEntity1 function throws too many exceptions.

The handleNewEntity1 function in BW4TEnvironmentListener.java(in the BW4T-Client) throws EntityException, AgentException, ClassNotFoundException,NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException, IOException, RelationException.

This should be reduced to one or two exceptions.

Usage of "new" BW4T Client in GOAL fails.

WARNING: WARNING: launch of MAS failed
because eis failed to start environment: failed to load the environment:
class "nl.tudelft.bw4t.client.startup.launcher" could not be loaded from "/opt/goal/goalagents/bw4t2/bw4t2/bw4t-client-3.0.1-jar-with-dependencies.jar": nl.tudelft.bw4t.client.startup.launcher.().java.lang.NoSuchMethodException: nl.tudelft.bw4t.client.startup.Launcher.()

Client/Server: Human Player GUI - can't create e-partners

[AWT-EventQueue-0] INFO nl.tudelft.bw4t.client.controller.ClientMapController - creating epartner(68, -1)
When a config file with an e-partner is launched, it keeps trying to create the e-partner but it's never actually created.

BW4T3 upgrade to EIS 0.4.1

BW4T3 is using an old version of EIS. When you kill the env it throws

WARNING: Environment returned an error
java.lang.NullPointerException
    at eis.EIDefaultImpl.notifyIfFree(EIDefaultImpl.java:351)
    at eis.EIDefaultImpl.freeAgent(EIDefaultImpl.java:558)
    at nl.tudelft.bw4t.server.BW4TServer.freeAgent(BW4TServer.java:265)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
    at sun.rmi.transport.Transport$1.run(Transport.java:177)
    at sun.rmi.transport.Transport$1.run(Transport.java:174)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
    at com.sun.proxy.$Proxy1.freeAgent(Unknown Source)
    at nl.tudelft.bw4t.client.BW4TClient.freeAgent(BW4TClient.java:333)
    at nl.tudelft.bw4t.client.environment.RemoteEnvironment.freeAgent(RemoteEnvironment.java:286)
    at goal.core.runtime.service.environment.LocalMessagingEnvironment$Messages2Environment.invoke(LocalMessagingEnvironment.java:215)
    at goal.core.runtime.service.environmentport.actions.FreeAgent.invoke(FreeAgent.java:30)
    at goal.core.runtime.service.environment.LocalMessagingEnvironment$Messages2Environment.handleAction(LocalMessagingEnvironment.java:169)
    at goal.core.runtime.service.environment.LocalMessagingEnvironment$Messages2Environment.run(LocalMessagingEnvironment.java:153)
    at java.lang.Thread.run(Thread.java:745)

Client: Block pickup distance

Use the size and arm length to determine whether we can pick up a Block or EPartner.
nl.tudelft.bw4t.client.gui.menu.MapOperations:closeToBox()

Client: Method handleDeletedEntity uses unknown field

nl.tudelft.bw4t.client.environment.BW4TEnvironmentListener

This was in the double for loop:
if (agentB.getName().equals(agent)) {
agentB.setKilled();
if (agentData.get(agentB) != null) {
//FIXME agentData.get(agentB).stop = true;
}
agentData.remove(agentB);
return;
}

Removed the FIXME part for now.

Client: stop single HumanAgent

Closing one human agent currently stops the whole client, meaning all human and normal agents attached to it, not just one of the Entities.
nl.tudelft.bw4t.client.gui.ClientWindowAdapter:windowClosing()

Method notifyNewEntity() does nothing.

Method notifyNewEntity(String entity) in the nl.tudelft.bw4t.server.BW4TServer does noting. Method is called in BW4TEnvironment.

Comments what it should do are pressend, but method is empty.

BW4T Client exit-routine required, none yet implemented.

Currently there is no implementation of an exit-routine for the BW4T-Client. Right now the BW4T Client will not remove the agents from the server's view when exiting.

โ— How to reproduce the bug:

  1. Start an agent in the BW4T Client.
  2. Close the window.
  3. Observe that the agent is still visible in the server's view.

โœ… What should be implemented?

  • The Agent assigned to the specific window should be released from the server.
  • The Agent and its corresponding Entity should be deleted from the server.
  • The window should be disposed.
  • A check should be done to see if there are any client windows left, if not:
    • Close the log file.
    • Terminate the process.

Client: Centralise the Exit Method

At the moment the System.exit() calls are spread throughout the system. A central function should be implemented that is used to stop the client, for instance Launcher.shutdown().

System.exit found in:
nl.tudelft.bw4t.client.environment.BW4TEnvironmentListener:handleStateChange()
nl.tudelft.bw4t.client.environment.RemoteEnvironment:init()

Server crashes after several client initiated restarts.

Using a snapshot of 3.8.2 in which the client initiated restart should have been fixed the environment randomly freezes after one or more restarts. This can happen after only a dozen or after a few hundred.

Restarting the client environment leads me to believe this is a bug in the server section as nothing happens. As well as ten second or so delays in trying to manually change the map. After this everything is functional again.

GUI command line option causes client to crash when turned off.

Using the latest java versions the following command causes the client to crash on environment initialisation.
java -jar bw4t-server-3.8.6.jar -gui false
This results in the following server output:
982 [main] INFO nl.tudelft.bw4t.server.environment.BW4TEnvironment - Launching the BW4T Server without a graphical user interface. 11015 [RMI TCP Connection(4)-192.168.200.192] INFO nl.tudelft.bw4t.server.environment.BW4TEnvironment - Environment now in state: INITIALIZING 11016 [RMI TCP Connection(4)-192.168.200.192] INFO nl.tudelft.bw4t.server.environment.BW4TEnvironment - Taking down the simulation environment 11016 [RMI TCP Connection(4)-192.168.200.192] INFO nl.tudelft.bw4t.server.environment.BW4TEnvironment - Environment now in state: KILLED 11017 [RMI TCP Connection(4)-192.168.200.192] DEBUG nl.tudelft.bw4t.server.environment.BW4TEnvironment - Removing all entities 11017 [RMI TCP Connection(4)-192.168.200.192] DEBUG nl.tudelft.bw4t.server.environment.BW4TEnvironment - Remove all (remaining) agents 11018 [RMI TCP Connection(4)-192.168.200.192] INFO nl.tudelft.bw4t.server.environment.Stepper - Stepper is running... waiting for requests.

I am using goal to interface with the client which results in the following error on the client side:
goal.tools.errorhandling.exceptions.GOALRunFailedException: could not perform run of 'D:\Eclipse Workspace\bw4t\agents\block_com_team.mas2g'. at goal.tools.AbstractRun.run(AbstractRun.java:237) at goal.tools.eclipse.RunTool.main(RunTool.java:67) Caused by: goal.tools.errorhandling.exceptions.GOALLaunchFailureException: EIS failed to start the environment. at goal.core.runtime.RuntimeManager.<init>(RuntimeManager.java:378) at goal.tools.AbstractRun.buildRuntime(AbstractRun.java:317) at goal.tools.AbstractRun.run(AbstractRun.java:219) ... 1 more Caused by: eis.exceptions.ManagementException: failed to initialize the environment. at goal.core.runtime.service.environment.LocalMessagingEnvironment.initialize(LocalMessagingEnvironment.java:590) at goal.core.runtime.service.environment.EnvironmentService.start(EnvironmentService.java:221) at goal.core.runtime.RuntimeManager.<init>(RuntimeManager.java:374) ... 3 more Caused by: java.lang.NullPointerException at nl.tudelft.bw4t.server.environment.BW4TEnvironment.takeDownSimulation(BW4TEnvironment.java:620) at nl.tudelft.bw4t.server.environment.BW4TEnvironment.reset(BW4TEnvironment.java:595) at nl.tudelft.bw4t.server.environment.BW4TEnvironment.init(BW4TEnvironment.java:253) at nl.tudelft.bw4t.server.BW4TServer.requestInit(BW4TServer.java:428) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Unknown Source) at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source) at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source) at com.sun.proxy.$Proxy1.requestInit(Unknown Source) at nl.tudelft.bw4t.client.BW4TClient.initServer(BW4TClient.java:549) at nl.tudelft.bw4t.client.environment.RemoteEnvironment.sendServerParams(RemoteEnvironment.java:139) at nl.tudelft.bw4t.client.environment.RemoteEnvironment.init(RemoteEnvironment.java:103) at goal.core.runtime.service.environment.LocalMessagingEnvironment.initialize(LocalMessagingEnvironment.java:586) ... 5 more

After changing the gui option to true everything works fine with the same commands.

update EIS requirement

GOAL core now hard uses EIS0.4 and checks this.

BW4T asks for 0.3 and thus can't run on the current GOAL. we need to fix this.

Scenario Editor: ActionHandler complexity

The function needs to be refactored to be easier to read.
nl.tudelft.bw4t.scenariogui.editor.controller.MenuOptionExport:actionPerformed
nl.tudelft.bw4t.scenariogui.editor.controller.MenuOptionOpen:actionPerformed
nl.tudelft.bw4t.scenariogui.editor.controller.ScenarioEditorController:ScenarioEditorController()

Client/Server: Common start

Add functionality to the client that allows us to start up a server from the client, this way we would have 2 versions of the client, one with the server built in and one without the server. It would make it a lot easier for students working on the MAS project to use the system.

server model NullPointerException

I sometimes get these

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at nl.tudelft.bw4t.server.model.robots.AbstractRobot.getView(AbstractRobot.java:653)
    at nl.tudelft.bw4t.server.controller.ServerMapController.getVisibleEntities(ServerMapController.java:107)
    at nl.tudelft.bw4t.map.renderer.MapRenderer.drawEntity(MapRenderer.java:304)
    at nl.tudelft.bw4t.map.renderer.MapRenderer.paintComponent(MapRenderer.java:101)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5219)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
    at javax.swing.JComponent._paintImmediately(JComponent.java:5167)
    at javax.swing.JComponent.paintImmediately(JComponent.java:4978)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:808)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

BW4T3 reset IllegalStateException

When I try to kill the BW4T3 human environment from GOAL I get these exceptions. From the stacktrace it looks like BW4T3 reset issue.

WARNING: Exception caught while killing MAS 
java.lang.IllegalStateException: bot is not holding any block
    at nl.tudelft.bw4t.server.model.robots.AbstractRobot.drop(AbstractRobot.java:279)
    at nl.tudelft.bw4t.server.model.robots.handicap.AbstractRobotDecorator.drop(AbstractRobotDecorator.java:92)
    at nl.tudelft.bw4t.server.eis.RobotEntity.reset(RobotEntity.java:139)
    at nl.tudelft.bw4t.server.eis.RobotEntity.disconnect(RobotEntity.java:132)
    at nl.tudelft.bw4t.server.environment.BW4TEnvironment.freePair(BW4TEnvironment.java:683)
    at nl.tudelft.bw4t.server.BW4TServer.freePair(BW4TServer.java:273)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
    at sun.rmi.transport.Transport$1.run(Transport.java:177)
    at sun.rmi.transport.Transport$1.run(Transport.java:174)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
    at com.sun.proxy.$Proxy1.freePair(Unknown Source)
    at nl.tudelft.bw4t.client.BW4TClient.freePair(BW4TClient.java:349)
    at nl.tudelft.bw4t.client.environment.RemoteEnvironment.freePair(RemoteEnvironment.java:429)
    at nl.tudelft.bw4t.client.environment.RemoteEnvironment.kill(RemoteEnvironment.java:722)
    at goal.core.runtime.service.environment.LocalMessagingEnvironment.shutDown(LocalMessagingEnvironment.java:562)
    at goal.core.runtime.service.environment.EnvironmentService.shutDown(EnvironmentService.java:350)
    at goal.core.runtime.RuntimeManager.shutDown(RuntimeManager.java:637)
    at goal.tools.LaunchManager.shutDownRuntime(LaunchManager.java:165)
    at nl.tudelft.goal.SimpleIDE.actions.KillAction.killProcessNode(KillAction.java:159)
    at nl.tudelft.goal.SimpleIDE.actions.KillAction.execute(KillAction.java:112)
    at nl.tudelft.goal.SimpleIDE.actions.GOALAction.executeAll(GOALAction.java:207)
    at nl.tudelft.goal.SimpleIDE.actions.GOALAction.actionPerformed(GOALAction.java:163)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

eclipse git cloning problem

if I clone the workspace using git in Eclipse (paste url https://github.com/eishub/bw4t in git area of Eclipse; next; select 'develop', next) I am getting

{{{
'Cloning from https://github.com/eishub/BW4T' has encountered a problem.

Checkout conflict with files:
bw4t/.project
bw4t/bw4t-client/.project
bw4t/bw4t-core/.project
bw4t/bw4t-environment-store/.project
bw4t/bw4t-integration-test/.project
bw4t/bw4t-scenario-editor/.project
bw4t/bw4t-server/.project
Checkout conflict with files:
bw4t/.project
bw4t/bw4t-client/.project
bw4t/bw4t-core/.project
bw4t/bw4t-environment-store/.project
bw4t/bw4t-integration-test/.project
bw4t/bw4t-scenario-editor/.project
bw4t/bw4t-server/.project
}}}

it works fine if I only select the 'develop' branch.

Client - RemoteEnvironment: condition checks if String is in Set<AgentListeners>

String is incompatible with expected argument type eis.AgentListener in nl.tudelft.bw4t.client.environment.RemoteEnvironment.detachAgentListener(String, AgentListener)

rule 465: if ((listeners == null) || !listeners.contains(agent)) {

@Override
public void detachAgentListener(String agent, AgentListener listener) {
    if (!localAgents.contains(agent)) {
        return;
    }
    Set<AgentListener> listeners = agentsToAgentListeners.get(agent);
    if ((listeners == null) || !listeners.contains(agent)) {
        return;
    }
    listeners.remove(listener);
}

Client - RemoteEnvironment: Method always returns true

line 253:
/**
* Check whether an action is supported by a type, for now always returns false as it should not be used
*
* @return the result
*/
public boolean isSupportedByType(Action arg0, String arg1) {
return true;
}

line 351:

/**
 * Check if an action is supported by an entity, is not used so returns true
 * 
 * @param action
 *            , the action
 * @param entity
 *            , the entity
 */
public boolean isSupportedByEntity(Action action, String entity) {
    return true;
}

line 264:

/**
 * Check if a certain state transition is valid, always returns true for now.
 * 
 * @param oldState
 *            , the old state of the environment
 * @param newState
 *            , the new state of the environment
 */
@Override
public boolean isStateTransitionValid(EnvironmentState oldState, EnvironmentState newState) {
    return true;
}

stepper NullPointerException

internal error occured while running stepper
java.lang.NullPointerException
at repast.simphony.engine.controller.DefaultController.runCleanup(DefaultController.java:287)
at repast.simphony.engine.controller.DefaultController.runCleanup(DefaultController.java:435)
at nl.tudelft.bw4t.server.BW4TRunner.cleanUpRun(BW4TRunner.java:114)
at nl.tudelft.bw4t.server.Stepper.run(Stepper.java:56)
at java.lang.Thread.run(Unknown Source)

Client/Server: Reconnecting

At the moment the system will not try to reconnect to the server if the connection fails, it should probably be implemented that the connection can be re-estabilshed. This is especially interresting once more clients connect to the same server and some may be on an unstable connection.
At the moment it is only observed, for example, when the computer is put into sleep mode and reactivated. The originally connected robots will remain on the server.

Server: Block Placing

In nl.tudelft.bw4t.server.repast.MapLoader#makeBlocks():
we may want to check if there is enough space at all for the requested number of blocks. If not, we will hang in the next loop. determine all the extra blocks: the extra sequence blocks and more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.