Saturday, May 1, 2021

I'm Free Production Blog 6

I'm Free Sprint 6

Our second-to-last sprint is finished. The levels are all filled out now and we're finishing up our features as well as implementing most of our art assets from 2D art for the UI and character models as well as animations. I was assigned four cards this sprint with two cards carrying over from previous sprints. 

I finished creating the forest level as my first priority. It's important, after all, to finish implementing all our levels. Since this was the last level and the least expected level that the player would reach, we decided against making any new 3D assets/models so our 3D artist can focus on creating the player and enemy models. I used mostly the organic models to create what would feel like the last stretch of this environmental narrative where the player escapes from a lab, a zoo, a military hanger, and finally reaching a forest. This level might be repetitive with just mostly using previous assets and mostly organic assets but the intention was to make a sort of endless forest. 

Forest Level

After finishing this card, I then worked on fixing the lighting. This was one of the criticism we received in our feedback and that was the uneven, clipping lighting of the levels. I researched if there were better ways to light each level differently. At first, I tried to bake lighting but I noticed it bakes on the whole scene rather than individual items. And even then, its difference isn't impactful. Thus I could only turn to the one thing left I could think of, scripting. With my average and basic programming knowledge, I made scripts that refer to a lighting manager script with a switch function that would instantiate prefabs of different lighting groups whenever the player reaches a different level's large room. Since our levels are randomly generated, I added a collision box to the three big rooms of each level. Each level's collision box has a different script that changes the level's number which runs through a switch function and bools that would detect whether a player is in a new level or not. If the player reached a new level, the previous level's lighting will be disabled and the next level's light will be spawned. I also knocked the forest lighting card out of the park since I figured out the lighting for the forest level while working on the lighting card.

Lighting swap for each level

Lighting Script

Lastly, I worked on making sure the player cannot clip through the level. Other than making sure the walls surround the level, I also had to remove assets that are near the walls as it allowed players to clip through walls despite how thick the box collider is. This meant the majority of the pipes in the lab level had to be removed. I also had 45-degree blocks for the corners so the corners are more reinforced.   




The only card left was to add the enemies into the game which would be the first thing to do in our last sprint and to get done before the Beta build is due. The next sprint will be the last one so the main focus is to fix any last-minute errors that would inevitably come when constantly playtesting our game as well as adding in any art assets that will be done or are done by Sprint 7. We've almost reached home base. Until then! 


Sunday, April 18, 2021

I'm Free Production Blog 5

I'm Free Sprint 5

We have reached the last legs of the production pipeline with the end of Sprint 5 now. Mostly we've finished our features with the enemies being the one last feature to focus on. For this sprint, I was assigned 5 cards with a total of 8 points. With the cards from the previous sprint, I completed 8 cards with a total of 12 points. Needless to say, this has been a rather productive sprint for me. 

The card I finished first was tweaking the walls of our small levels as in the feedback people mentioned how the walls obstructed the view of the player, especially the hallway rooms where each room is smaller. I went through the prefabs I had completed thus far and made sure the smaller rooms did not have the front and back walls. At the same time, I finished implementing the assets and the lighting into the Zoo level and sent them into "To Verify". 

The next cards I focused on were the cards for the Military level. The first card I focused on was "As a level designer, I need to implement the military base assets into my level to match the tone and theme" which is the asset implementation card for this level. Since I've done this two times already, the process went a bit faster. I also swap the roles of the shutters and the fence from the Zoo level to the military level. The fence which was the "walls" in the Zoo level are now "punchable assets" in the Military level. Then it was the same for the shutters which were "punchable" in the Zoo but now "walls" in the Military. This meant they had to be new prefabs because their roles were swapped. The "walls" wouldn't have a rigid body that allowed them to be punched and flying out from the level. 

An issue I encountered shortly after was that the zoo level still had unpacked prefabs. So I had to go back and replace any and all prefabs that are not properly implemented or using the correct prefab. This was to be a meticulous and attentive task so this issue would not arise again in the future. I really hope all prefabs are properly and correctly added so I would not have to go back and delete and re-add the assets. 

