When I started coding I already had sketched down a couple of gameplay mechanics I wanted to start with. Most notably, the tile-based system where you move from one tile to the other as if you were walking upon a chess board (with some aesthethic interpolation). Each tile could be modified to your advantage or detriment by making clever use of your items and tools. The tiles could be overgrown with weed, host a rotten tree, a tree stump you could log down, perhaps flowers, mushrooms and berries, could be tilled, sown, and finally produce some crop. Furthermore, a tile could be either impenetrable, walked upon, swimmable. It could even host a person, underneath which the usual terrain tile would still exist.
Certainly all this seems quite straightforward and not particularly innovative. Which it in fact isn't. What the point is when undertaking this type of challenge, is to learn how a game is made from scratch. That's right, I did not want to use sprites engines, physics engines, particle systems that had already been created and simply go about scripting my game. I wanted to have a blank page and just fill it with this at the end quite complex game. And that is exactly what I did.
My code needed to have a sprite animator, which would understand what action the player was performing, in which direction and with what consequences and animate accordingly fishing the little sprites from the code memory. Same goes for the dog that has its little path-finding algorithm, some simple AI that allows it to be scared, give advices, hang around you, get hurt, rest etc It also needs its small sprites. The dog's talk bubble needs to come up and have a procedural shape and the correct icon (dog speaking instead of, say, villager or enemy speaking), text and a position that makes sense.
Jackie needed to be vulnerable to hits and pangs of hunger, and get tired by working. Another little function for that, different actions replenish or deplete stamina and health. Small meters will show you how you're doing right now, but that could actually not be included initially in the game.
The villager has a friendship meter that goes up and down depending on how you treat it. What she or he says depends on how close friends you two are. Also, some villagers perform actions such as selling or handing out items. All villagers have to be able to ask for some favour in order for you two to take it to the next friendship step. There are a plethora of these villagers to explore, items to obtain and quite many of these favours to make. Not to speak of the lately implemented "open-shop" system that does not in any way imitate Garvest Boon's main inspiration. Functions and subfunctions galore!
Then there is the house building gimmick that opens up the need to gather lumber and experience the first frustrations with the health and stamina. Without a house you'll have a tough time repleting energy and resort to sleep outside. Even finding out how to build a hut will be not so obvious initially. Gathering what you need is another part of it. You do die of malnutrition and/or fatigue in this game.
What I didn't have a clear plan on was how to wrap the game up. Although the core gameplay is to harvest crops and build houses and create new friendships and make money, I knew that one of the real focus moments of this game would be to find the balance between getting rich by working all day or just get by and have more time to live happily. How that translates in a pixel world where bathing in a spa or swimming in a lake or hanging around a mountain top are not necessarily as rewarding as in the real world, I have no idea. It's my first bigger game which is not a codesnippet, and I like it for that. What I decided to do is to just finish what I started, and make up my mind on...
HOW DOES THE GAME END: is it time-based? is it once you complete all the tasks you get? is it infinite? plus a singular idea from when I was much younger, but that's gonna be GB2 for you. In the close proximity of releasing my little game, I realise I now own my own little engine!