GithubHelp home page GithubHelp logo

agentsim's People

Contributors

isibboi avatar

Watchers

 avatar  avatar  avatar

agentsim's Issues

Make information exchange randomized

  • Select information to give randomized with priorities.
  • Add maximum amount of information to give.
  • Tasks exchange priorities are their priorities.
  • Map information priorities are the count the goblin walked on a location plus the value of the location.

Refactor materials

Materials should not be managed by the environment class. They should be a non-global object.

Split Tasks to Tasks and PlannedTasks

A planned task is the desire to do something, while a task is the technical realisation of doing something.
A planned task is a meta goal, like walk home, or get food, while a task is an algorithm for doing such thing from a specific state, like walk from P to Q.
Thus, a planned task has for example a priority and lives longer, while a task just lives while it is executed. Hence, it doesn't need a priority.

Maybe there is a better wording than task and planned task.

Forgetting

Maybe goblins should forget what they know from time to time.
This could lead to specializations. Or just destroy everything.

  • Should the memory of the goblins be hard limited?
  • Inverted priorities for the selection which information to forget?
  • If the goblin forgets his way home, he probably dies.

Random NPE

Commit 28536ca

12:11:15.165 [main] INFO de.isibboi.agentsim.Settings - Settings loaded
12:11:15.368 [main] INFO de.isibboi.agentsim.ui.DrawFrame - Page flipping supported: true
12:11:15.368 [main] INFO de.isibboi.agentsim.ui.DrawFrame - Requires full screen for page flipping: false
12:11:15.501 [main] INFO de.isibboi.agentsim.game.MultiThreadedEntityCollider - Entity collider threads started
12:11:15.565 [main] INFO de.isibboi.agentsim.game.Game - Game started
12:11:15.634 [main] TRACE de.isibboi.agentsim.game.entities.ai.tasks.MoveToTask - Could not find a valid path.
Exception in thread "main" java.lang.NullPointerException
at de.isibboi.agentsim.game.entities.ai.tasks.MoveToTask.isFinished(MoveToTask.java:72)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.update(TaskExecutingAI.java:56)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.startNextTask(TaskExecutingAI.java:118)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.update(TaskExecutingAI.java:62)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.startNextTask(TaskExecutingAI.java:132)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.update(TaskExecutingAI.java:62)
at de.isibboi.agentsim.game.entities.Goblin.update(Goblin.java:72)
at de.isibboi.agentsim.game.entities.Entities.update(Entities.java:119)
at de.isibboi.agentsim.game.Game.update(Game.java:50)
at de.isibboi.agentsim.ui.AgentFrame.update(AgentFrame.java:110)
at de.isibboi.agentsim.AgentSim.run(AgentSim.java:58)
at de.isibboi.agentsim.AgentSim.main(AgentSim.java:25)

Viewport change

Make the viewport changeable to allow zooming and limit the players viewport at the start.

Make location locking save

Currently, anyone can unlock any location. When unlocking a location, the caller should pass something to make sure that he locked the location before.

Convert to Java Applet

This allows to embed the application on a website.
Should be done as soon as possible, as it will become harder the later it is done.

Refactor task AI

The task ai is currently bad, it should not be combined with the scheduling method. Maybe remove the queue from the task AI, and let the goblin ai decide what to execute next. For queueing, there is the composite task.

Make update visualisation smooth

The game will be played at a much lower update rate than now, to allow the player to understand what happens. This makes it necessary to animate movement, so that the player cab easily follow one entity.

Should entities walk past each other?

Currently, entities can walk past each other, if they are right next to each other, and then switch positions. Should a collision happen in this case?

Make Tasks less dynamic

Tasks should not change after being started, or, even better, after creation.
This gives the AI more control over what happens, and may solve the starvation problem (#28).

Global building task processing

Tasks are enqueued by the played and executed like this:

  1. Find building space
    • Randomly search around the spawn point.
    • Place placeholder
  2. Gather resources
    • Split goblins according to the amount of resources needed. For example, if 3 stone and 4 dirt are needed, 3/7 of all golins should mine stone, and 4/7 of all goblins should mine dirt. This is updated dynamically.
    • Goblins bring the resource to the stockpile, if there is one, otherwise they drop it on the ground.
  3. Build
    • Move all resources to the building.
    • If all resources are there, one goblin per pixel starts building. After finishing the building, all goblins are teleported out of the building area, as it is not traversable now.

Add main building

The base for the swarm, should, as of now, be an endless source for food.

Random NPE

Exception in thread "main" java.lang.NullPointerException
at de.isibboi.agentsim.game.entities.ai.intends.AbstractIntend.searchAccessPoint(AbstractIntend.java:46)
at de.isibboi.agentsim.game.entities.ai.intends.MiningIntend.execute(MiningIntend.java:43)
at de.isibboi.agentsim.game.entities.ai.GoblinSwarmAI.selectNextTask(GoblinSwarmAI.java:203)
at de.isibboi.agentsim.game.entities.ai.GoblinSwarmAI.eventExecutingIdleTask(GoblinSwarmAI.java:191)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.startNextTask(TaskExecutingAI.java:125)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.update(TaskExecutingAI.java:62)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.finishTask(TaskExecutingAI.java:84)
at de.isibboi.agentsim.game.entities.ai.TaskExecutingAI.update(TaskExecutingAI.java:57)
at de.isibboi.agentsim.game.entities.Goblin.update(Goblin.java:72)
at de.isibboi.agentsim.game.entities.Entities.update(Entities.java:119)
at de.isibboi.agentsim.game.Game.update(Game.java:50)
at de.isibboi.agentsim.ui.AgentFrame.update(AgentFrame.java:110)
at de.isibboi.agentsim.AgentSim.run(AgentSim.java:56)
at de.isibboi.agentsim.AgentSim.main(AgentSim.java:23)

Make Goblins try to stay alive

Goblins should walk back to spawn if their food is low.
Goblins should not work in tasks that are too long to finish without starving.

Game doesn't terminate

Was tested in the ATIS. Game seems to shutdown correctly, but the JVM keeps running.

The game was started with the run.sh script.

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.