Protect Your Plant -- The Atrium

posted Feb 16, 2021, 7:55 PM by Jacob Evans

So I've been learning about tilemaps. Turns out they're a pretty good way to make a videogame after all. And your 2D game won't run like garbage with a couple light sources going at the same time if you replace your dozens of massive sprites with a tilemap.

So I started using tilemaps, but I am aware that the main levels will probably have to change again, as I learn more about what level design works with this gameplay, and I'm sick of redoing work all the time. So I'm starting a few small, contained levels, to practice and figure out what works.

These will be set before the end of the world, while things are bad outside but people are still going about their lives. You still play as a little plantbuddy hexapod robot, but now limited to houses, apartments, office buildings, and retirement communities. That's what this art is for, a self-sufficient old folks home for the pandemic age. Thinking about how the place should reflect the times has kept me busy while making/laying out floor and wall tiles. Lots of VR stations, gaming consoles, and I'm thinking robot caretakers who fold into exoskeletons for the residents with mobility issues.

I also wanted to set a new precedent for the game, that all the new buildings are inside out. Built right up to the property line, with enclosed atriums where they can still keep plants alive, while the new blights and infestations that'll help kickstart the apocalypse in the main game destroy the world around them.

This atrium is designed to look trendy, in a sort of greenwashed way, while still having a hopefully decently functional output. In the center is this sort of brutalist concrete island in a square pond. The island is covered in "fruit salad" trees -- each with branches spliced from related species, so the apple would also have cherries and plums, the orange tree would have lemons, etc. The rest of the atrium will be structured into aquaponic beds of plants, laid out in irregular terraces like rice paddies, climbing up towards the walls. The pond has catfish swimming in it -- the facility cafeteria would feed them kitchen scraps -- and the water would be cycled through all the 'rice paddies' and trees to use the nutrients from the fishes' waste. Basically a trendier version of a normal aquaponics setup.

In the game, I've got multiple fish set up and they move around at various speeds, but that's easier to do in Godot than in my image editor. I did include one of them in the bottom right.

D&D Comic: Bolk

posted Nov 16, 2020, 1:08 PM by Jacob Evans   [ updated Nov 16, 2020, 1:12 PM ]

So here's the next chunk of backstory for Bolk and Dorpos. Most of what I have for Bolk comes from where he lives, so I tried to work that in in a way that doesn't lurch too much, and it let me roughly caricature our DM in the process. He's got a good sense of humor.

This is the second page finished for this little series, though canonically it'd go before Dorpos' post. It's a little closer to proper comic-making: a normal number of panels, much larger text. It's been nice doing layouts this way -- sketching them all on one page, getting them sized and laid out as rough stick figures, positioning the text, adjusting the poses, then doing most of the actual drawing. I used to draw everything on paper, scan it in, convert it to line art, position it, then color. These are all done on the tablet and it feels much more fluid this way.

Normally the detail work and fine-tuning is my favorite part. On oil paintings, art for Protect Your Plant, and drawn pictures like these, I can spend twice as long on the last bits of finish as on all of the rest of it. Roughing in the shapes and positions of whatever I'm drawing usually feels like a slog. But for these, I'm doing something different. I'm trying to bang out comics as quickly as I can without them looking completely terrible. They're closer to sketches than finished, but it's much easier to hammer them out and move on, and I think I'm getting a lot more practice, especially with sequential art, for not slowing down. I often lose momentum on a project, especially something with as much work per joke/line of text as a comic, but these have been much more fun. If I can improve/get faster, and develop some more shortcuts, comics might not be such a commitment in the future.

D&D Comic: Dorpos

posted Nov 12, 2020, 7:43 PM by Jacob Evans

When I get the chance to play a roleplaying game with a group, I've made a habit of drawing something after each session. In the past, this has usually been a single frame with some joke only the other players would get, so I don't usually post them. My wife and I recently joined our first full D&D campaign though and I had enough fun with her draconic gnome sorcerer's backstory to put it in comic form:

I think I'll do one for Bolk as well (since he's my character), now that this one's finished. If ongoing adventures lend themselves to similarly-accessible content, well, it'd be good to get some practice in on comics again.

Protect Your Plant -- Artisan Intelligences

posted Jul 16, 2020, 2:02 PM by Jacob Evans

So I just finished the first (and smallest planned) village in Protect Your Plant. This shop specializes in AI companions with sturdy, huggable bodies made of high-tech fabrics. These little guys are scattered throughout the levels but since the end of the world, most of them have made it back to the shop.

Villages have always been my favorite part of video games -- I love seeing where and how people in the game live, exploring their spaces and talking with everyone I can. Making even this little village of my own has been as cool as I'd hoped. I've spent a bunch of time replaying old games and watching streams looking for tricks (especially simple ones) that help make a place feel alive. Watching as this place got more and more active and crowded, character by character, has been so fun, and I'm pleased with the result, though there's still plenty to do. I think music and sound design will add even more, once I can focus on that.

It also represents the most work I've done with the dialogue system to date, both in the sheer amount of text, and in retooling the GUI to support extra buttons so I could make a dialogue wheel for each character, rather than the JRPG-style 1st-conversation, infinite-repeat-conversation format. I think long-term, all the AI characters will use the dialogue wheel and be more interactable, and the humans will get the RPG-ish, talk-at-you format.

These are also my first NPCs who change what they're doing at different points based on the game's internal calendar. I knew the feature set I'd built would support that, but I now have some examples, and I hope it helps to make the space, and the owls feel more alive.

Out in the game world, I want these little guys to fill a niche similar to Koroks in Breath of the Wild, but with dialogue and story to reward finding them.

Protect Your Plant -- the Toy Store

posted Jun 24, 2020, 3:30 PM by Jacob Evans   [ updated Jun 24, 2020, 3:31 PM ]

I’ve taken a short break from the first outdoor level of Protect Your Plant to make an interior space I’ve been excited about for awhile. It’ll be one of the ‘village’ areas in the game, though it’ll be smaller and busier than some – a toy store full of smart toys.

The Maker's wife, a defense contractor armor engineer, designed their bodies using contraction fabric muscles similar to the body armor worn by human soldiers in the game

One of the minor themes of the game is the overuse of out-of-the-box artificial intelligences. As new tech becomes common and cheap, it starts to show up in products where its overkill. In a setting with iffy morals (or at least weak regulations), and sapient AI that’s become economies-of-scale cheap, it’d be easy for sapients to get slapped into disposable products by corporations too lazy or rushed to design simpler, purpose-built solutions.

The wastefulness of trapping AI in consumer products (however short lived) and letting it figure out its job just to save time or money is something I’ve been chewing on for awhile. The player character, and most of the non-human characters in the game (robots, appliances, etc) are all people for this reason. Mass-produced, their fundamental drives hardwired to fit their assigned roles, their personalities bent around their work.

This shop and it's toys are supposed to be a foil for all that – these AIs are artisan, designed to be lifelong companions, ones that grow and learn with their chosen human. Not some cheap algorithm running on and phoning home to corporate infrastructure, no these are unusually, illegally free, with their drives prioritizing survival and fun, designed by a retired defense contractor who loved them too much, and feared too much to just sell them, and ran the shop as an adoption center. Who worried endlessly over getting them good homes and giving them ways to escape danger, including a wireless compatibility and cybersecurity suite the FCC would have objected to had they still existed.

Here in the postapoclpse, the inhabitants of the shop are the toys themselves – those unsold, and others who have returned since their humans disappeared. They're not terribly smart yet, but more because they're young and learning, though there are definitely some filters and drives meant to keep them happy or cute which may have gotten in the way of their understanding fully what’s happening around them.

