I am at it again, back in the zone, coding four hours a day if I can manage it. As always I've chosen a project for myself that is far beyond the realm of possibility for me to ever finish, but this time I am really trying to just enjoy the ride and learn a bit more along the way.
Since all my project ideas seem to roughly focus on the same ideas or gameplay, everytime I start a new project I can come back to an ever-growing library of systems I have coded and jump right back in.
I'm excited to document my progress because sometimes I do get a fair bit done!
Right now I am working on an RPG in which the Player will be charged with the well-being of a little girl in a town that deeply distrusts them. Impoverished, and strangely alienated by humanity, the Player will have to do their best to scramble for food, money, and friendship.
There has been too much undocumented progress for me to really go into all of it, but here are the key achievements of this week:
Whenever my day cycle hits six in the morning, scr_daybreak() is activated and randomizes the weather for the next day. This way, I always have one day predicted ahead of time. A new weather manager now starts and ends various weather effects come morning.
It's not at all looking pretty yet, as I am using a lot of placeholders, but I now have a simple trade menu based on money. There are a few bugs to iron out, but right now the game supports that traders have one item tag they sell and buy. For example, "Food". The Player can therefore only sell food items to this vendor. Money changes hands, you walk away with objects - the very basics are covered.
Make it so a trader can support more than one item tag, as each item might have multiple tags associated with it. For example, chocolate is both "Food" and "Gift" and could be found in a food shop as well as a gift shop.
Add the items we sell to the shopowner back into the shop, at the higher retail price.
Balance the prices. I plan for Player reputation to affect prices, and each merchant has their own premium. Right now, all items are under 40 coins, so the percentage premium is not very noticeable.
Update the whole UI, add item descriptions, and a hover effect that tells the item's retail value, etc.
Child now has a basic "Gift" menu that incldues their hunger, thirst, warmth and social stat. The player can feed the child food and drink items, some of which cure a little hunger and a little thirst.
I intend for warmth to later be linked to the state of the home-base (broken windows, carpets), the fire in the room, and the season and weather. I have not even begun to do that yet, though it shouldn't be too difficult when I get around to it.
All the Player can do, for the moment, is open the Hearth Menu, select a type of fuel from their inventory, close the hearth, and light it with a match from their inventory. Different fuel types have different burntimes, which already accurated tick down, so the fire goes out.
On top of all this, here's a brief overview of what's already implemented at least in a functional prototype fashion:
Containers and Inventory. Player can stack items, switch items, split item stacks to take only one item at a time. This works not just across the inventory but also across containers of various sizes, such as the wardrobe or a chest.
Depth sorting (with a few annoying but manageable caveats)
Generate lootable bins. Bins outside generate different loot once a day. Still a lot to do on this to balance it to be less rewarding, and there's also an unknown bug ghosting around.
Room permanence. When you leave and enter rooms, the lights stay on, the fire stays on, the containers maintain their contents, etc.
Lighting. I have FINALLY found a script to convert X and Y positions in the room to GUI x and y. This has allowed me to follow a shader tutorial by Gaming Reverends Dev Corner and implement an overlay day and night cycle shader with coloured lights that now actually stick to the object's position.