GithubHelp home page GithubHelp logo

jalse's People

Contributors

benwaffle avatar dting avatar ellzord avatar khouari1 avatar pbremer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jalse's Issues

Greedy thread allocation and pause empty entities

Make thread limit shared across entities not all jobs so X busy entities gets Y% of the threads to avoid long tasks holding up the total threads for every entity. Entities with no children and have no actions run that tick should be allocated no threads.

Remote JALSE server

A remote JALSE server that allows instances of the model to be manipulated via REST and WebSockets (JSON based).

REST would be used to pull down detailed information (sync state, web statistics and specific entity details).

WebSockets would be used to stream attribute changes and when entities are created and killed (after sync).

NOTE: there is a need for user/client authentication or state the model is globally exposed and mutable.

Remote JALSE implementation

Build remote client/server JALSE. EntityFactory and ActionEngine can be implemented to achieve this.

  • RMI implementation
  • JMS implementation
  • Socket implementation

Lag should be taken into account (estimation of attribute changes and dead reckoning). There should be visibility code for attributes (broadcast policy).

Maybe one project per implementation.

Create README.md and wiki diagrams

Architecture diagrams and flow diagrams to describe normal JALSE usage.

  • EntityType inheritence diagram for examples.
  • Data flow for examples.
  • Class/package diagram for JALSE landing README.md

Entity type support all operations and default methods

Support:

  • Default methods!
  • Get/Set Attribute (orNull)
  • Get/Set Attribute
  • StreamEntitiesOfType
  • StreamEntitiesAsType ?
  • getEntitiesOfType
  • getEntitiesAsType
  • getEntityAsType ?
  • killChildren ?
  • newEntityOfType
  • newEntityAsType ?

Will need an annotation most likely.

Persistence API

JALSE needs some persistence API for saving Entities and re-importing them. This should be done using the generic entity and its named attribute key-value pairs and the types it is marked as (not using the EntityType system).

Can use @DontPersist annotation on Entity type to override default serialization.

May be useful for #50 when passing around data it needs to be transformed.

Better listener methods on EntityContainer and AttributeContainer

  • EntityContainer.hasListener(EntityListener)
  • AttributeContainer.hasListeners(String, AttributeType)
  • AttributeContainer.hasListeners(NamedAttributeType)
  • AttributeContainer.hasListener(String, AttributeType, AttributeListener)
  • AttributeContainer.hasListener(NamedAttributeType, AttributeListener)

JALSE plugin system

Plugin system is a directory/zip/jar with the right package JSON.

Needs defined plugin format:

  • Files to process
  • Resources to bind

There should be a number of interfaces that can be implemented in either Java or JS (using nashorn). I primarily see this being used to script entity behaviour and edit assets without build (as they are JS files).

Create Attribute type system that supports complex types

Create new AttributeType system to allow more complex typing.
Meaning - Collection should be different from Collection or Collection<Collection>

It should still be easy to use and there should be the ability to have multiple of a supplied type.

{ "scary" : Boolean } different from { "hungry" : Boolean } - This should be allowed.

Create unit tests for JALSE

Create JUnit tests for default implementations and common flows.

Ideally there should be a set of tests that:

  • Passes for yielding expected behaviour for valid arguments/operation.
  • Passes for failing expectedly for invalid arguments/operation.

This will help keep positive and negative behaviour of the system well defined.

NOTE: These tests can be used by bespoke implementations of core components to test they work as expected!

Create more mature ActionEngine

Context c = engine.createContext();
c.setX(x);
c.schedule();
c.await();
  • AsyncActionEngine - ForkJoinPool
  • SynchronousActionEngine - ExecutorCompletionService executes in order
  • ManualActionEngine - Executes on resume and immediately goes back to paused
  • ActionContext.getDelta()

Could use a commonPool() implementation AsyncActionEngine.getCommonPoolEngine().

Creation of Quadtree attribute

Creation of Quadtree attribute to sit on Cluster and update on agent attribute change. For easy collision detection. Should work on rotated agents.

Fix up current examples with new functionality

Use new Entity and Action framework. Any images provided should be replaced with ones made by JALSE dev (using different coloured cube combinations if lazy). Examples updated to be visual where possible. Embedded applet?

Create RoboMop example

A Roomba-like example that bounces off walls cleaning the floor. Should be visual and have backing README.md!

Creation of JALSE-Defaults project

This library should provide the building blocks for creating a number of different simulations every easily. It should consist of groups of:

  • Generic entity types (Animal, FlyingAnimal, etc)
  • Task specific attributes (Quadtree, state machine, behaviour tree, etc)
  • Listeners that populate attributes or run actions (hunger over time, lonliness, etc)
  • Task specific actions (Move randomly until condition, follow X entity, etc)
  • Utilities for creating, killing and processing the above types and attributes

It should cover areas like movement, objects (tree, cow, pig, etc), common operations (may need some research). Each of these areas should be documented in the README.md!

Example:

NPCBuilder.newBuilder().setParent(jalse).setPosition(x, y).setBlocking().setSize(50, 50).build();

Entity types to cache methods

No doubt quicker than using the type resolvers now the options have increased. Some sort of cache on EntityTypeHandler. Would like to be able to check multiples get/sets across entire tree.

Model only JALSE.

Create JALSE instance without threads for a model only version. Maybe separate engine and model so the model on its own.

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.