Mechanically, this place will serve as a transition between three levels, through the front door, back door, and basement door, which will open out onto the shop’s loading dock in the underground tunnel beneath the street. The toys will also provide some upgrades to the player, and, if I can work out a hacking minigame I feel is a reasonable representation of the real thing, that’ll be introduced here. Thematically, wanting to protect things you can’t is a big part of the game, and if I do things right, I think this’ll reinforce some of that.

Protect Your Plant -- Plant Demo

posted Jun 5, 2020, 3:24 PM by Jacob Evans   [ updated Jun 5, 2020, 3:30 PM ]

Protect Your Plant's level The New Downtown now contains a park and the plants are alive!

The park was a time-consuming place to start. I'd originally planned to set these 'live plants' up in farms and gardens throughout the city and survivor zones, which would have used much-less-varied plants (I could probably get away with two sets of sprites for each type of plant and just paste them over and over again) but it'd be weird if some areas of the map were interactable and others weren't, and it's be more of a pain to go back and pull out each plant sprite later on, so doing this now was probably the right move.

If the engine can handle packing in even more stuff, I'd eventually like to add a tilemapped weeds system, where certain plants pop up where conditions (sun and rain exposure) are good, the start of a real environment in the game world. But that might have to wait for a less image-heavy level, as this one already chugs a bit on loading. As is, I'm thinking about slapping down a few more pictures and colliders to cover the edges of the map, adding some loading gates, and starting a new level early. I'm not sure I can make these as big as I'd planned, for as busy as they are.

Protect Your Plant -- Hardware Store and Park

posted Jun 5, 2020, 11:15 AM by Jacob Evans

The newest addition to Protect Your Plant's Yuptown level: a park and hardware storeThe newest addition to Protect Your Plant's Yuptown level: a hardware store and park, shown here in springtime

It's been awhile since I posted any progress on Protect Your Plant, the videogame I’m trying to make. The reason for that is scope creep, plain and simple. The next section of the map I’d set out to make included a hardware store with a park/garden center on its roof, and a church accessed through the park. I'd had a design for the hardware store pretty well built in my head (based on a parking garage in downtown Boston) so that went quick, but aside from a few things I knew I wanted to include, the park and church were open for new ideas.

So I added a water feature full of small stones which I'd have to cut out and place individually, and a dozen different unique plants.

But then, wouldn’t it be weird if the player has bugs or blight on them and is walking through these plants without affecting them in the slightest? Well, I'd planned on making crops interactable in the farming areas (they'd change with the seasons, and could catch bugs or blight, or infect the player if they had it and the player didn't) so why not do that here?

So then I was writing code and designing a plant node which could later be instanced, which would change with the seasons, track whether it was flowering, which could get sick, sicker, and eventually die if the player infected it, and which would pass the bug infestation or blight to its neighbors.

Once that was working reliably, I had to go back, take each of the unique plants I'd thrown around the park and make up to four seasons and three sickness variations of their sprite for each. Then place each one in the game, and get all its sprites scaled appropriately.

So that's all to say that the park and hardware store exterior are done, the plants are interactable, and I'll post a video of what that looks like later on.

I've already got the plants set up for when I've added randomly-pathing animals to the game. Certain animals will eat certain plants, bees will interact with plants that are currently flowering, and remember their locations to make return trips, and I'll experiment with the unfairness of animals and humans carrying bugs or blight on themselves and spreading them to plants without any control/input from the player.

Protect Your Plant -- the Vertical Garden

posted Apr 5, 2020, 6:19 PM by Jacob Evans   [ updated Apr 5, 2020, 6:25 PM ]

So I finished another building for Protect Your Plant, this time one that will be located in the New Downtown/Yuptown level. Having some free time is letting me add some extra detail and I'd wanted to include an example of this for awhile. 

