top of page
Search
Writer's pictureBrittany Blair

Salamander Village

Updated: Jun 6, 2022

Brittany Blair


Summary


Salamander Village is a level design project I developed while attending the Academy of Art University's Game Design program. This is an individual project and all the work I am showcasing is my own unless it is a reference example. This project was built in Unreal Engine 4 and had a timeline of 3 weeks. The requirements for this level are as follows: The level must have RPG Elements and be dialogue-driven. The level must have clear objectives and conditions for completion. There must be enemies in the level with some form of combat.


Level preview.



This project was the final assignment of my graduate-level design course. The projects I worked on previous to this are the Night Train, and King's Castle levels. If you're interested in seeing the progression of my level design skills over time I recommend looking at my previous projects before continuing.



Pre-Production

Week I


The pre-production phase of this assignment took place in the first week of the project. At this time I put together a few different documents after deciding on the concept and story of my game. The game needed to take place in a village of some kind. I decided to take inspiration from games like the "Pikmin" series and make the setting of my game a tiny town in a forest.


When I was a kid I used to spend my summers searching for salamanders and lizards under rocks and near local creeks. It inspired me to make the town full of little salamanders and lizard NPCs. With that as my starting point, I began looking for references to illustrated salamanders and leopard geckos. I imagined this game's art style to be cartoonish and similar to a world from "Super Mario Odyssey".


Reference sheet, Hand drawn concepts, and top-down map.


After putting together a reference sheet I was able to come up with an interesting light hearted narrative to match my imagined art style. For the Walkthrough I made sure to write down possible dialogue options or interactions that I wanted the player to have with the NPC's. For the most part there are only 3 main conversations in the level and the rest are small phrases that change once the mission is completed. The top down map for this level is hand drawn using photoshop. I decided to go this route because this level is made up of organic shapes and materials, whereas my other levels took place inside of man-made structures.


Level Walkthrough : Setting

"It's morning when our hero wakes up and finds themselves shrunken down to the size of a lizard. They find themselves in a forest near a large puddle . The forest is made up of bushes, sticks, rocks, and other small plants. The area is shaded with some sun spots showing through the leaves. The gentle sound of wind rustling distant leaves can be heard everywhere you go.
Near our main character’s sight of awakening is a small lizard village. This village is full of salamanders and newts who make up the inhabitants of this village. The residences live inside of mushroom homes, under rocks, and inside of the nearby fallen tree log. The village residents are some of the weakest and least intelligent of reptiles and they tend to be bullied by the nearby insects and larger reptiles like turtles and frogs. The village has a small river flowing though it that flows down and into the lake. On the right side of the village, across the twig that serves as the bridge is a small shop inside of a tree stump that sells weapons, armor and other miscellaneous goods. There’s also a small stand underneath some dandelion petals that is selling elixirs and food items. To the left of the river is a large town square with some salamander homes. At the bottom left of the village are two big rocks that serve as the lower entrance. Atop the rocks are some guards preventing any suspicious characters from entering the town.
If you go up the giant tree’s root you will reach it’s stump that sits elevated from the rest of the village. There you will find the village chief’s house. The tree’s roots also serve as another bridge that leads to the outside of the village. Outside the village, to the north lies a patch of clovers and inside of the clover patch are tons of small insects like ladybugs, roly-polies, ants and more! The clover patches provide the town with sustainable building materials for their homes and items. Recently there are lots of small insects eating all of the clovers.

This level's asset list was also the most extensive list I had made thus far, due to the outdoor location it required more props and by nature the RPG aspect of the game had a lot of scripting needs. Because of the scope of this project I made sure to manage my time so I could start blocking out the level in the first week. You can download both the walkthrough and the Asset list at the end of this blog post."


Production

Week II


Since I had started blocking the level in the first week, it gave me a nice head start in the second week. My main goal for this week was to block in as much of the level as possible and refine the overall shape and player path. This level is far larger than the previous levels I had worked on up until this point.


To start off, I separated the level into five main sections. The first being the starting area, where the player wakes up. I referred to my asset list and walkthrough frequently throughout the blocking process to make sure I have placeholders for each major section of the game. The second section was the bottom tier of the village, this is where the weapons shop is located as well as the training ground. The third section is the residential area of the village and has houses with a small pop-up shop. The fourth section is the top tier of the village and has the chief's house, as well as the entrance to the clover field. And finally the last section of the level is the clover field, the combat portion of the level takes place here.


Week I level progress screenshots.


The level has been put together using geometry brushes in Unreal and as a temporary solution for level boundaries I used the Landscaping tools to mimic un-even forest-like grounds. Around the level I wanted to replicate the feeling of a forest surrounding the area so, I added branches and bundles of leaves with transparency to the outside.


As far as level progress goes I wished I could have been further along in blocking out the level, I was still missing the village houses, NPC's and props.


Week III


