Giter Club home page Giter Club logo

fish's People

Contributors

bryb31 avatar dependabot[bot] avatar james-firth avatar jorgearanda avatar kodacapo avatar normful avatar randijw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fish's Issues

Introduce variability to greediness parameter

Experimenter should be able to enter either a global greediness parameter, or a parameter per agent, and also to determine whether she wants greediness to vary across seasons (and agents, if the parameter is global) in a normal fashion, or to increase progressively or decrease progressively. Also both globally and individually.

Design admin Active Group screen

Should show how many people have joined, how many simulations are waiting to start, in progress, or completed, and the settings from the previous screen. If no sims in progress or completed, user should be able to go back to Create Group screen to edit settings.

Log simulation results

At the end of a simulation, the server should keep track of:

  • Individual restraint
  • Individual efficiency
  • Fish caught
    (all of these per season)

Also, it should log all the parameters used in the simulation.

Have human clients cast for a fish

After a human client is out at sea, they can press the Cast for a fish button. Doing so should send a message to the server, and the server in turn should modify the gameState and notify all clients of the new state.

Have human clients join a single ocean simulation

For now we'll consider the ocean simulation to be permanently running.

When the user enters the simulation ID in index.html, and then clicks Go Fish, we'll take them to the main screen.

Two important bits to close the issue:

  • The server logs the fact that the client joined the simulation
  • The client receives a gameSettings message from the server

Create admin workflow skeleton

Four screens in workflow:

  • Login screen
  • Entry screen is a list of simulations already executed (downloadable logs). Two actions: Create New and Create User (if credentials allow).
  • Create group screen: requires a name, and has all the settings available for modification. Create button.
  • Active group screen: number of people joined in, number of simulations waiting to start, simulations in progress, and simulations completed. Edit Settings button available (if no sims in progress or completed).

Have artificial clients cast for fish

An artificial client will cast for fish in a season based on the formula:
castAttempts = ((startingFish - startingFish / spawnFactor) / numFishers) * 2Greed / chanceOfCatch

Or so it seems to me at this point. The reasoning:
startingFish - startingFish/spawnFactor: How many fish we can take out in the season and have the bank replenish.
That number of sustainably fishable fish, divided by the number of Fishers, gives us each fisher's fair share.
We alter that number by two factors: the greed of the AI client, and the chance of catching a fish when we cast.

For now, have the artificial agent cast for all those fish in immediate sequence: cast, receive new gameState, cast again, etc.

Have human clients depart to sea

The depart to sea button should send an event to the server, and the server should update the gameState to all clients, who in turn must update the status of the departed-to-sea fisher in their screens if applicable.

Depart to sea also should enable Cast for one fish.

Create client workflow skeleton

Four screens in the workflow:

  • Introductory text and information, with Join Group button
  • Explanatory text before starting up simulation, with Ready button
  • Simulation screen, showing possible actions and simulation information
  • Outro screen with feedback on performance

Design admin main screen

Need to show list of groups/simulations done in the past (or in progress). Should be able to download logs from executed simulations, even in bulk if needed. Buttons: Create New, Create User (if credentials allow), Download All Logs.

Implement season end warning message

A few seconds before the season ends, the user should get a warning. A few seconds before a season starts, the user should get a warning too.

Have server start simulation

Once all human or artificial clients have joined an ocean (as determined by the gameSettings numFishers value), and (in the case of artificial agents) the initial delay has elapsed, the server should send a message to all clients that the simulation has started.

Enable seasons and simulation end

The server should keep track of time, and notify all fishers:

  • When a season is over
  • When the time between seasons is over
  • When the simulation ends

The clients should not be able to fish between simulations.

Support several oceans per simulation

Right now, a simulation (a "group", with a group id) supports only a single ocean. We should allow as many oceans as needed --- that is, independent runs of the same parameters from different clients.

Include a client performance report

When a participant is done with her simulation, have the client present a performance report that specifies:

  • Number of fish caught
  • Money earned

Have artificial clients join a single ocean simulation

If the gameSettings object says that the opponents are artificial, then after a single human client joins the simulation, numFishers - 1 artificial clients should join as well.

Joining consists of creating an artificial client object, and have it connect to the server. The server should log the connection, and send the gameSettings object to the artificial client.

Populate initial information on client main screen

When the server flags that the simulation has started, all (browser) clients should display the initial information as found in a gameState object sent by the server.

This includes: the names, balance, and state of the fishers, the number of real and mystery fish, and the costs for departing port, casting for fishes, and being at sea.

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.