Military level made into prefabs and added to script

Next, I worked on the lighting which went as smoothly as the Zoo level's, which is to say, they were troubling. The Lab level's lighting was easily done as it was interior lighting. But for the Zoo level and military level, their lighting was to be imitating outdoor light, which is different and more difficult. We decided that lighting would vary between levels, so we would not be able to use a directional light without creating a script that would turn on and off groups of directional lights whenever the player reaches a new level. Our programmer is already busy with other features, so it was decided to look for a way to create individual lighting. This led to the lighting being uneven within each room itself because each level had a handful of spotlights and point lights to try and light up the room(s). The line between grounds/floors would be apparent and it was sometimes obvious to see a spotlight or point light. When this issue was brought up to the team, our programmer mentioned that we should try to bake light into levels. However, with an electronic prototype coming up, this was to be a card left for the next sprint. 

Lab Lighting (Interior lighting easier done)

Zoo Lighting (Trying to imitate bright daytime, exterior lighting)

Military Lighting (Trying to imitate evening, sunset exterior lighting)

As the level designer cards for the sprint are complete, I moved on to help with audio. I was assigned cards that asked for a siren/alarm sound effect, a menu shuffle SFX, and background ambiance for the Zoo level. Luckily I worked on audio back in Parasitic so I didn't have any troubles with audio. I looked on freesound.org for audio as all audio was allowed to be used and edited for free. It's a great site. I then moved the audio files into Audacity for clean up and looping. My process is first cleaning audio or any background sounds and trimming parts that I don't need. If they need to be looped, I would find a few seconds of the end at a zero position and fade it out. I would then move the end to the beginning and fade in the seconds of the beginning in alignment with the end clip that was moved. This makes a rather seamless loop. 

Example of seamless loop

I also combined audio together to get a certain ambiance. For example, the Zoo level's ambiance is windy with bird noises. I found a decent length of windy audio and looped it. Then I looked for an isolated bird sound audio that was lengthy and looped it as well. I combined the two audio together to get a windy background ambiance with occasional bird calls. 

Wind audio combined with isolated bird sounds

I looked for three different clips for the three different audio cards I did. The menu sound effect cards had 4 different audio clips because I wasn't sure which would fit the game. The only problem I had with this card would just be Trello's max file size. To combat this, I imported the assets to the Google Drive and linked them in the cards before sending them to "To Verify". 

This would be the end of the work I did for Sprint 5. The next sprint would be focused on fleshing out our last level, the Forest. After that, I would need to tweak the levels based on feedback and constantly playtest the levels. The last thing would be adding the enemies to the levels when they are fully developed and programmed. Until Sprint 6!

Sunday, April 4, 2021

I'm Free Production Blog 4

I'm Free Sprint 4

The end of Sprint 4 is here. We're just about halfway done with production. For this sprint, I was assigned 5 cards with 2 cards carried over. The cards I was assigned were to reorganize the blockouts to the level templates, the lighting cards for the rest of the levels, and adding assets and building the zoo level.

Our programmer made a levels script that held the prefabs for the rooms that would be randomly generated. These prefabs need to follow a template that had start points and endpoints in each room with the start points at the (0,0,0). To be able to test the random generated, I reorganize the blockouts into prefab variants of the room templates with the spawn points and moved the room and endpoints to the (0,0,0) point and the end of the room. Then I added them to the prefab folder and the levels script. 

Block outs all at (0,0,0), added to prefabs folder, and levels script (right side)

During spring break, I worked on the easier and less time-consuming cards. Those would be the particle effect cards that were carried over from the previous sprints. I first worked on the electric sparks card because I have done a similar particle effect for a previous class. All I needed to do is export it from the past project and import it over to the current game. I played around with the settings and made it fit the particle effect we needed for our game. I changed the shape from where the effects flew out from linear to a more circular motion and increase the speed of it so it looked more comical that would the theme of our game. They also have collision detection so the sparks will bounce on and off of surfaces and objects.

Electric Sparks

