Advanced Game Production



Into the Woods


Into the Woods is a 3D top-down randomly generated tile-based dungeon crawler. Play as a wizard apprentice who is trying to save their master, explore the dangerous woods and fight monsters with your spells, and collect items and brew potions to better your chances. Choose between several game difficulties, forest themes, and watch daytime turn into night as the days run out!




I am one of the level designers that worked on Into the Woods. Being a randomly generated tile-base (or room-based) game, I worked on creating a total of 48 varying rooms that were designed with the intent of being entered from any four sides, and to give the player a fair fight when clearing the monsters. Working closely with our programmers and 3D artists, I pulled things together to create each room with the attention of balance as well as an aesthetic touch. I also worked on the environmental particle effects, some of the floor textures, balancing loot drops, and quality assurance.


Game Link






__________________________________________________________________________





Sprint 7

May 19, 2021


For these last few weeks before our deadline of a feature complete build, I was tasked with finishing up any loose ends regarding anything relevant to what I've had worked on previously as well as new work of similar kind. Such as creating more of a diversity between our trees (walls) that border each room. We noticed there was too much of a pattern, or that it looked too "perfect", and so by adjusting scale and rotation it helps hide that repetitiveness just a bit. This involved simply editing our room parent prefab, but also deciding which two trees for each environment type would act as the primary trees of that forest (as the walls take two types of tree assets). For example, I looked through the six tree assets for our mushroom forest and picked out what two trees go well together in both shape, design, and color.

With the varying forest types in mind, we also needed floor textures to match them thematically. With having created a floor texture already, which would then be used for the evergreen forest, I was tasked in creating textures for the bioluminescent and flower forest floors. It was easy at first to jump right in to Substance Designer and reuse the stylized grass I made and simply edit, add, or remove nodes. The difficulty I found was trying to match the appropriate color given the lighting our game will have, so there was a lot of back and forth between Designer and Unity before finally reaching a consensus with myself. I later learned our day to night cycle was actually changing the main light color as well. Learning of this too late certainly doesn't fix the headache, but it did answer much of my confusion. Regardless, I was able to reuse my assets by reworking values I set like base colors and flower amount, and settling for the unique looks fitting for a bioluminescent and flower forest.





One thing I knew needed fixing based on the previous playtest and build was the loot dropping. Enemies dropped certain items more often than was necessary, making that particular item obsolete or other items seemingly more valuable due to the imbalance of item availability. In regards to potion ingredients, ones found lying around in the forest were greatly overshadowed by the abundance of ones that dropped only from enemy monsters. Yet we wanted the distribution of ingredients closer to the amount of those already lying about.




As can be seen in the chart above, I did 10 full runs through our game (meaning I played until I either won or died), and recorded every item type I received each run. I used this as reference when redesigning the enemy loot tables. By creating different ScriptableObject loot tables (set up by our programmer Chase) I used a tier system based on enemy difficulty (low, mid, high), and set the percent values for item drop chance relative to each other within the different tiers. With that, items are more appropriately distributed and players should feel more reasonably rewarded when defeating certain foes. I set up our chest loot table in the same fashion with the varying tiers (low, mid, high), but instead based on room difficulty. Again, I chose which items should appear per tier, and setting their drop chances based on the item value. In example, low end items like the Avocado, which grants an extra heart, should appear more frequently in low tier chests. Likewise, the most powerful item - the Totem that provides an extra life - should have a low chance to drop from only the high tier chests.

Aside from finishing my cards, helping importing finalized assets, reimplementing post-processing, and making small changes with my finished rooms one last time, myself and the team had a session together of internally playtesting for any bugs we could find. We discovered some serious game breaking ones which resulted in the game crashing. With much deducing, we discovered that these bugs were related to our night only rooms - which I realized uses a large collider to be triggered by the player to tell it that it can only be entered during a certain time. We later learned this conflicted with how the player drops items (whether by the player or it reaching its full use). The dropped item would search for the ground layer, but this collider was in the way and set in motion an endless loop. With my mention of the collider, and our programmers confirming this is the issue, the bugs were resolved. I'm just happy I played a hand in finding the solution to these game crashing bugs.


