jorgearanda / fish Goto Github PK
View Code? Open in Web Editor NEWA fish banks simulator to conduct environmental psychology studies
License: MIT License
A fish banks simulator to conduct environmental psychology studies
License: MIT License
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.
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.
Right now it's all lumped in total numbers, but we'll need a finer grained data structure.
At the end of a simulation, the server should keep track of:
Also, it should log all the parameters used in the simulation.
Ideally have them moving left-to-right-and-left-again.
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.
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:
This doesn't mean to get it to look pretty (yet); merely better formatted and less clustered.
Fields:
This means enabling the group id parameter that would come as a result of logging in through index.html.
Four screens in workflow:
Right now, it's all being redirected to main.html. We need the server to discriminate between pages.
Every second at sea costs the player---the engine should account for this.
Regular login screen.
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.
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.
Fields:
That is, install the server in a different site (perhaps ballroom?) and test that it can be run.
Four screens in the workflow:
I originally had the preparation text as happening between index.html and main.html, but it should be within main.html, and displayed while others are still connecting (plus some extra waiting time).
User will need to name the group, and will have all the settings available to tinker.
Settings as in older versions of Fish.
Button 'return to port' doesn't work yet.
It should be easier to see what's going on.
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.
Introductory text, information, Join Group button.
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.
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.
The server should keep track of time, and notify all fishers:
The clients should not be able to fish between simulations.
The artificial agents should "hesitate", take more time to do some things, etc.
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.
They should correspond to the number of certain / mystery fish remaining.
When a participant is done with her simulation, have the client present a performance report that specifies:
Take the text from the previous version of Fish.
When creating a simulation, experimenter should be able to set a number of seconds of delay between casting for a fish and catching the fish.
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.
Model it after earlier Fish version.
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.
Angel tells me that most people in her experiments work on their own. Need to think what this means for group ID.
One should be able to pause a simulation (from mainadmin.html).
Right now we're showing all fishers, but this can be changed as a parameter.
Simulation engine should keep track of fish stocks and agent funds, and log all activity.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.