The blood effect took a bit more time and effort but luckily the motion is similar to the sparks. I did encounter a problem with the particle system in that the color over time did not work. The blood effect is supposed to go from red to a dark maroon over the course of its lifetime. However, the colors do not change. I changed the shaders and tried using different alphas/templates but it still doesn't work. My teammates also had a similar problem with their particle effects in that the shaders turned transparent if they did not use a certain shader. My problem was that using different shaders made the particle completely black or transparent but the color over time still did not work. It's not an impactful problem and the effect still looks good without the color change so it's not too much of a problem. It is still unfortunate that little detail isn't shown. 

Blood splatter

After the break and finishing the particle effects, I worked on building the zoo level. I added the zoo and military assets to the asset folder and started building the rooms with the level templates via prefab variants. It's a tedious task to make sure each room looked unique with the limited models we have. I also had trouble keeping in mind the blank spaces for enemy placement and not having the zoo level look cramped as it's the most open and brightest level. I also needed to go back and forth from the scene view and game view because I'm adding assets with a perspective camera view while the game is played in an orthographic camera view. We also decided to remove the door and sidewalls of the smaller rooms based off of the feedback we received from our electronic playtest. 

Zoo Level

After the building of the level and rooms are done, I added them to the prefab folder and the script. The next card and the one I'm currently working on is adding lighting. Since lighting is different for each level, we might need to have individual lighting for each room. But this is really difficult to do since spotlights and area lights do not light up the room as efficiently as directional light. The lights also need to be specifically placed and the radius of the light might affect adjoining rooms. I'm still trying to figure out how to do the lighting. This would be the biggest thing to focus on at the beginning of Sprint 5 since the cards carried over from Sprint 4 are the lighting cards. After I will be building the military level and working on sound. Until then, I'll do my best. 

Zoo 1

Zoo 2

Zoo 3

Zoo 4

Friday, March 12, 2021

I'm Free Production Blog 3

 I'm Free Sprint 3

Sprint 3 just finished and we're a third-way done with production and just built our first electronic prototype. For this sprint, I was assigned 7 cards with 1 card carried over from the previous sprint with a total of 10 points. I completed 5 of those cards, marking my total points completed as 8 points. 

The cards I was assigned were adding lighting to the level, doing annotated maps for my blockouts, and when I completed those cards I was also assigned a few particle-effect cards for me to work on as I waited for the assets for the upcoming levels to be done. 

Since our electronic prototype is coming up, I planned to finish the card that was carried over from the previous sprints about adding assets and actually fleshing out our levels, "As a player, I want to feel like I'm in the middle of a science lab with a bunch of equipment and breakable objects for me to smash and rampage through." Adding the assets was, needless to say, pretty busy work. The assets were wonderfully made and easily pieced together. It was just my job to make sure they come together to complete a picture, like solving a jigsaw puzzle. I tried to make each room different and followed most of the layouts I did in the blockouts. Of course, scaling and props did not match the basic geometric shapes I used in the blockouts so there are parts where I took creative-license. I also tried to avoid art fatigue as well where players will feel tired of looking at a level due to the repetition of props and layout. 

Lab Level Done

When I was partly done with adding assets, we encountered a problem. Which was generating the levels and making each room an individual piece, a prefab. I was following my block out so everything was laid out in a long hallway sort of fashion which wouldn't work with the code. Instead we needed a special template to add rooms in so they can be spawned in and snapped together with "spawn points". I went back and incorporated this in every room so they followed the same template with each room starting at (0,0,0) instead of a long hallway. 

Room Template: Two Spawn Points (Room Start and Room End)

I had been working on the lighting card at the same time when I was fleshing out the level with assets. After some feedback, I went back and decreased the brightness a bit and played around with gray colors in my three-point lights, then sent the card to "To Verify". 

Lighting

When that card was done and room prefabs were given to the programmer to work on room spawn, I decided on working on the annotation cards next. I did each annotation in order from Lab, Zoo, Military Base, and Forest. I referenced back and forth to the blockouts in Unity to the annotations I made in draw.io. Of course there were some problems with the scaling since it wasn't perfect or exact to the ones in Unity (not to mention the previous problem with Unity and the scaling issue in there). 

Annotated Maps