Cards Completed
  • (1) As a Developer, I would like to see the walls of the forest as different trees to break the repetition.
  • (1) As a Developer, I would like a floor texture to match the bioluminescent forest theme.
  • (1) As a Player, I would like to have a revamped loot table so I can have more better items.
  • (1) As a Developer, I would like a floral forest ground texture so that the forest has all the colors it needs to look nice.

In closing, I had a lot of fun being a level designer for Into the Woods. There was a great deal of cooperation, communication, and excellent comradery within our little team of 12. For myself, there was much I learned within this roughly 3-month production cycle. And as I reflect, in hindsight there are things I know I'd do differently in future projects as a level designer. I realized something after having created the annotated maps - they aren't the most readable. I understood it and could easily visualize what was what, but it doesn't necessarily mean the same will go for others on the team. Rough concepts should be quick and easy to understand to the point where anyone could make out what's going on. I also learned how vital it is to have a clear understanding of the team's approach with prefabs within a shared Unity project. Early on I created temporary blockout prefabs with the intent to replace them, but this added confusion with the team and caused a ripple effect which led to a major merge conflict in Github. The merge was resolved with no work lost, but it was still a result of my partial disorganization. Along with other lesser mistakes I frankly cannot recall, I understand it is also important to not dwell too long on these errors, but to maintain that momentum of producing the best possible work that I can - and I will continue to do so.





___________________________________________________________________________________





Sprint 6

April 29, 2021


To start, I finished things up with the card I was left on by the end of last sprint: finding soundtracks for the game. Thanks to Olivia's communication and feedback, we were able to settle with tracks that fit well for the menu, gameplay, boss encounter, and even win and lose conditions. The process was simply me pulling several free use audio loops for those in-game states as mentioned, and chosen purely on intuition. I would try to immerse myself in the music with the imagining of those moments of our game. It seemed I nailed it as out of the initial 12 tracks I grabbed there was at least one that was perfect for each category, save for one: the winning condition. Given that, I quickly went back and found a couple more tracks in no time. Both tracks were supposedly too good that it was like choosing the better of the two.

I was also tasked in playtesting the latter two sets of my 48 tile rooms (32 rooms total). For this I had to place myself into the shoes of the player, not a developer. As I did this, I would ask myself the following questions. Is this fair or obvious to me? Is this room too easy or hard? Is it too crowded? As I played through each individual level and took notes to state the positives and negatives of these, I then went through each one again with Olivia to verify (or discover new) findings. For most of them my rooms were quite spacious, allowing the player some breathing room and ability to move around. Enemy count and challenge was overall lacking, however, so minor adjustments were made in hopes to give the player a better fight.

As I went in to edit each room prefab for those balancing changes, I also went and made polishing touches and making those rooms complete for purpose of a finished product. Every collider was adjusted where needed, or an enemy's position was moved slightly to avoid an unfair start of a fight. Every asset was placed intentionally to serve the room mechanically, but also to make a bit of sense in the context of a forest setting. The variety of environment assets (all made by our 3D artist Erika) were utilized to create a natural look, and to avoid that sense of repetition. My process was to create a scenario that was interesting or unique to the other rooms, then I would go over it again with the small details and make it look "pretty".




For balancing, I designed it with the intend of each room to be a challenge, and to keep the player on their toes. Roughly, each of these challenges should take off at least 1 point of health for the average player, but no more than 3. Because the player begins with 20 HP and it takes at least four rooms to reach the end (boss room), assuming the player is lucky in their path of choice, there needs to exist that element of health loss amount to keep the game from becoming too easy. According to our latest playtest, it does seem I am getting closer to that balance as players are saying they are very much challenged, but are also able to beat the game.




Cards Completed
  • (1) As a Player, I would like a background track that consistently plays in the background, so that I feel like I am on an adventure.
  • (1) As a Developer, I would like to playtest my second and third set of tiles and take notes, so that they can be balanced.
  • (3) As a Developer, I would like all remaining tiles to be finalized so they can be in the game and complete.
Cards Incomplete
  • (1) As a Developer, I would like to see the walls of the forest as different trees to break the repetition.
  • (1) As a Developer, I would like a floor texture to match the bioluminescent forest theme.

I am quite happy with the work I did these past couple weeks. Although, once again I feel I could have done a bit more given the workload I gave myself. Yes, going in to play each individual level to test the feel of gameplay, or to try and break things is a time consuming process. Meticulously going in to change, add, or remove assets in accordance to balancing rooms can be deceptively difficult. But, I can see the light at the end of the tunnel with this last and final sprint to wrap it all up. Much of the work I have ahead of me is more of the same: balance work (in the form of loot from enemies and chests), and help make the game look like a finished product.





