Monday, August 24, 2020

SciFi Hallway

CAGD373 Scifi Hallway


For this assignment, we needed to model, texture, and set up a scene in Unity of a modular SciFi hallway. Some of the requirements included needing to model certain types of modules in Maya, making emissive textures in Substance Painter, and creating particle effects in Unity. 

Problems Encountered

Unfortunately, I encountered several problems during this assignment. Reasons why range from "shaking off the rust from not using these programs in a while" and "busy with work from other classes" to "the newer versions of the program throwing me off guard" and "I'm just dumb". 

Ngons and translating to Substance Painter

Problem: One of the earliest problems I had was ngons in my model. Somehow I had forgotten to check for them before exporting my FBX and going into Substance Painter. This made texturing a bit difficult because they didn't import or bake properly. I also have forgotten how to separate baking IDs from normals and just the plain lowpoly export. This resulted in me having 10+ maps in Substance Painter when we were only supposed to have 2. 

Solution: As a result, I went back to Maya and cleaned up my models as well as re-UVing most of the assets. I also duplicated the modular pieces several times to separate the high poly, low poly, and ID exports. 



Materials not translating well to Unity

Problem: Another problem I had was some of my materials and textures didn't translate well into Unity. At first, I found that the problem was my metallic was not turn up; then it was not labeling my normal maps; my window had transparency but making the material transparent caused everything else to have transparency too, and finally, the emissive were transparent for some reason. 

Solution: Most of these problems I fixed by messing with the material in the inspector or changing the png/map's import settings. The window one I fixed by creating a third transparency material specifically for one element on my window objects. But some problems still lingered. For example, the emissive maps were fully transparent but I changed the color to white and the emissive gained more of its texture and color but it still had some transparency. 



Unity HDRP being different

Problem: This is more of a "me learning the new version" problem in that this version of Unity's HDRP is different from what I was used to. They use visual graphs now and making particle systems was completely different. Unfortunately, I didn't have time to learn the new VFX graph for shaders and materials. I thought I could outsmart the system by making my particles in a normal Unity project and exporting them to the HDRP but to my dismay, the materials and renders had errors and turned up to be pink squares. Also, the HDRP does not support the usual post-processing packages so I had to learn to use the new built-in post-processing. 

Solution: The solution I had for the particle system was to resort to using default particles and rolling it with. I didn't know how to properly add pngs and textures to the new particle/unlit material because it lacked the input for it and you had to add maps now instead. As for the post-processing, it seems like Unity made it easier to navigate and use, so I was pretty happy that I could easily learn it and adapt to it. I'm happy with how the HDRI turned out too despite it being a bit more brighter than expected. 




I'm still learning the new versions of each program and still brushing off the rust on handling the standard mechanics and technicals of it all. I can't say I'm 100% satisfied with how things turn out especially when I had to go back and redo most of the things and recreate Maya MA, SPP, and Unity project files. But I think that everything turned out better than I expected. I hope to do even better next time and be 200% proud of my work. Cheers.


377 Mobile Development - Blog Post 1

Team Titan Sprint 1 - 4

Our development in the mobile game Titanic Arena has now reached near the end of Sprint 3. Titanic Arena is an action strategy game that requires the player to moving their characters around to auto-attack but they also have to avoid getting hit by enemies in an obstacle-filled arena. The player faces off waves of enemies and a Titan boss at the end of each wave. 

Team Titans is a small team composed of the lead producer, the main programmer, and our level designer. We used the skills and experience we gained in 370 Video Game Development to work around a Trello Board, collaborate in Unity's Collab, and follow the Agile Development process throughout our development pipeline. However, since this is a mobile game there are some differences from our time in 370. The major change being building for mobile, specifically an Android APK. This meant we had to research how to program and implement touch-input/mobile controls. We would also need to playtest this on a mobile phone which takes a few more steps than just pressing play in Unity itself. This results in a rather rough start into development but after a couple of sprints, especially Sprint 3 we have found our bearings and will be more effective moving forward. 

Cards assigned to me

A Closer Look at Each Sprint: 

Sprint 1

Cards Assigned to Me: 4 
  1. As a Player, I would like to have assets available to play the game's paper prototype
  2. As a Developer, I'd like to get a head start on what we'll need for Sprint 2
  3. As a Team, we would like a collaborative space (on Unity) where we can work on the electronic build together
  4. As a Player, I would like a rule sheet to know how to initiate and play the game
Completed Cards: 4

Sprint 1 was all about developing our physical prototype to prove our concept and feature. For this sprint, my main tasks were to help develop the rule sheet, compile the physical prototype together, and build our backlog. We also started our Unity Collab for this sprint to make sure we'll get a head start on the next sprint. 

Sprint 1 Completed Cards

Sprint 2

Cards Assigned to Me: 4 
  1. As a Player, I would like to battle against waves of enemies 
  2. As a Player, I would like the main menu shown at the start of the game and to go back to from time to time
  3. As a developer, I want the player to be able to battle against a variety of enemies 
  4. As a team, we should research how to implement the APK and mobile features into our game
Completed Cards: 2
  1. As a Player, I would like to battle against waves of enemies 
  2. As a Player, I would like the main menu shown at the start of the game and to go back to from time to time