Regardless the annotations and the blockouts were pretty similar save for the actual enemy placements show in the annotations. During this I realized the levels might need to be more open to have room for enemies to "fit" in the level. This will be further thought about when the scales of the enemies and how they move is fleshed out by our modeler and programmer. 

With no cards left, I asked for more cards and was assigned to do two particle effects, electric sparks and blood splatters. My work on particle effects is very basic but I'm excited to tackle them. However, I did not really have time to work on them before the sprint ended. The cards I was assigned for Sprint 4 were cards for lighting in each level, adding assets for the Zoo level, and redoing blockouts in the style of the room template. I decided to hold off on the particle effects for now (Art < Mechanics) since our programmer requested that I should go back and tweak the blockouts so they all follow the room template (rooms at (0,0,0) and not a long hallway). This card felt to me like a higher priority since this is needed to test the room spawning mechanic, a core feature in the game. Thus that is the card I'm currently working on as Sprint 4 begins. I hope to be able to finish all my cards in Sprint 4. Until then. 



Sunday, February 28, 2021

I'm Free Production Blog 2

I'm Free Sprint 2


Another sprint completed and a decent amount of work got done! We've mostly finished building the foundations of our game. For this sprint, I was assigned 2 cards with a total of 6 points since they were 3 points each. Since I had 2 cards left over from the first sprint that makes the number of cards I have assigned is 4 total. And by the end of this sprint, I finished three cards. 

The cards I was assigned have to do with blocking out the rest of the other themed levels which are a military hanger and a forest. Once the player survives the lab and the zoo level they'll get to the hanger and lastly the forest level which is supposed to be highly unlikely. 

I first finished the card I was already "in-progress" on since the last sprint which is "As a player, I want to feel like I'm free from the lab I broke out of and now in the open air, however, I'm still fenced in and must keep moving to the right". I originally went for a long forested look with bigger and lengthy-er spaces to emphasize the "free" feeling of breaking out of the cramped lab. I did have trouble making it look like a zoo with just using basic shapes and not knowing what props were going to be made, but once the props and assets for the zoo level are done I can work around that. Regardless, cages and nature-themed assets are going to be central pieces so as long as I have that in mind, the block-out should turn out too different from the actual fleshed-out level. 

 
Zoo/Outdoor Level

Next, I blocked out the military level where "As a player, I want to make it past the zoo and reach the army hangar base that has office buildings, gun lockers, helicopter landing areas, and huge pallets and crates. " This one was pretty fun to block-out, I envisioned that some areas would be partially indoors since the card mentioned office buildings and gun lockers. It should feel more cramped than the zoo and forest levels but not as tightly packed as the lab level. 

Military Level

The last block-out left to do is the forest level, "As a player, I want to make it past the military hangar base and into the forest where I can see trees, vegetation, random animals, swamps, vines and boulders as far as the eye can see". This would be the last theme if the player ever survives past the previous three and will be continuous. After all, our game is an infinite runner. Thus I tried to make this level stretched, there's a lot of long pathways and curving/nonlinear trails. 
 
Forest Level

The card I didn't finish this sprint is "As a player, I want to feel like I'm in the middle of a science lab with a bunch of equipment and breakable objects for me to smash and rampage through." I did want to finish all the required block-outs before tackling this card but also we ran into some trouble with the models so I was blocked from doing this card. But Brandon, our excellent modeling who creates all our amazing assets got them done before the sprint ended so I can finish adding assets for the lab level early in Sprint 3 and before the first electronic build. So far, I've got the first room done and it already took a lot of assets especially with the individual railing and pipe pieces you need to piece together like Legos. I hope the player enjoys break it down and seeing all the pieces fly! 

Lab Starting Room

The only issues I ran into were the messed-up scaling with the block-outs and finding inspiration for the level block-out. The scaling would jump from 10s and 20s to 0.5s and 1s. This might be because of our grouping in the hierarchy and me accidentally scaling both the "empty" objects that are parent to objects in the scene. I would have to delete most of the scene to fix it so I decided not to. I would be using another scene to build the actual levels anyway so this wouldn't affect the game. Finding inspiration for the block-out is just trying to avoid repetition between levels. Of course, in hindsight, I think I was too worried about this because the block-out was just using cubes and cylinders and not actual props so I was thinking too much into it. Regardless this isn't a problem either since each level actually have different themes and layouts. 

