jeremyckahn / farmhand Goto Github PK
View Code? Open in Web Editor NEWA resource management game that puts a farm in your hand
Home Page: https://www.farmhand.life
License: GNU General Public License v2.0
A resource management game that puts a farm in your hand
Home Page: https://www.farmhand.life
License: GNU General Public License v2.0
Well-fed cows should produce more.
This change should also raise the price of Fertilizer in the shop.
Record number of times player has gone requested a loan and display it as a stat.
It only needs to be shown the first time it happens.
make it possible to give out loans to other players, and a rate the loan giver wants, with that new players get money, and rich players get passive income. This could be an addition or replacement of the current Loan system.
So I was curious how reliable Math.random() * list.length was after four of my 30 cows were named "Salak" and four were named "Sapote" and wrote up this janky script in the console.
a = new Array(100); for (i=0;i<100000;i++) { v = Math.round(Math.random() * (a.length - 1)); a[v] = parseInt(a[v]) + 1 || 0 + 1; }; a.map((value, count) => `${count}:${value}`);
Turns out you get a similar distribution over many iterations, with some numbers appearing less frequently than others, especially on the extremes.
["0:521", "1:1002", "2:1003", "3:939", "4:1069", "5:945", "6:1037", "7:1035", "8:1035", "9:944", "10:943", "11:995", "12:1009", "13:1021", "14:1036", "15:1051", "16:1022", "17:987", "18:959", "19:1003", "20:961", "21:957", "22:957", "23:1053", "24:962", "25:1013", "26:1045", "27:1007", "28:974", "29:1020", "30:977", "31:1004", "32:1057", "33:1016", "34:990", "35:1000", "36:1002", "37:990", "38:1030", "39:1093", "40:1006", "41:1012", "42:1003", "43:1042", "44:1061", "45:1005", "46:1073", "47:965", "48:1020", "49:957", "50:1078", "51:960", "52:1004", "53:1062", "54:957", "55:950", "56:1044", "57:990", "58:1024", "59:1054", "60:976", "61:1020", "62:994", "63:1058", "64:991", "65:1063", "66:1014", "67:1000", "68:984", "69:1043", "70:983", "71:976", "72:1010", "73:1057", "74:1039", "75:1030", "76:1031", "77:1013", "78:1067", "79:984", "80:1010", "81:996", "82:1037", "83:961", "84:1023", "85:1060", "86:988", "87:1065", "88:995", "89:996", "90:1018", "91:1074", "92:957", "93:969", "94:1023", "95:1013", "96:1002", "97:1039", "98:1007", "99:503"]
But what you if you run it twice, and look at the decimal on the float as a source of increased entropy by multiplying by a large power of 10 to turn them into large integers so you can get a modulus? Whoa nelly salak that sounds random!
rand = (min, max) => (Math.floor(Math.pow(10,14)*Math.random()*Math.random())%(max-min+1))+min;
a = new Array(100); for (i=0;i<100000;i++) { v = rand(0, a.length - 1); a[v] = parseInt(a[v]) + 1 || 0 + 1; }; a.map((value, count) => `${count}:${value}`);
["0:1003", "1:1050", "2:1012", "3:1069", "4:969", "5:938", "6:990", "7:1019", "8:1042", "9:970", "10:981", "11:966", "12:961", "13:1026", "14:977", "15:987", "16:1024", "17:981", "18:994", "19:980", "20:986", "21:1016", "22:926", "23:1020", "24:1023", "25:1039", "26:1000", "27:1032", "28:1023", "29:990", "30:977", "31:1004", "32:994", "33:978", "34:1049", "35:936", "36:966", "37:1003", "38:1004", "39:1025", "40:983", "41:960", "42:1025", "43:1036", "44:1031", "45:990", "46:1019", "47:991", "48:954", "49:1021", "50:1000", "51:951", "52:1046", "53:959", "54:1001", "55:1012", "56:994", "57:954", "58:1050", "59:1026", "60:989", "61:933", "62:930", "63:985", "64:1002", "65:1052", "66:1014", "67:1044", "68:1073", "69:982", "70:935", "71:983", "72:1048", "73:1002", "74:980", "75:994", "76:1014", "77:956", "78:980", "79:1033", "80:1055", "81:1008", "82:1042", "83:1070", "84:996", "85:985", "86:1012", "87:1019", "88:976", "89:968", "90:1009", "91:1010", "92:970", "93:1018", "94:1003", "95:997", "96:997", "97:995", "98:1012", "99:996"]
Ahh. That's more like it.
Unlike in previous update it should "crows ate your crop" once for all crops ...now it shows the message for all crops ... For example crows ate 11 crops the message is spammed 11 times...
(From Delverton/Boneyards)
The first thing I want to do when there's a new little cow baby is hug them. But I have to find them first! If the default sort was by age, ascending, or if the game remembered my last choice, this would save a bit of hassle!
Produced by male Rainbow Cows, Rainbow Fertilizer persists after harvesting a plot and automatically replants whatever seed was initially planted. Should also apply to Scarecrows.
Currently if the player doesn't have enough inventory space, they don't get the their full reward.
(Via Delverton)
the price of Bread (or any other end product) is fixed, i can sell 1 bread for $525, that costs 15 wheat, when wheat is more then $35, then the end product (bread) has less value then its ingredients (wheat).
Cows are worth too much and wreck the balance of the game. This should be balanced out.
Build JSdoc documentation and publish it along with builds of the game.
Having a queue of events to process, and have a max on that queue? That should help or maybe a cooldown?
Define a Semer-based versioning convention, document it, and publish the relevant tags. Tag game data exports with the game version.
The maximum value of crops should be raised based on the number of current Patreon patrons: https://www.patreon.com/jeremyckahn
Notification alert spam doesn't stop, you have to reload sometimes
Via @AbinashWorlds
See: https://news.ycombinator.com/item?id=26392667
From viklove:
One thing I've seen in open-ended games like this (Rimworld, Crusade Kings) is to just jump into a "tutorial" at first and direct the player into the basic game loop. It feels like you're actually accomplishing something (because you're actually building your first farm), and you also don't feel lost because the game is pointing you to the buttons you need to press in order to achieve your first goal.
So instead of a long-winded introduction about what the objective of the game is, just jump straight in and tell the user "A farm is nothing without crops, purchase some carrot seeds from the store to get started!" or something to that effect.
Additional commentary from me:
It wouldn't be too hard to display those on the Home screen for the player to check off when they first start out (and then hide after completion). And I think the default state for some views could offer more explanation.
Also this Reddit comment from u/NotMyHersheyBar: https://www.reddit.com/r/WebGames/comments/m2tk75/comment/gqmg5aq
Make it easier on mobile to find what every button does and what are the consequences for each action you can take.
All I could figure out at first was to buy the carrots and water them every day, and go to bed at night.
Rebalance cows to make them produce less milk and fertilizer.
Currently there's a notification that explains how you affected the market, but it's unclear when someone else does. Show a notification after posting daily positions to show how the market has moved since the player's previous day completion.
Give players an amount of money equal to the number of active players in their room upon every server heartbeat.
Have save files grab game day and real date for file name:
"Farmhand Save - Day - .json"
(Delverton)
We need machinery to make recipes, like cheese, those machines should be expense to make it more appealing to take out loans (#29).
Requested by (delverton)
since this project desires a specific version of node to be installed, it would be nice to have an .nvmrc to help out with setup.
Create a web service that provides a singular, globally-shared record of item value adjustments.
Acceptance criteria:
adjustItemValues
)Let's use this closed issue to upload images for the wiki!
To add an image to the wiki, create a new comment here, upload your image to it, submit the comment, and then hotlink to the image URL as necessary from the wiki.
Also give the icons tooltips to indicate what they are.
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.