Incompleted Cards: 2
  1. As a developer, I want the player to be able to battle against a variety of enemies 
  2. As a team, we should research how to implement the APK and mobile features into our game
In Sprint 2, we started adding the basic essential features in our Unity project. My tasks overall are to help make things other than the level and work on certain scripts that use the main scripts that Adam worked on. Specifically, I worked on a wave spawner script and game object and the main menu that shows up at the start of the game and leads the player to the level. I also worked with Adam to create various types of enemies that would show up in the waves and as a team, we needed to research building an APK and mobile controls. These two tasks however were not finished in this sprint. 

Sprint 2 Completed Cards

Sprint 3

Cards Assigned to Me: 8
  1. As a team, we should have an APK electronic prototype ready before the playtest
  2. As a team, we need to playtest our game before the APK playtest to make sure our game works as intended
  3. As a designer, I need a button in the main menu that leads the player to the game
  4. As a Player, I would like to be able to dodge attacks
  5. As a designer, I need to test whether the base controls work on mobile
  6. As a player, I want a pause menu that can freeze the game and/or move me to the main menu
  7. As a player, I need options in the pause menu that can move me to the main menu, restart the level, and quit the game.
  8. As a player, I would like basic upgrades that increase my health and speed
Completed Cards: 7
  1. As a developer, I want the player to be able to battle against a variety of enemies (Sprint 2)
  2. As a team, we should research how to implement the APK and mobile features into our game (Sprint 2)
  3. As a team, we should have an APK electronic prototype ready before the playtest
  4. As a team, we need to playtest our game before the APK playtest to make sure our game works as intended
  5. As a designer, I need a button in the main menu that leads the player to the game
  6. As a Player, I would like to be able to dodge attacks
  7. As a designer, I need to test whether the base controls work on mobile
  8. As a player, I want a pause menu that can freeze the game and/or move me to the main menu
  9. As a player, I need options in the pause menu that can move me to the main menu, restart the level, and quit the game.
The recent sprint we finished is our third one. The main goal for this sprint was to have a working electronic APK build ready for the first electronic playtest. We completed all our lingering cards from Sprint 2 within the first week and met our goal of having a working APK ready just in time for the playtest. My main tasks for this sprint was largely playtesting and revising scripts as well as finishing cards from the previous sprint. 

Sprint 3 Completed Cards

Sprint 4

Cards Assigned to Me: 8
  1. As a Player, I would like to earn gold for weapons and upgrades for each kill
  2. As a team, we want the APK to be ready by the playtest
  3. As a player, I want the controls and games to work seamlessly on mobile and emulator
  4. As a player, I would like the controls to be bigger on-screen so I can use them
  5. As a Player, I would like to have a shop to spend gold on weapons and upgrades.
  6. As a designer, I need a menu that leads the player to the shop
  7. As a designer, I need a button from the shop that the player can tap on that leads them back to the main menu
  8. As a player, I want the game modes to be improved and balanced based on feedback
Card in progress: 1
  1. As a player, I would like basic upgrades that increase my health and speed
The current sprint we are on is our fourth one. For this sprint, I will be working on the shop/upgrade feature as well as improving the game based on the feedback we received from the previous playtest. 

Total Card Count (as of now):

Cards Assigned to Me: 24
Completed Cards: 15
Cards in Progress: 9

Issues/Problems Encountered 

Problem #1: No Android phone to use for testing 
One of the issues we had to deal with at the end of Sprint 2 and at the beginning of Sprint 3 was the lack of an Android device to test on. The only group member that has an Android phone is our level designer, Austin. However, his phone model was older and the lack of a USB cable meant that he couldn't use his phone to test the mobile controls. 

Solution #1: Using iOS instead
The solution I came up with for this problem is to export the Unity project and move it to a new blank project with iOS build settings. This way I could use my iPhone to test the mobile controls. The mobile touch controls worked the same way for both phones and Unity made it easy for UI elements since buttons automatically recognize touch-inputs. 


Problem #2: Building and Testing APK 
Another issue that was quite damning was building and testing an APK. This is a new thing for all of us and we had a lot of different research on how to properly build an APK. However, the bigger problem was testing the APK build. I could test mobile controls on an iPhone but testing whether or not an APK works is a whole different story. This resulted in a need for an emulator. The first one I tried was the Andyroid emulator. However, nothing worked when I dragged the APK to the emulator and the emulator itself was a clone of the usual Android phone thus there weren't any clear options to add an APK into the program.

Solution #2: Android Studios and Bluestacks 
The next step was to try out Android's debugging and testing tools for APKs in their Android Studio program. This was a very complicated program to use. It takes up a lot of data storage as well which resulted in me needing to redownload the program on another computer because the current one I'm using already had large programs like Unity, Maya, Substance Painter, and Substance Designer. Android's virtual device emulator takes a lengthy amount of time to load and it lags a lot. It takes several tries and restarts of the program to actually install the APK. Later, I tried the Bluestacks emulator and found it to be really effective in testing APKs. Unlike Andy, Bluestacks shows the APK being downloaded and actually installs the APK file when you drag it to the emulator. 

Using Android Studios to test HelloWorld APK