top of page

The Valley

Date: Sep-Dec 2020
Role: Solo Developer
Platform: PC
Engine: Unity 3D
GitHub Link
Valley_GroundScreenshot.PNG

About the Project

Intent

The intent of The Valley is to create an experience in which the player is able to explore at their own leisure, discover new secrets on the map, learn the skills necessary for survival, and ultimately make what they want out of the game. Players could either focus solely on their escape from the valley and rush through the game as fast as possible, or they could take it slow and enjoy the freedom of exploring the map and discovering new and exciting hidden secrets.

Gameplay Description

The Valley is a single-player survival/exploration game in which the player has crash-landed their plane in a valley completely surrounded on all sides with steep mountains which are impossible to escape from. The only thing which survived from the crash was the player character themself and their radio which they can use to call for help. However, the radio was damaged in the crash and must be repaired before it can be used. The goal of the game is to survive long enough to gather all the resources necessary to repair the radio and be rescued.

 

The valley is full of forests and lakes waiting to be explored. There are various types of plants that can be harvested and eaten raw, or cooked over a fire in order to restore more hunger. Resources such as rocks and wooden planks are also abundant and can be used to craft tools for yourself such as an axe and a pickaxe, which are then used for gathering resources that cannot be acquired by hand. As soon as all the resources required to repair the radio are acquired, the player character will be able to call for help and will be rescued, thus completing the game.

My Contribution

Because I was the sole developer of this project I was responsible for all tasks related to its creation, including level design, designing mechanics and systems, programming and implementing those mechanics and systems, sound design, UI design and creation, finding and adding 3D assets from the Unity Store, and finding and adding free-to-use sound assets.

Development Process

Developer Reel
Brainstorming and Documentation

When I first sat down at my computer with an open text document ready to begin brainstorming ideas for what I wanted this project to be, I found that I struggled more than I had anticipated just to come up with some ideas for the kind of game I wanted to create. My strengths as a designer really show in my ability to design and develop systems and mechanics for an already established game, however, when it comes to creating my own game idea from scratch, with little direction to go off of, I find that I can really struggle with the overwhelming amount of freedom. I was able to overcome this initial hurdle in development by looking online at examples of other published games which had the same genre as what I envisioned creating. During this research, I came across a game called Among Trees which I thought was really cool and was something I would be interested in developing myself. I ended up taking inspiration from Among Trees in order to come up with my game concept for The Valley, ensuring that my game was unique and adding my own mechanics and systems which I was interested in developing.

Valley_AmongTreesRef.jpg

Among Trees, FJRD Interactive

After overcoming this initial hurdle and creating a document filled with my notes and ideas for what the game could be, I began to dive more deeply into the documentation of The Valley, including documents such as an Inspiration Doc, a Game Design Doc detailing each system and mechanic, an Art Bible showing my desired art direction, an Items and Resources Spreadsheet for listing each of the game's items and uses, and a Scope Doc for planning out each of my deliverables through the semester of development. One aspect of game design that I like to pride myself on is my detailed and informative documentation for each game I work on. I always make sure to include as much necessary detail in each of my documents as possible to ensure not only that I myself understand and remember every detail of the project, but also for others to be able to read and understand my work and visions for the project.

Level Design

When it came to the level design for The Valley, I knew I wanted to create something which would hold many different secrets and interesting locations for the player to find and explore. One of the big aspects of The Valley is the ability for the player to enjoy exploring the map and finding new things, so I knew I had to include enough unique and interesting locations and items for the player so they are not greeted with a big but empty world.

Valley_GroundScreenshot2.PNG

One of my first ideas to encourage exploration was tied into the story of the game, that being the player character crash landing here in a plane. I had the idea to scatter debris and supply crates throughout the entirety of the map waiting to be found so that the player would have a reason to explore farther than just the crash zone. Not only would it be fun for the player to come across bits of debris and useful supplies for their survival, but it would also be directly tied into the end goal of the game which is repairing the radio. These supply crates hold essential items needed for repairing the damaged radio and so the player must do some exploring in order to find and collect these resources.

Another aspect I had to keep in mind when designing the world map was the player's survival. In The Valley, the player has multiple essential resources which they need to keep track of if they are to survive in this wild landscape, including food and water needs. While the player is able to collect and store food in their inventory for consumption on their travels, I gave them no way of carrying water with them, leaving them completely reliant on natural freshwater sources in order to survive. Because of this I also had to ensure there would be enough water sources scattered across the entirety of the map so the player would not find themselves in a situation where there is no nearby water. I strategically placed rivers and small ponds across the map for the player to drink from so they could safely explore far from the initial crash zone.

TheValley_Map.jpg

To actually create the map layout I took to Adobe Photoshop to draw an overhead image of the entire map, keeping in mind the points I mentioned earlier. I wanted to first make sure my map layout made sense, was interesting for the player, and had all the necessary locations and resources before beginning the creation process within Unity. 

During the next step of creating the map for The Valley, I had to actually create the terrain in-engine. I decided the best way to accomplish this was to directly bring in the image of my map layout into the engine and overlay it on top of my terrain. I set the image to be slightly transparent so I could see my terrain underneath it and began tracing out the basic shapes of my terrain with the paint terrain tool. This allowed me to ensure my map in-game was exactly accurate to the image I had created.

Valley_MapOverlay.PNG
Valley_MapNoOverlay.PNG

