Big addition. Probably one of the most major mechanical changes in a while. I thought I was about done with adding crop traits (growing speeds, fertilizer requirements, combo stuff, etc.), but I wasn't entirely happy with how growing crops felt. It seemed like I needed another impactful trait in my toolbelt to truly differentiate crops from one another, and it had to do with how they grew. To sum it up in one sentence, there's a lot of traits that affect the planting and the harvest, but outside raw growth rates there aren't any traits that affect how it grows. When growing crops this is a bit of a sore spot, as crops feel wildly different as you plant and harvest them, but growing them feels all the same (except for how fast they flourish). As such, enter Drain. Drain is a trait with two parts: fertilizer and water. Fertilizer drain affects how much fertilizer a plant "eats" as it grows, and water drain is how much water is drunk. Plants consume water and food to grow, so beforehand my crops felt kind of lifeless--they didn't consume anything, they were just a timer to wait for. Now, crops as a whole feel much more realistic. I have contemplated ways to implement a crop-rotation mechanic, but the concept creates more complication than its worth, in my opinion--I'd rather keep crops and their traits consistent and straightforward (i.e. static), and I want what crop you grow to largely be a player choice, not forced by rotation. This fertilizer drain, however, creates that sense of nutrient drain and replenishment you see in rotation but without the rotation, and I'm happy to keep it there.
More importantly, though, this changes growth completely from a gameplay perspective: it links fertilizing and watering to planting. Before, they were mutually exclusive: water/fertilizer acted independent of crops, and no matter how much you grew they would always act statically. Now, the more crops you grow, the more fertilizer/water you need--they are no longer exclusive, as one affects the other. This is extraordinarily important, as it unlocks a lot of depth with minimal added complexity, and growing now feels like a process instead of a start and an end. Regardless, this means fertilizer had to take a huge rework, which is certainly for the better. In short, fertilizer can't be a static 60 seconds per tier--if both tier 2 and 1 have 60 points of drain, they'll still feel equal. As such, higher tiers have exponentially more life to make them feel more resilient to fertilizer drain. It's effectively doubling down on the "higher tier, higher value" concept, but it works because it synergizes with fertilizer drain: bigger, better crops with more drain require bigger, better fertilizer. This coincidentally solves a few problems I had before. The game wasn't feeling exponential enough to be significantly incremental--I don't want it to be so incremental as to be linear, but this fertilizer drain pushed to extremes can drive home the concept of "spectacular crops require spectacular investment". Additionally, it solved my crops lacking uniquity. The only trait I am still seriously considering is a "hardiness" value, i.e. the growth rate while malnourished. Malnourished crops are lacking water or minimum fertilizer and grow at 30% speed, but "hardier" crops could grow at 70%, or weak crops at 10%, etc. This implies you're not taking much care of your crops, though, which is oxymoronic to the gameplay and thus questionably useful. It may not add enough depth to warrant the complexity it adds. Quite a bit to talk about today, so we'll start small. Player control logic has been streamlined, and I cleaned a fair bit of clunky code. As a direct result, a revamp of the logic means the player can now enable a planting/fertilizing/watering state while selecting. This is actually pretty important, as it removes a big, clunky barrier that bars faster play. Before, enabling a state would simply cancel the selection process as a whole (and start acting upon that state since LMB is held down), which was awful to use. Notifications have been added to menus so players have a little more guidance and miss things less. Currently it's just mutations and milestones, but I will probably add notifications for purchasable crops and upgrades. Menu buttons also now have a nice highlight when you hover over them (not shown here). Combined with the sounds I added last week, the menus feel much, much better. Plots are also now an actually clear, usable feature instead of what was effectively a debug implementation. They are added in the same way you water, fertilize, or plant crops, just with a different key. The plots you buy are stored, and once placed are removed from your total count--however, this allows the removal of plots to add to your count, which creates a convenient double-functionality where you can use the removal mode to pick plots back up (and then place them back down where you want), allowing you to rearrange your plots as you please. The most mechanical change, however is that water regeneration is now exponential. This does two things: first, linear regeneration oft feels slow and frustrating in games, from health to mana and more. Linear regeneration simply provides the most time for a player to feel "depleted" and feels consistently slower than something that has the potential to speed up, even if exponential regeneration may start slower than linear. Exponentiality fixes that, and feels much more responsive as a whole. Second, exponential regeneration encourages players to water in calculated bursts instead of consistently, as refraining from watering for periods is rewarded with higher regeneration. Calculated bursts are as a whole more engaging, as they require more consideration, thought, and interaction than the consistency of linearity. It's kind of a lighter risk/reward system: don't water, and you'll get your water back faster. In linear regeneration, it's just "always water" because it doesn't make a difference. I also made the water bar a little bigger and bolder for visibility. There are also now shop upgrades that let you increase your maximum water supply to store more water at once. Lastly, though, is something I discovered that made me extraordinarily excited. I actually found it by accident as I was bugfixing the implementation of some sound. I'm not sure whether to call it a dynamic or tech or what, but here it is in action: If it's hard to tell what's happening, let me explain. If you hold down LMB and RMB on a plot (with planting mode enabled), RMB will automatically harvest crops and LMB will automatically replant them. If you do this on a selected group of plots, it will do this for all of them. However, instead of doing the planting and harvesting all at once, if you first plant in a snake-like spread to create some delay between their growths, then they will harvest--and then replant--in that delayed pattern with the RMB+LMB trick. In theory, if you have a long enough chain that buys enough time for your loop to reset, you can persist an infinite combo just by holding RMB and LMB. Here is an example: As seemingly unbalanced as this is, I have no worries about it. Its possibility is already dependent on many things:
Not a lot of visual stuff to share today. I added placeholder sounds to the menus. There's still a couple more sounds to go, but even just a clicking sound adds so much life to an otherwise silent screen. Crop unlocks now take levels. I wasn't happy with just money being the sole limiter to unlocks, as it gives a little too much reckless freedom. The unlocks won't be necessarily linear--I just want the first ten or so crops to be a guided experience that caters to learning (e.g. first crop is as simple as it gets, second crop introduces one unique/extreme characteristic, second crop introduces a different one, etc. up to the last one or two crops which might have a number of extreme characteristics). After that I plan on potentially having many crops share the same price amounts to give some choice and mitigate the flatness of linearity. I also fixed a bug where genetics points could be allocated before unlocking the crop.
The code is starting to reach that tipping point where I don't remember absolutely everything about it since the project (and complexity of some parts) is expanding. Not a bad thing per se, and I notate/comment my code often enough for it not to be an issue. But from a development standpoint, it's starting to feel less like a prototype and more like a game. Stage one of system improvement is underway, today featuring the weather mechanics. Before, weather was a random temperature (weighted towards 21°C) and a random chance between a heatwave, frost, rain, or nothing. Now, it is much more. Here it is in action, but there is a little explaining to do. Ignore the weather effects having a breakdown, changing days this fast breaks the code. As I've mentioned before, weather changes every day and a few days make up a season (5 per season here just for a quick example; 10 is more functional and fluid). However, weather now depends on the season.
Rain happens in spring and autumn (the "less extreme" seasons), overlapping a hair into summer and winter (the "more extreme" seasons), which is a clean balance between realism and mechanics. Extreme weather events happen only in the "extreme" seasons (winter/summer); frost in winter and heatwaves in summer. These don't overlap into other seasons, so once you're into spring or autumn, you know you're safe. You can see a probability bar I made on the top with RNG values fluctuating from day to day. The colors are as follows:
Temperature also follows a season-based weight, peaking in early summer and bottoming out for most of winter. It shoots back up again in spring, which accentuates the sigh of relief that the end of winter brings gameplay-wise. This isn't the end of the weather system, but it's a much grander start than what it was before--it's about half of what I want it to be, which is where I want these core systems to be at for public playtesting (as per my previous post). I forgot to mention art as one of the things that needs updating, though it will be a half-measure at most. Think ten-minute tomato instead of two-minute tomato. Today's update features an experience bar. It's a little hard to see since the image is so small, but it's on the top of the screen. I found the idea compelling for a few reasons. First, it helps support the incremental and "permanent progress" parts of the game--i.e. something visual that quickly identifies how far a player is. The first (and only) main indicator of this at a glance at the moment is how many plots someone has, but I wanted something a little more surface-level and simple. Additionally, an EXP bar and level system allows me more control over unlocks outside of simple wealth, which is important for balancing progression. Players could otherwise save up a ton of money and skip steps in the progression process--skipping crops, upgrades, etc.--a level system allows me to soft-gate some of these to encourage players to go step-by-step. You probably could still skip things if you wanted, but this makes the average player experience a little less chaotic. For those who read my last post, FreeFarmGame did indeed have a leveling system, as do many other farming games. They use leveling for the same reasons I'm using one.
Otherwise, I fixed some bugs and cleaned my to-do list a little. I'm to the point where a lot of base functionality is in, and my development process is on the verge of shifting gears. Before, I would kind of just chip away at implementing anything and everything, but now I expect to shift to more of a specific-section style of development (sprints/vertical-slice in development jargon). I will be selecting individual features/systems and focusing on improving and expanding them to a point I am happy with. Here's a rundown of a few different things I have planned: Weather: Seasons, more weather events, better temperature fluctuation Deliveries: Delivery timers, variable (and customizable) difficulties, better balancing EXP/levels: Integration with upgrades, milestones/unlocks/deliveries/etc. all need to give EXP, and possible rewards for leveling Settings: Lots of optimizations, quality of life, customizability, and improvements Sound: More sounds, quality foley, sound balancing Genetics: Expanded crop upgradability, depth beyond simple point allocation Upgrades: More upgrades, upgrades for different systems, potentially single-use items Plots: More than just crop plots--sprinklers, automation, etc. There are a few more things, of which include planned features/systems not yet in the game. But first, I have to prioritize based on necessity and importance, which will likely be core systems like settings, sound, upgrades, genetics, etc. Side-features like deliveries or new features are lower on the list. I would like a fair few of these to get done before any real playtesting is considered. |