Alright, gang! We were really productive the last week, so we have lotsa things to update you guys on! To summarize, we have the following topics for this devlog:
Character animations
Inventory UI
Plant UI
Camera effects
Unity workflow improvements
Playing games
Character Animations
A lot of this week was dedicated to making the game look and feel "nice," so that it would start feeling like a real game. One of the areas we focused on was character animation for Pumpkin. She already had a walking animation, but to give her a little more life, we added an Idle animation as well as a Running animation, including the appropriate controls. Check it out!
The little dust puffs behind her running animation and the head tilts in her idle animation are details that we think give her life.
Inventory UI
Another area that we focused on this week is player UX/UI. And a big part of it is the inventory system. Last time, the inventory UI looked like this:
Not sketchy at all...
Now:
Did you guys notice? We have buttons to open menus now!
Plant UI
Another big part of player UX/UI is finding ways to let the player know what's going on in the world around them. So last week, Billy expended a lot of design energy into coming up with ways to let the player know what's going on with the plants around them.
For example, there are now indicators letting the player know whether the plant is getting enough sunlight and/or water and whether the plant is sick and the player needs to attend to them:
![](https://static.wixstatic.com/media/97ce3d_2c357c1bbca74a549b5883df731008d0~mv2.jpg/v1/fill/w_980,h_610,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/97ce3d_2c357c1bbca74a549b5883df731008d0~mv2.jpg)
The apple tree is getting all the sunlight and water it needs so it's healthy!
![](https://static.wixstatic.com/media/97ce3d_2cbcd434d47242209df88be7da7a7b23~mv2.jpg/v1/fill/w_980,h_615,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/97ce3d_2cbcd434d47242209df88be7da7a7b23~mv2.jpg)
Oh no! Because the apple tree is not getting the sunlight and water it needs, it's sick and needs Pumpkin's attention!
Also, to let the player know whether a plant is being watered or not:
![](https://static.wixstatic.com/media/97ce3d_8112e78a73a4471f8a84095f8bede71a~mv2.jpg/v1/fill/w_652,h_562,al_c,q_85,enc_auto/97ce3d_8112e78a73a4471f8a84095f8bede71a~mv2.jpg)
It's a subtle effect, modelling water splashing underneath the plants.
Camera Effects
A game's aesthetic can say a lot about its story and the world it takes place in, so we spent some time last week playing around with the camera to determine what effects we want. We focused on two parts to the camera - its angle and its depth of field.
The angle of the camera plays a large part in the overall "feel" of the game.
So does its depth of field.
We still haven't figured out exactly what we want, but we're sure having fun! Look at all the pretty pictures! ^_^
Unity Workflow Improvements
This week was all about improving our workflow. We have never done much Unity Editor scripting, so this was our chance!
In our system, we have some databases for plants and items. Each plant's editor script has a "Generate new plant"
![](https://static.wixstatic.com/media/3cd7b4_972f3af37da74393aa15004313f1076a~mv2.png/v1/fill/w_549,h_131,al_c,q_85,enc_auto/3cd7b4_972f3af37da74393aa15004313f1076a~mv2.png)
Generate a single plant prefab from its ScriptableObject database file.
The database entries dictate what component scripts are added to the Plant prefabs. This works great when updating one plant. Problem is, what if we make changes to the database structure that affects all plants. Going through every plant prefab in our project and re-clicking "generate" is time consuming and not a very good workflow.
So I spent some time diving into Unity's Prefab editing abilities and managed to add a "Regenerate all" button to our game from the editor!
![](https://static.wixstatic.com/media/3cd7b4_0eb81c8463dc4d79a090c0aeb5714002~mv2.png/v1/fill/w_950,h_158,al_c,q_85,enc_auto/3cd7b4_0eb81c8463dc4d79a090c0aeb5714002~mv2.png)
Re-generate ALL Plant prefabs in our Assets folder with a single button click.
This actually scrubs our Unity Assets folder for Plant .prefabs, opens the prefab in script using Unity's PrefabUtility, modifies it, then writes it back.
This is the first time I've worked with Unity's PrefabUtility, and it took a LOT of Googling to figure out what to do (and a lot of Unity Editor crashing!), but I finally got it to work. Apparently forgetting to call UnloadPrefabContent will result in Unity crashes with Version 2019.3.13.f1, which unfortunately took me too long to figure out :sweat drop:
Two resources I found very useful here:
1) An editor script to search for prefab asset files containing a certain component. Great reference for prefab editing in scripts. You can just drag and drop this into your Unity, super useful!
2) This thread on a critique of the Unity Prefab editor functions. Baste has a super useful script on comment #13!
Playing Games
At AGG, we make games, we play games, and we breathe games! So last week, when we got some down time, we decided to play another game dev's game that we thought looked interesting - Deep Forest by Kevin Trepanier.
Reminiscent of games like Undertale, Deep Forest takes you on a "bite-size", artistic adventure to save your forest. It has beautiful pixel art and is very fun and well-designed - it isn't too slow nor too fast and is very intuitive to play. Needless to say, we love it!
![](https://static.wixstatic.com/media/97ce3d_95829675cdee4f908a3f9c145932e5bf~mv2.jpg/v1/fill/w_980,h_1095,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/97ce3d_95829675cdee4f908a3f9c145932e5bf~mv2.jpg)
We finished! Gotta say - we've never played a game where we've gone "Squeee!" so much. XD
Check out the full free game here: https://small.itch.io/deep-forest!
And that's all, folks! Follow @AngryGoatGames on Twitter for more updates on our upcoming game!
![](https://static.wixstatic.com/media/97ce3d_09451950a8524e20addf310756a1b6d4~mv2.jpg/v1/fill/w_980,h_980,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/97ce3d_09451950a8524e20addf310756a1b6d4~mv2.jpg)
This week, we've been focused on reorganization as well as working on a new area that just opened up. Exciting stuff!
Model Redesign
A lot of focus this week has been on getting the aesthetic of our game right as well as figuring out a better workflow regarding the assets.
One big ticket item we've been working on concerns the scaling of world. We want the game to have a cartoony feel so the sizes don't have to reflect real life, but we don't want it to feel too out of place. For example, before:
![](https://static.wixstatic.com/media/97ce3d_372b7559d9504feb8fcd7384c6233ab6~mv2.jpg/v1/fill/w_436,h_250,al_c,q_80,enc_auto/97ce3d_372b7559d9504feb8fcd7384c6233ab6~mv2.jpg)
Yes...That is a jumbo strawberry, towering over the tomato plants and squaring off against the pine trees.
Not only is the main character far too tiny, the size range is unmanageable, and the overall aesthetic is just a mess. Now with everything resized:
![](https://static.wixstatic.com/media/97ce3d_d84731b5926d4d57adf19059d4f7a417~mv2.jpg/v1/fill/w_404,h_420,al_c,q_80,enc_auto/97ce3d_d84731b5926d4d57adf19059d4f7a417~mv2.jpg)
Much better! Also...notice anything different with our main character? She's colored! And she has hair now!
New Area
Title speaks for itself! Take a look! What could this be???????? We're not saying yet :-)
![](https://static.wixstatic.com/media/97ce3d_fcd9a30a55e14fdebd4a8cd6caeb6223~mv2.jpg/v1/fill/w_732,h_453,al_c,q_80,enc_auto/97ce3d_fcd9a30a55e14fdebd4a8cd6caeb6223~mv2.jpg)
A machine? How could such an advanced technology be found in a treehouse????
New Database System
With the original prototype for the game, we were using XML to hold our database items. After a complete redesign, we moved all the data to inside the components of individual prefabs. When we want to create a new prefab, we just add 5-10 components to the prefab, set the data, and we're all good! :sweat drop:
This posed a lot of problems and was super complicated to remember all the steps just to add one plant. This lead us to Unity's ScriptableObject class! We will write a full tech tip on this later, but now adding a new plant is as simple as importing the Blender Model, setting all the data in a _single_ ScriptableObject instance, then hitting the button "Generate" on the plant!
Saves us a lot of time.
![](https://static.wixstatic.com/media/3cd7b4_8f5ff23b87bf48539d197fd3aa684754~mv2.png/v1/fill/w_499,h_148,al_c,q_85,enc_auto/3cd7b4_8f5ff23b87bf48539d197fd3aa684754~mv2.png)
To create a new plant we just click "Generate Plant". All the components we need are automatically added to the plant based on the "Object Data DB" which is a ScriptableObject!
![](https://static.wixstatic.com/media/3cd7b4_5cff6b51df784ac19c9af2bc5fe1bdf5~mv2.png/v1/fill/w_461,h_615,al_c,q_85,enc_auto/3cd7b4_5cff6b51df784ac19c9af2bc5fe1bdf5~mv2.png)
All the properties of our plants are in one ScriptableObject. Each one will trigger adding new components to our prefabs during the "Generate Plant" button click!
Adding a new item data is as simple as a few mouse clicks in the Unity editor!
Stay tuned in the future for an AGG Tech Tip on ScriptableObjects in the future!
And that's all, folks! Follow @AngryGoatGames on Twitter for more updates on our upcoming game!
![](https://static.wixstatic.com/media/97ce3d_09451950a8524e20addf310756a1b6d4~mv2.jpg/v1/fill/w_980,h_980,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/97ce3d_09451950a8524e20addf310756a1b6d4~mv2.jpg)
Okay, so you know how we said we'd take a break from writing devlogs for the holidays? Well, gamedev is our passion, so that didn't really stop us from continuing development of our new game. So we just have more stuff to write about! ^_^
"Table of Contents":
Title sequence
Weather effects - rain and sun
Inventory UI
Selection mechanic and player feedback
New plant models and model performance
Game Title Sequence
This time around, I decided to take a break from modeling for a few days and work on the UI a bit. To experiment with the transitions and the available UI elements in Unity, I took a stab at creating a rudimentary title sequence for our game. I learned a lot, and it turned out pretty decent, though unfinished. My favorite part is the loading screen:
![](https://static.wixstatic.com/media/97ce3d_f9f82fd6d67643b2b522def3d42d828e~mv2.gif)
Cool, huh?
Weather Effects
Meanwhile, Billy was experimenting with the rain mechanic and the day/night cycle, both of which will affect plant growth in our game.
Look at those shadows! Look at those rain drops! Look at those tomatoes!
Inventory UI
After getting the title sequence down, I had a bit more confidence to get the full inventory UI working. Before, we had the hotbar working. Now, we have 1) an expanded, full inventory, 2) a way to swap items between the full inventory and the hotbar, and 3) a way to display information about the selected item. Check it out!
Swap swap swap it out!
Selection and Player Feedback
One of our primary concerns for all of our games is player experience. We want the player to be able to navigate our game intuitively and effortlessly. So for the last few weeks, Billy focused on ways to give the player feedback through our game UI such that they know what they can and cannot do, why they can or cannot do something, and what's going on around them.
The grid cells indicate how much space an object takes (or will take) up, and the little indicators above the planted seeds indicate if the conditions are ideal. Also look at those pine trees grow!
New Plant Models
Check out the new plant models! Can you guess what they are? We're not telling ;-)
On a related note, we ran into performance issues while trying to instantiate a bunch of plant models on a non-gaming rig. Keep an eye out for our upcoming tech tip to see how we addressed those issues!
Before and after! We sacrificed very little in our optimization!
That's all, folks! Follow @AngryGoatGames on Twitter for more updates on our upcoming game! And may 2021 be the best year of your lives!
![](https://static.wixstatic.com/media/97ce3d_09451950a8524e20addf310756a1b6d4~mv2.jpg/v1/fill/w_980,h_980,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/97ce3d_09451950a8524e20addf310756a1b6d4~mv2.jpg)