___________________________________________________________________________________





Sprint 5

April 14, 2021


At the start of this sprint I, of course, wrapped things up with the grass texture for our game's floors. Upon receiving additional feedback from Olivia - requesting adding a bit of color with perhaps flowers - I went back and made those additions. With that, and once again continuing to mess with some values so that the floor does not clash with our other assets, I ended with something I think does go well with the overall aesthetic. The next task assigned to me was to create some particle effects to help convey the feel with visual ambience for the player as they move through this forest environment.


For me, particle effects is yet another area I was revisiting with minimal experience going in. Using Unity's default particle system, however, was easy and worked exactly how I needed things to be to give our game some juice - that extra touch. I was asked to make an effect for our current evergreen inspired forest as well as other effects for possible forest types: a flowery forest, mushroom forest, and a bioluminescent forest theme. For each effect, I began things in Photoshop by creating sprites (like leaves or flower petals). The evergreen forest was given the effect of a convincing visual of falling leaves, and by duplicating much of those settings I went with creating the same thing for the flower theme (and with swapping out the sprites).





Brainstorming and creating the effect for the bioluminescent forest came quick to me: a wisp-like light that pulsates in size and ascends with a sort of weightlessness to it. It cannot be seen here with the gif below, but this effect also has a point light (with a blue hue) attached to each particle to make a better convincing glow in the dark look. Recycling the same "orb" sprite with an additional dust sprite, I moved on to the last visual effect being the mushroom forest: a sort of mushroom dust effect with spore residue.





With the programmers and 3D artists working vigilantly in creating our second boss type, I was asked to design a few different rooms for the player to fight it in. The mechanics for this boss works just like one of our chaser enemy types that splits into several smaller versions of itself upon being killed. With that in mind, I knew to give the player plenty of space to run around in, while also having conveniently placed environment pieces for the player to navigate through and to gain some distance between them and the boss. I tossed in a few extra annoyances - one room containing a couple green pea shooters, and the other some of our aimlessly wandering enemies. This will add challenge, but also hopefully create a less one-dimensional boss fight.




Cards Completed
  • (3) As a Developer, I would like a texture for the floors of each room so they are easier to look at.
  • (3) As a Developer, I would like ambient visual effects for the world so that I feel the forest is alive.
  • (1) As a Player, I would like a room for Boss B so I can fight them fairly.
  • (1) As a Developer, I would like to verify that all tile sets are ready to be put into the game, so we can include them without any bugs.
Cards In Progress
  • (1) As a Player, I would like a background track that consistently plays in the background, so that I feel like I am on an adventure.
Cards Incomplete
  • (1) As a Developer, I would like to playtest my second and third set of tiles and take notes, so that they can be balanced.

In conclusion, sprint 5 has been a very productive sprint for me. I feel I was able to make up what I considered lost progress from a few weeks ago. In addition to what has been mentioned as work completed, all 48 of my rooms are now made into prefabs (as the game is generated by instantiating said rooms), so they are all playable. I also got around to searching for some free use soundtracks as we move closer into the polishing stage. To find fitting music for our menu, gameplay, and the boss encounter. This was technically my next card after doing the particle effects, but higher priority tasks pushed this one back a bit. Regardless, I got to it and hopefully my picks for music will match Olivia's vision and the intended vibe: whimsical.





___________________________________________________________________________________





Sprint 4

April 1, 2021


This sprint I worked on completing blocking out my last set of rooms - making that 48 levels total (96 levels between myself and Reggie). The goal with these rooms was to really consider the player's space within the game, since now we've got a pretty good idea from our now playable levels. Space, but also utilizing our enemy types and really showcasing what they're capable of. Paul, our AI programmer, is constantly on top of improving enemy behavior, so there will be a continuous back and forth in adjusting levels based on these possible changes. Symmetry, asymmetry, and balancing room layouts using assets is also considered. Because of the camera angle, the taller objects like trees look nicer when placed further back.