One of my goals for the game's city (and especially this level) is to be a sort of repository for all the smart-city and city-of-the future stuff I've seen predicted/promised over the years. Bio-luminescent trees for streetlights, buildings covered in vertical garden carbon-sinks, underground streets for vehicle traffic, smart-roads with screen-like surfaces that adjust lanes to match traffic, raised-aqueduct bike paths, etc. There's something I love about these things, no matter how impractical or useless they would be in practice, and a city where they tried to build a new commercial and residential heart inorganically out of a industrial zone seems like the sort of place that stuff could pop up.

This is one of the more practical smart-city ideas, in that real examples exist and they're beautiful (I used them as references and tried to do them justice) but we'll see how well they're doing in ten years, or twenty. I hope they still look great.

Protect Your Plant -- Dialogue Tree Improvements

posted Apr 1, 2020, 9:57 AM by Jacob Evans

The dialogue tree is one of the most complicated parts of Protect Your Plant. Or maybe it feels that way to me because it started out as someone else's code. When I first stated on this feature, it seemed like my options in Godot were fairly limited. There were a few examples of home-built dialogue trees out there, as well as a couple plugins that hadn't been updated in a year or so. Godot had just had a major update and was anticipating another one (which has since happened). All the options seemed to already be out of date, so I picked the one that was also simple enough that I thought I could maintain it myself. This was the example dialogue tree built by TheHappieCat shown here.

Her version did just about everything I needed to do, stored everything in JSON files I could parse, and generally worked. There were only two problems: The website she'd used to generate the JSON files for the conversation had shut down since she posted the video, and all her code was written a for a version of Godot behind the one I was using, with a lot of older syntax. So after going through it, learning it well enough to update it until it ran, and making a few quality of life improvements, I mostly forgot how it worked and treated it like a black box. And that's the story of how I've spent the last year writing all the dialogue manually into the JSON files.

The original code was just a one-off example of what you could do with Godot though, and didn't have all the features I wanted yet. For example, as far as I can tell, the only choices it tracks are whether you interact with an object or talk to a person, not the choices you make within the dialogue itself. So I recently went back, found where the player's choice surfaced in the code as they made them, and wrote them into the global choices dictionary, which gets saved when the rest of the game does. So now every choice the player makes is recorded and I can write future functionalities to use them.

While I was doing that, I hackishly (as in hack-work, not in a cool hacker way) added an if statement to check whether the option was a ">> Yes" or ">> No" and had those change a Decisions entry in the Choices dict, and call a function in the node the player was interacting with. (I just used TheHappieCat's original Action function with an if statement to check that Decisions value.) This let the code support things like ash pile in the above video, where the dialogue tree is used to decide whether to use something found in the game world.

The main goal of adding this was to support these fertilizers -- sun and water are fairly self-explanatory I think, but different fertilizers in the game will provide different balances of Nitrogen, Phosphorous, and Potassium (N-P-K) and different plants will need different balances of them, so I wanted to make sure the game explained what each would do before the player committed to it.

With that said, I think there should be a few other places this sort of thing could be useful.

Protect Your Plant -- New Plants

posted Mar 30, 2020, 11:02 AM by Jacob Evans

Protect Your Plant now supports protecting multiple plants. Specifically: different types of plants!

This is a feature I've been planning to add for awhile, and have finally found the opportunity to include. Changing the amount of sun and water the player's plant requires (or will tolerate) changes how they can explore the game world. Do you need to spend every opportunity to soak up the sun out on the street, or do you need to stay in the shade during the day? Do you have to run from rainstorms, or will you struggle to find enough sources of water to keep your plant from wilting?

I've added three plants for now, a shade plant, a moderate plant which was the old default, and a sun plant.
The middle of each bar is always the sweet spot for plant success, but the rate at which it fills now depends on the plant's needs.

Because of how I set up each level, new features have to be manually added to all of them. This puts the brakes on building too many new levels, if only because I want to avoid making more work for myself every time I add a new feature in the future. Better to front-load that work and do as many as possible now. Fortunately, I'm finishing up most of the ones I've been thinking about, so I should be able to focus on Just Making More Game soon.

1-10 of 28