In the above images, the first shows the map terrain with my layout image overlayed on top of it, and the second shows the map terrain by itself. As you can see I was able to achieve an almost perfect 1 to 1 from my map layout drawing to the actual terrain in-engine. I only had to make some slight tweaks to the design, such as the areas where it transitions from the inaccessible steep cliffs down into the playable space. The areas I had drawn in my image to designate raised terrain were not large enough and the terrain ended up becoming too steep to easily traverse in-game. To fix this I simply extended the high elevation areas around the steep cliffs and hills to create a much smoother upward hill that the player could actually climb.

This had been the first time I created terrain using Unity's built-in terrain tools and it went incredibly smoothly. These tools are very simple to use and I only had to do a small amount of research in order to understand how to properly use the tool and create the terrain I had envisioned. I am very happy with how my terrain came out in the finished product and I now feel comfortable with using this terrain tool again in future projects.

Inventory System

The next step in development on The Valley which I would like to discuss is the inventory system I created for it. Going into this project I had never created an inventory system on my own, nor had I put much thought into how inventory systems work in general. Because of this, I spent a decent amount of time looking through online tutorials and forums for information on how to create this system. In the end, I decided to try my hand at creating my inventory system mostly from scratch, without following any particular tutorial. This decision was made because each tutorial I found online was for a much more complex system which I did not need for this particular project. I wanted something simple which wouldn't take up too much of my time to create and ultimately I am very glad I made this decision.

Valley_EmptyInv.PNG

Empty Inventory Screen

Valley_CraftingInv.PNG

Crafting Screen

Valley_ItemsInv.PNG

Inventory Screen With Items

Valley_CookingInv.PNG

Cooking Screen

In the above images, you can see multiple different inventory screens which the player will come across as they play The Valley. The first image shows an empty inventory, allowing you to see the layout of the window. The second image shows the same inventory screen but with some items picked up, allowing you to see the information displayed about each item as it is selected and the various buttons the player can press to perform actions with that item. The third and fourth images show the crafting and cooking screens which are accessible from interacting with the firepit. On these screens you can see information about each craftable/cookable item you can create, what resources it requires to create, and a button to create that item.

Valley_InvCode.PNG

To very briefly discuss how the system itself works, each collectible item found in the world has a script attached to it filled with all of the necessary information about that item such as the name, icon to be displayed in the inventory screen, amount of food it restores, etc. The items currently in the player's inventory are stored within an array that lists the name of said item, and from that item name the inventory system can search for that item's "Pickup Info" script and extract the necessary information to display in the inventory screen. If the player already has at least one of that item in their inventory it will simply add 1 to that stack of items without taking up another slot, whereas if there are not any of that item, it will place it into a new empty slot and update the inventory system with that item's information.

Valley_InvFlowchart.png

One of the more challenging aspects of creating this inventory system was ensuring all of the information for each item was properly stored so it could easily be displayed and hidden as needed. Another challenge was allowing other systems, such as cooking and crafting, to interact with the inventory system dynamically in order to check for specific needed items/quantities and to also remove those items from the inventory when consumed. I was able to overcome this by turning each inventory slot into a button that also had the same "Pickup Info" script attached to it. This allowed me to copy all of an item's information directly to the slot it was stored within so that the picked-up item could then be deleted from the world while keeping all its info safely stored behind the scenes.

Because I chose to create this system from scratch, I was able to learn a lot more about working with arrays and storing references to information behind the scenes of the game. It also helped me to practice working through problems and to come up with solutions on my own using my already established knowledge of programming and Unity. I feel that the experience of creating this inventory system has overall helped me to become a better programmer and problem solver, things which will definitely be useful for me in future projects and in my future career as a game designer.

Postmortem

When I first thought of the idea behind this project, The Valley, I was fairly ambitious with what I thought I would be able to complete during this semester. I was really excited about this project and really wanted it to turn out as good as I had envisioned it in my head. However, as the semester progressed I realized that this semester as a whole was going to be more difficult than I had anticipated. I underestimated the amount of work I would have with all my other classes in addition to this one, and that ended up with me not having as much time to work on this project as I had hoped. It was also just a rough year mentally, as everyone probably can relate to, considering everything happening around us such as covid.

 

To speak about some things that did go well with this project, I am really proud of the work I got done on the systems for this game, especially the inventory system and the crafting system. I had never created an inventory or crafting system before in any project and I was able to make one mostly on my own without the help of internet tutorials. This is not because I wanted to specifically make it without help, but more that I could not find any tutorials online that worked the way I wanted mine to, and all the tutorials I found were overly complex for the type of inventory system I wanted. Overall I think the best thing about this project was the systems I was able to program and they all work well without any major bugs or issues.

 

The main thing that went wrong with this project was the fact that it was over-scoped for the amount of time I ended up having to work on it. I had big ambitions from the start and didn’t realize that my other classes and just overall mental health would interfere as much as they did. Had I had more time to work on this I think it could have become something really special.

 

From this whole experience over the semester, I have learned that I should definitely start out really small with my game ideas and then build onto them as I go. Had I started the semester with a plan of making this game much smaller than it currently is then I would have likely been able to end up with a smaller but much more polished piece. I believe my biggest issue when it comes to planning small is that I really want my games to be big and impressive, but then what ends up happening is I don’t have the time to finish them the way I envisioned and they end up being worse than if I had started with a smaller game idea in the first place. I am hopeful that after this course I can learn from this mistake and plan out my future projects much smaller in the beginning, and then build them up once I am sure I will have the time to add on new things.

bottom of page