This script simulates the harvesting mechanics of the Aavegotchi Gotchiverse based on a given set of rules governing the game. This script is provided for educational purposes only for others to learn how certain harveseting play styles might perform in the Gotchiverse.
Each simulation contains a single set of harvesting mechanics rules. These include rules like build costs, limits on harvester count, crafting prerequisites, as well as limits on leveling up- like having to level up your altar or maker first.
The simulation is played by "bots" that utilize a strategy that governs how they play. We primarily looked at four bot strategies as described below.
Different simulation configurations (with different rulesets and bot assignments), are contained in the /simulations
folder.
All bots play according to the following rules.
- craft an altar, only upgrade the altar as needed to allow upgrading of other installations - bots do not spend more than 33% of the initial (round 1) alchemica value in the parcel on an altar upgrade - this amounts to max level of 9 for partner, 8 for spacious, 6 for reasonable, and 4 for humble
- craft a harvester - choose the most abundant alchemica token in the parcel (relative to the overall token supply)
- craft and upgrade a single reservoir per alchemica type as needed to ensure a reservoir emptying frequency of 8 hours or less
- craft and upgrade a maker as needed to allow upgrading of other installations - once a maker has been crafted, the bots' goal is to keep the maker one level ahead of their current simultaneous upgrades so that it never limits their progress. In order to ensure consistent results across different parcel sizes, bots stop upgrading their maker to ensure they spend no more than 50% of their parcel's initial (round 1) alchemica supply on the maker. They could probably achieve a better result by keeping it a bit below that- but this number was picked because that is approximately the cost of a level 9 maker relative to a partner parcel's alchemica. The maximum levels are 9 for partner, 7 for spacious, 3 for reasonable, and 1 for humble.
- bots are considered to have a virtually unlimited bankroll (though it is possible to limit it in the simulation settings), and they reinvest every penny in their parcel
- bots are given a single parcel to build on - this is currently a spacious parcel by default but this is configurable in the simulation - the parcel is assumed to get an average VRF roll for its alchemica supply, and does not have any boosts (both of these variables are configurable, however)
- bots do not spend any GLTR to speed up installation crafting - since the value of GLTR vs alchemica is dynamic, its cost is not able to be assumed it a meaningful way in the simulation
- bots do not collect any spillover - all spillover from reservoirs is assumed lost
- bots stop crafting and upgrading harvesters if they exceed their desired maximum harvest rate. This rate is calculated by taking the total amount of alchemica they expect to receive for the remaining distribution rounds in Act I and dividing that by the total days remaining in Act I. In other words, they try to exhaust their alchemica supplies by the end of Act 1, and not sooner (doing so sooner would only lower their overall returns as they would be building excess harvesting capacity that would go to waste).
In addition to the rules above, the following strategies are examined in the simulation. The code that runs the bot strategies is contained in the /strategies
folder of the project.
The expandooor bot (player 0 in the simulation), seeks to maximize the expansion of new low level harvesters before upgrading any existing harvesters.
The upgradooor bot (player 1 in the simulation), seeks to upgrade existing harvesters to their maximum level before crafting new harvesters.
The low levelooor is a humble farmer who does not upgrade any of their harvesters past level 1.
This bot is like the low levelooor, except they focus only on harvesting a single resource (in this case, FUD).
Rulesets are contained in the /rulesets
folder of the project. This is where game rules can be modified to examine their impact on the simulation output. The current.js
ruleset file contains the rules as they currently exist as of bible chapter 4.
This is a modified version of the harvester recipe which somewhat improves the ROI of higher level harvesters and diminishes the ROI of lower level harvesters compared to the original (current) ruleset. It maintains the current recipes' model of diminishing returns on harvester upgrade costs.
This is a modified version of the harvester recipe which greatly improves the ROI of higher level harvesters and greatly diminishes the ROI of lower level harvesters compared to the original (current) ruleset. It uses an increasing returns approach to harvester upgrades.
Similar to recipe B, but with lower overall costs and lower overall harvest rates (players generally need to build a higher quantity of harvesters in this scenario). In this recipe, the maker cost is also substantially reduced (by up to ~75%).
Results are output to a timestamped .csv file in the results
folder named similarly to the simulation script name that generated them. Charting and further aggregation and analysis of the data has been conducted and can be found in this Google Drive folder.
Note: As of the time this simulation was created, the reservoir spillover rates have not yet been announced, a set of sample proposed spillover rates has been used.
I am assuming you already have Node.js installed. The script was developed and tested with v17.4.0. To install, run the following from the root directory of the project: npm install
To run the script, run the app.js
script in the project root, or use npm start
. This will run the default simulation, with the current ruleset. To run another simulation use node app.js <simulation name>
where the simulation name is the name of the file in the simulations
project folder without the .js extension. (ie: currentRules)