With having finalized levels playable, and them having been playtested, I went back to make balancing changes and redesigned much of the rooms based on player feedback. Of course, I went in to play each room myself to try and recreate the negative experiences players were having. It is easy to pick up on the obvious such as having too many or too few enemies. The difficulty when redesigning a level is finding whether a room is laid out poorly for the types of threats that are present. There is also the matter of our shooter enemies' projectiles still going through walls, so a lot of design choices surrounding them are in theory thus far (as walls are intended to block shots).

Aside from level design, I was tasked in creating our game's floor texture: a stylized grassy floor. Since we've been using a default placeholder floor texture, it is time to replace it with something more original and that works with our art style. Getting myself back into Substance Designer has been the most challenging part for me this sprint as it is slightly out of my comfort zone. I had to relearn the interface and workflow of using and connecting nodes, and went through a lot of planning in how to go about creating the grass. I found a useful reference, followed much of it to get my bearings, then diverged from it as I worked to getting it looking similar to the art style we are going for. I am still in the process of tweaking values as I feel right now it just looks too heavy in detail. I am happy with my progress on it, but I will likely dial things back a bit to get a more simplistic appearance.




Cards Completed
  • (1) As a Developer, I would like 16 blocked out tiles so we will know what they will look like.
  • (1) As a Developer, I would like to play through the levels we have designed so far, so they can be properly balanced.
  • (1) As a Developer, I would like to balance the currently created tiles so that the players are not over/underwhelmed when they play the game.
Cards In Progress
  • (3) As a Developer, I would like a texture for the floors of each room so they are easier to look at.
Cards Incomplete
  • (3) As a Developer, I would like ambient visual effects for the world, so that I feel the forest is alive.
  • (1) As a Player, I would like a background track that consistently plays in the background, so that I feel like I am on an adventure.

To reflect, I feel I was less productive this sprint than usual. Although, the reason may be because much of my time was spent playing my levels and finding ways to fix problems. This is not a heavy workload process, rather a careful touch is required. I cannot, and should not make huge changes just to make it feel like I'm doing more work. Regardless, I also did not complete the grass texture - of which I very much wanted to get done this sprint. I started my cards a bit late, and things like the grass texture were never quite finished because of this.


Reference Link






___________________________________________________________________________________





Sprint 3

March 10, 2021


Now that a whole set of levels I designed have been blocked out and made playable, it was time to move things into finalizing said levels. This means placing back enemy types that were not ready for playtesting previously, redesigning the layout and aesthetic of rooms as we want each one to feel different, and considering possible changes in design such as logs now becoming barriers that players can shoot over, while taller environment assets remain as walls. And because individual rooms are to be instantiated and placed at random, these rooms are to be made as prefabs.

When designing, much of my approach came from turning a grid-based collection of enemies and obstacles into something that appears more natural. Walls became differently sized rocks, trees, and bushes - all while still convincing the player these obstructions will in fact block attacks. Logs in some cases remain relatively low so the player understands they can shoot over them. And even if this doesn't immediately translate, having our shooter enemies also be able to do this will teach the player. With nearly every enemy type now in and playable, I was also able to further balance certain rooms based on fairness and how much spacing was left for the player to move around. This will be a continuous process moving forward.




With now knowing how things will look in-game and feel to the player, I moved on to create even more level concepts. This time, I greatly considered just how little room the player has to work with when fighting monsters in such an enclosed space. How it feels to simultaneously move with WASD, aim with the mouse, and cycle through spells via mouse wheel should the player decide to get crafty with their methods of combat. The player being locked into a new room until it is cleared has been implemented, so now I can consider some rooms may not yield rewards. To create that sense of luck and uncertainty that can be found in many roguelikes.




We are also starting to get our day and night cycle close to implementation, and one change our game designer Olivia requested is for each room to have an alternative version depending on the time. Not including night only rooms, of course, but rooms accessible all the time will become more dangerous and threatening to players when nighttime hits. This is indicated through the updated legend: smaller enemy variant icons represent the enemy types that will appear in said room only when it is during the night. This could mean there are more enemies, or in some cases an enemy may be upgraded into its stronger version.


Cards Completed
  • (3) As a Developer, I would like 16 finalized tiles so that the game will look complete.
  • (1) As a Developer, I would like 16 different annotated tiles maps so that I understand the functional layout of each one.
Cards Incomplete
  • (1) As a Developer, I would like 16 blocked out tiles so we will know what they will look like.