Overall, I completed 3 cards and 7 points by the end of Sprint 2. There are no large issues that would complicate us as of now. For Sprint 3, I was assigned 5 more cards which have to do with going back and actually annotating my block-outs so I can use the "level design" as portfolio pieces and an outlier card for lighting. Hopefully, I'll finish all of them by the end of Sprint 3 so I'll have Sprint 4 to focus on adding assets to the other levels. Until then. 

Block Outs Done!





Tuesday, January 26, 2021

I'm Free Production Blog 1

I'm Free Sprint 1


My game project for CAGD 470 is an endless roguelike runner called I'm Free. My role in our team is the level designer. Now that Sprint 1 of I'm Free is finished, it's time to write about the progress of the game's development. For this sprint, I was assigned 4 cards with a total of 6 points. I finished two by the end of the sprint. 

The first card I worked on and completed was "As a level designer, I need to block out a cookie cutter template map that will be used to send the player in multiple scenarios." As the models and mechanics are being worked on, I'll start designing the generated levels by blocking them out in Unity. Our initial decision was to make square levels that could interchangeably connect together if they're all the same dimension, hence "cookie-cutter" levels. But after blocking out some levels and going over how the game plays, I realized that our gameplay was very linear. I talked to our producer about this and we decided to use Ape Out as inspiration in terms of level progression. Instead of just square rooms/levels, there will also be non-linear levels and larger rooms that connect together. Basically, instead of one long hallway, the game will play in a pattern of room-hall-room.

This is where the "As a level designer, I need to block out differently shaped maps that stem from a square base and can connect to one another and send my character through different paths and scenarios." card comes into play. In a sense, I worked on these two cards at the same time, piecing together blocked out room and halls together. 

Square levels / "cookie-cutters"

Non-linear levels

After blocking out about twenty different rooms for the laboratory, we decided that we should add more settings so the game will have an underlying narrative. After the player completes a number of laboratory levels, they will head outside. Thus my next assigned card is "As a player, I want to feel like I'm free from the lab I broke out of and now in the open air, however, I'm still fenced in and must keep moving to the right". The task for this card is to block out a number of outdoor levels. This is also the card that was in-progress up to the start of Sprint 2. By the time, I'm writing this I just finished blocking out the levels for our outdoor levels. I also realized that the scaling of these levels is messed up. Some rooms go by 1s and 10s while other rooms had decimals. I'm not sure where in the process I mixed up the scale but it shouldn't be too big of a problem as these are only block-outs and are not placed in any actual Unity scene that would be used for the game itself. It just is confusing to scale things. Even the player prefab we have was tiny in the level that I had to scale the entire two block-outs (the lab and the outdoor levels) to 0.2 units (depicted below). I also had to rotate the levels 180 so the camera was facing the correct way (depicted below). These are small issues thankfully and we should be able to progress forward without complications due to these problems. 

Outdoor level block out

Close up of the beginning of the outdoor level

The last card I didn't get to was "As a player, I want to feel like I'm in the middle of a science lab with a bunch of equipment and breakable objects for me to smash and rampage through.". This card was for adding the props and assets to the laboratory levels. However, I'm blocked as the models and assets for the laboratory setting are not complete. Our modeler, Brandon, is working hard to get them done and around the end of Sprint 1, he appears to have finished about 16 of the 17 models for the laboratory. I will probably work on this card once all the assets and props are verified by our producer and added to Unity. 

Overall, I completed 2 cards and 4 points by the end of Sprint 1. There are no large issues that would complicate us as of now. For Sprint 2, I was assigned 2 more cards about blocking out other settings such as a military base and a forest level. So currently I have 4 cards assigned and 8 points with one of those cards and points in "to verify". I'll most likely talk about the rest of my block-outs and fleshing out the laboratory level with assets in the next blog. Until then.