For the third week I had to work on building out all of the props and remaining small buildings, making the level water tight, blueprinting all the mechanics and game events, and animating the In-Game events and cutscenes. I had my work cut out for me for sure.


Blocking


The first thing I did was add proper level boundaries and test to make sure the level was water tight and the player could not escape the level in any way. I wanted to have a few platforming sections of the level with items to pick up as a reward but they came at the risk of the player being able to jump out of the map.


Next I needed to add the villagers homes. I thought that it would be a cute idea to have the villagers live inside of hollowed out mushrooms, and have little glowing mushrooms as the lights. It reminded me of the mush furniture set in the Animal Crossing series. I also added more dandelions to the level, and populated the clover field with clover patches and a few platforming puzzles with items as rewards. lastly added a few simple materials to some of the models to give more life to the level. Most of them are simple colors, but the items, and the trees are transparent materials with gradients.


Final screenshots for the level design.


Blueprinting


Blueprinting the mechanics of the game took up most of my week. As I was getting more familiar with Unreal I wanted to challenge myself to create blueprints that were modular, easy to edit, and most importantly reusable. I had a few main blueprinting task to complete. I had to blueprint the Popcorn trail, RPG elements and dialogue, Item collection and effects, and create some kind of Combat system.


I started with the popcorn trail because it was something I had done multiple times, and I had previous iterations on the concept to work off of and improve upon. I decided that it would be in my best interest to create an actor blueprint for popcorn trail elements. If I were writing a traditional C++ class for this I knew that it needed to have a few key elements. First the class required a text render element, and a trigger element. The functions I wanted the class to be able to preform are as follows: The ability to make the text visible or invisible. I needed the object's condition status to be editable by the level blueprint. I wanted the level blueprint to be able to change the text of any popcorn element. I needed object to be able to destroy itself when it is no longer needed. I placed all of the popcorn events in the level and tested them before moving on.


In the end I decided to make a UI element to constantly display the player's objective on screen. So I removed the Text render element and added a reference to the player's objective text variable.


Mission Object/ popcorn trail Event Graph.


The next class I blueprinted was the lizard NCP. I used geometry brushes to model two versions of the Lizard NPC one for the average villager and another for the village Chief. Inside of the Lizard actor blueprint there is a trigger and text render object. The class has a reference to both the villager mesh and the chief mesh. If I check a box in the editor it will spawn the chief mesh instead of the default villager mesh. Each villager has an empty List of text elements that represent that character's dialogue.


The lizard blueprint has the following functions : Each lizard's dialogue is customizable. They can cycle through dialogue based on the player's interaction. They require conditions to be met before switching to a new dialogue path. Conditions can be edited by the level blueprint. I did have some difficulty making sure that the dialogue spoken by all NPCs would re-set if the player walked away but after troubleshooting the issue I was able to find a solution by setting a short timer to reset the dialogue when the player exited the collision box that dictates the interaction range of the NPC.


Lizard NPC blueprints screenshots.


After NPCs were tested and had a 100% success testing rate. I worked on editing the player character and blueprinting the item pick-ups. For this I made a component script that I attached to the third person character. The player needed to have some kind of health bar for the combat function, and a way to both increase and decrease the health based on what the player collides with. Because The player and the enemies both needed this feature I started by working generally. It contains information on each characters attack damage, max health, and current health. The stats component not only has functions to change the health of a character based on damage or item pickups, but it also to display their health as a text render object above their heads.


Next I created an enemy character actor blueprint to handle how enemies attack the player. I added the stats component to the enemy and modeled a simple lady bug static mesh to use as a low level enemy. The enemy has one trigger and one collision. The trigger the range in which a player can attack the enemy. To signify this to the player, when they are in range to attack an enemy text renderer's color will change from white to orange. When the player has attacked an enemy the color will briefly change from orange to red then back to orange. The collision surrounding the static mesh of the enemy will deal damage to the player. The enemies will move around the level and if the player gets hit by an enemy that is how they will take damage. The enemy actor will also destroy itself once it's health reaches zero. I had a few bugs involving an infinitely decreasing health and sometimes the enemy would not destroy itself properly. After making sure that that all enemies would destroy themselves when they died, I made the enemies spawn a random item drop and a small particle system that would last about 2 seconds before destroying itself.


Enemy blueprints & Stats blueprint.


After testing to make sure that the text of the enemy changed when the player was in range and that the enemy could deal damage to the player when they collided I worked on making a player component for the third person character blueprint. The player blueprint handles dealing damage to any enemies within range. It creates a list of enemy components that are in range and when the player clicks the right mouse button it attacks all the enemies in the list. It also removes enemies from the list when they are no longer in range. After testing this feature I noticed that the player could spam the button rapidly and the enemies would die too quickly, so I implemented a brief cool down between player attacks so the enemy's could be seen taking the damage before being destroyed. Once the player could attack the enemy's successfully I added collision functions for different item drops, and conditions for obtaining the sword in order to attack enemies.


Third-person character blueprint edits.