With this sprint wrapped up, I am looking forward to continuing to tweak my more finished levels now that certain gameplay mechanics are slowly being added. And the process of finalizing the rest of my levels should go even smoother than the first time now that I have a clearer understanding of what assets we will have, enemy behaviors, and further game features.





___________________________________________________________________________________





Sprint 2

February 24, 2021


For this sprint I continued in creating annotated levels. It was surprisingly challenging as I went to make more levels without keeping things repetitive, or identical, to the room layouts I had previously made. With the goal to have a randomized room generator, it falls to us level designers to put our skills in creating multiple different levels. Although quantity is key, it is never a good idea to slack off in creative quality. Finding the balance between said quality work and getting the task done in time was ultimately the problem and solution for me here.

Other responsibilities that fell on to me was being tasked in getting our first playable build set up and ready. With our key feature of randomization not implemented yet, we settled with several fixed levels - one of which that utilizes the rooms I had already created. Working closely with Reggie, we pulled in our 3D artists' models, set up prefabs, and replaced them with our block out placeholders.

One task that I thoroughly enjoyed was trying to get our game's lighting and camera perspective right. This took me relearning post-processing, baked lighting, and rediscovering Unity's built-in camera features, but in no time I figured it out. With it set up, overtime we are likely to continue to tweak these values to match what our game designer envisioned.




Cards Completed
  • (1) As a Developer, I would like 16 additional annotated tile maps so I can play in a more diverse landscape.
  • (3) As a Developer, I would like a fixed map for players to play on so we can gather playtest data.
  • (1) As a Player, I would like basic light and camera positioning so I can see what is going on in the game.
  • (1) As a Developer, I would like blocked out tiles so they can be navigated by the player.
Cards Incomplete
  • (3) As a Developer, I would like 16 finalized tiles so that the game will look complete.

As of writing this, we had already received feedback from 13 playtesters for our first digital prototype. The responses were quite positive, and much of the major changes players expect to see in the future are already in the works. Below is a screenshot of the build, and generally represents how we plan on the game looking both in aesthetics, UI, and the player's view.







__________________________________________________________________________





Sprint 1

February 11, 2021


As one of the level designers for Into the Woods, I was assigned in creating concepts and blocking them out for this first sprint. After carefully studying our design document to fully understand game mechanics, enemy types, and items and interactables, I began work on annotating a slew of levels. As we attempt to create something roguelike, levels will appear similar in layout to games such as The Binding of Isaac and The Legend of Zelda. To that end, I made sure each level, or room, felt unique in how the player might move around in it.

For now we are looking to have items from chests be fixed, the game's layout be set up in a 4x4 room arrangement, and randomization come mainly from what room will be instantiated and where. I worked closely with our other level designer, Reggie, to ensure item drop quantity was appropriate between each of our concepts (having less valuable items be more common, and more valuable ones be more rare). Some rooms I offered more methodical gameplay whereas others may put pressure on the player - depending on the amount, placement, and choice of enemies.




After having created 16 room annotations, I moved on to blocking them out within Unity to ensure spacing between the player and everything else felt right. The camera perspective will not be entirely top-down, but more so at a 45 to 50 degree angle. Given that, one concern we've had was how the walls (trees) of the rooms will appear, and will the bottom most ones end up blocking the view of gameplay for the player?




Cards Completed
  • (3) As a Developer, I would like 16 different annotated tile maps so that I understand the functional layout of each one.
  • (5) As a Developer, I would like to have 16 blocked out tiles so that each one is scaled appropriately to the player.
Cards In Progress
  • (1) As a Designer, I would like to test the paper prototype for this game so we are sure the gameplay loop works and it is fun.
Cards Incomplete
  • (1) As a Developer, I would like 16 additional annotated tile maps so I can play in a more diverse landscape.

Lastly, I did a bit of internal playtesting - trying out our paper prototype to make sure the game loop is fun. Testing room randomization, a day and night cycle mechanic that works as a game timer, there being night only rooms, and item worth. Much of this turned out to be fun, but I did find being locked out of night only rooms when it is daytime to be more of an annoyance. This is likely due to the nature of tabletop turn-based gameplay. I'd imagine it will translate differently in a real-time digital setting. Another find was how much I liked being able to know where my end goal was (the boss room). I liked having that information, and it doesn't give everything away as connections to rooms will also be randomized - all while being under a time constraint and hidden from the player via a mini map.

Comments