Although I haven't been to class much last week due to COVID on Monday, a teacher workday on Tuesday, and an AP exam on Thursday, this week in class I've mainly been focusing on finishing the cassette player interface. More specifically, I've been working on programming the dropdown menu so that every time a cassette is picked up, an audio option will appear on the list. Although the actual way of doing so doesn't seem too complicated, I do see a potentially major problem popping up. The way I'm probably going to end up doing it is having a "unique" function for every cassette. The way it works is that when the player clicks on a cassette, they pick it up, and it destroys that game object. What I'm trying to do is add onto that event when the player clicks on a cassette, and what I want to happen is that Unity will essentially clear the current dropdown menu options, and depending on which function is called, will add a certain number of options to the list. I know that having multiple functions all doing essentially the same thing is egregiously inefficient programming, but since the game is due Wednesday, I really don't care how messy the code is as long as it does its job 85% right. However, the problem with doing this is that there isn't a way I can think of to account for when the player picks up cassettes out of their intended order. For example, the player may accidentally miss cassette #2 and skip straight to #3. If the player does this, then by picking up cassette #3 they would add the options for both cassettes 2 and 3 to the dropdown menu without ever having picked up cassette #2. Despite that, I'm rather unconcerned about the problems it may raise as of right now since it's not the end of the world if the player picks up cassettes out of order and gets more audio options than intended. Right now the most important thing is finishing this damn level design. Here's my blueprint for this upcoming (half) week:
0 Comments
Last week I was fortunate enough to be able to get back to working on our team game and start getting things more organized. That week I was able to create a very important 3D model for usage alongside the Lurker monster, as the entire way it works is based around player proximity to vents in the walls, floors, and potentially ceilings. Simply put, if the player gets too close to a vent with a Lurker inside of it, they can say goodbye to approximately three quarters of their vital organs. Additionally, I was able to merge the cassette player interface scene with the cassette pickup scene, and I also made it so that the player interface was toggleable via pressing a certain key as well as fixing a problem I had where only one cassette on the ground would be destroyed when the player clicked on it However, I did not anticipate the AP Physics 1 exam being as hard and exhausting as it turned out to be, as I had to spend both Thursday and Friday outside of the classroom. Unfortunately, at the time of writing this post I do not have any screenshots of my work. Since I got COVID this weekend (most likely from the AP Physics exam), I will be unable to return to the classroom to get screenshots of my work until the next time I return to my desktop at school (which I hope will be tomorrow). Apart from that, here is a blueprint for this upcoming week:
Update (05/18/2022): Today I've returned to the classroom since yesterday turned out to be a teacher work day and we didn't have school that day. Here are some screenshots of the work I completed last week. This week has been rough, to say the least. Since I've had AP exams basically every day this week, I haven't been to class all week, except for today because the school decided to dismiss students early in anticipation of severe weather, which in turn caused the AP Art History exam I was supposed to take this afternoon right after my AP European History exam to be moved to the make-up date later this month. Since I didn't work on the game outside of school this week, I don't have any work able to be presented. However, I do plan for things to get a little more on track next week despite having another AP exam next Thursday. The plan for next week (and this weekend) is as follows:
For the past two weeks, I've mainly been working on things related to the cassette player. First and foremost, with the help of Mr. B I was finally able to simplify the cassette player code from hundreds of lines down to around just thirty! In addition, I finished creating all of the button animations for the cassette player interface. However, I am having an issue where the press animation doesn't always play for some reason, and I honestly think I'm just going to leave it how it is because if they do work at least sometimes then it's not worth investing too much time into. This most recent week, I've been working on a system to pick up cassette tapes on the ground by clicking on them, and when the player does so the tape is added into their inventory. I've made a fair bit of progress on the "picking up" part of it, but I've yet to make it so that when the player picks up a cassette tape it enables another option on the dropdown menu. However, I don't anticipate that taking too long.
Here's a blueprint of the things I'd like to accomplish this week:
This past week, I've mostly been working on programming the cassette interface. Although I kinda forgot to clean up my code this weekend, I don't anticipate that taking too long so I'm confident that I can get that done in one or two class periods. Below are some screenshots of the code I've written so far. As it stands right now, the package file for this Unity scene is quite large (over 400MB), so condensing my code, along with any extra files in the scene that I can get rid of, will be a critical part of finishing this interface if I want to have it included in the final game. Before I tackled this code, I had no idea how to program audio since I never had a need to with my previous coding experiences. But with the help of some very kind people on Unity Forums, I was able to work my way through creating a fully functional cassette player. I feel like so far in the project, once I actually finish this thing, making this cassette player will have been my greatest achievement overall. Once I finish adding in assets to the whitebox level, I feel like the game will look much more complete once the team actually has something to look at that's representative of all the work we've put in up to this point. Here are some items on my checklist for the upcoming week:
These past two weeks, I've started a lot of different things but I've yet to finish a single one of them. I guess in a way that's good since at least I've started some stuff instead of just not having anything done. One of the things I've started is making the finalized version of the cassette player UI, which will look more like an actual cassette player than the one we currently have now. Below is a comparison of the two different images. The first image above is the reference image I am using to create the new interface, and the second image above is the prototype that I'm currently using in Unity. The interface will still be fairly simplistic and two-dimensional, but the difference will be that the interface will look more like an actual cassette player rather than a cassette tape with buttons on it. Now that I've mentioned Unity, I should also mention that I've been hitting a bit of a roadblock with programming the cassette player. Specifically, I'm stuck on programming how changing tapes is going to work. Basically, there's an audio source assigned to the player, and inside of it is an audio clip. What I'm trying to do is make it so that when the player hits the eject button, the clip in the audio source component is removed, and when the player selects a different cassette tape to play, it'll change the audio clip to the recording for the new cassette tape being played. The logic of it is simple, but I simply just don't know how to program something like that. My programming experience hasn't touched with audio until now, so I've been looking into the forums and seeing how I can work my way around this issue.
Apart from that, here are the things I hope to accomplish this week:
A lot of things have changed in the past week, and with that many aspects of our team's workload are being overhauled. First and foremost, I am going to become the new leader of the Mountainheart development team effective immediately, meaning Quinn shall no longer have that role and I shall be assuming all of the team leader's responsibilities in addition to the responsibilities of my technical artist role. I know for a fact that this is going to be a lot for me to handle. This will be a major test of my ability to communicate and manage my time, two things that have for a long while been my two greatest weaknesses. However, I don't think that anyone else on the team is capable of pulling us together to the extent we need apart from myself. Not to downplay my other team members at all, because I believe that they are all very capable individuals. Despite that, based on my observations no one else is willing to step up to the role of team lead besides me. With that being said, my team is counting on me to pull this project together after several weeks of confusion. I don't know how exactly I'm going to pull this off, but if one thing is certain, it's that I'm not going to let them down when they're counting on me. One way or another, I will do this. Aside from the whole team lead thing, I've made progress putting together the cassette player UI in Unity. Below is a screenshot of the current prototype. Although it doesn't look like much, each of the buttons on the cassette player function as actual clickable buttons that turn slightly darker when the mouse is pressed down on them. Now, I need to program some functionality into those buttons that make them actually toggle the audio recording on and off. That task does sound a bit daunting, but with some hard work and a couple of hours of head-scratching, I think I'll be able to finish that up this week.
I would say this week's biggest accomplishment is probably the new transfer of leadership over to me. Although it happened Thursday, it's a relief that it actually happened. The real test of my leadership ability will be this upcoming week when I have to keep all of my team members on track and make sure they know what they're supposed to be working on. Here's a blueprint of the things I would like to accomplish by the end of the week:
This week I finally managed to figure out a way to share the whiteboxed level with my teammates. I would probably consider this breakthrough to be the greatest accomplishment of last week, since it took so long to find and is also a critical part of developing the game as a team. PlasticSCM was an absolute pain to navigate, and the solution I found actually has nothing to do with PlasticSCM. Instead, it involved exporting the Unity project as a package, uploading the package file to Google Drive, and having the other team member(s) download the package onto their computers and open it from there. However, this is only a temporary solution, as it is very inefficient with space. If someone wanted to make a minor update to the level, they would have to re-export the project and upload it to the team drive again. This would become more of a problem the larger the project gets, but since the package file is rather small this solution will work for now. The picture directly above is a screenshot of the whiteboxed level. This screenshot was taken on my desktop at home as proof that exporting/importing the package file works as a sharing method, since the whiteboxed level was made entirely on the school desktop I use.
Because I never received the prototype UI last week, I will be waiting to receive that so I can begin creating a functional interface in Unity this week. In addition, I will be continuing the development of the Lurker AI at home. Right now, I am using a finite state machine to function as the AI. The way that it works is that it's basically a very long chain of "if" statements that constantly check if certain conditions are met, in which case it will initiate a certain behavior. These "if" statements go several levels deep, and the deeper they go the harder it will be to make changes to the AI. However, since the Lurker AI is fairly simple, I'm hopeful that a finite state machine will be sufficient. This past week during Mountainheart's development, I finished designing the whiteboxed version of the first sector of the map the player will spawn in. This level will be shared and used by several other members of the team and will aid them in their own individual tasks, as this level will serve as the blueprint for the final appearance of the game. However, I've been running into some problems with sharing the level with my team. Unity has changed its default project collaboration from Collaborate to PlasticSCM, and I am continually running into errors every time I attempt to update the workspace with changes I made to the project. Although the assets and scene file are technically accessible, they aren't in the most obvious places. It was when I deleted the sample scene and moved the whitebox scene into the scenes folder than I began encountering errors. I've yet to resolve this issue, but I hope to find a workaround so that I'll have time to finish the tasks I have to complete for this upcoming week. Those tasks mainly include implementing a functional UI prototype into Unity, featuring both an interactive inventory and a menu that can be toggled by pressing a certain button. Furthermore, I am to continue the development of the AI behavior script at home. I do not plan to finish the AI script by the end of this week; however, I do plan to finish creating the functional interfaces.
This week, I was responsible for whiteboxing the level design of Mountainheart's first sector. Since the technical artist has combined obligations in artmaking and programming, creating this level design fits into the asset creation part of my team role. So far, I haven't run into any problems, it's just that the process itself is very tedious and time-consuming as it involves moving the vertices individually. Since this was just the first week of development, I wouldn't say there were any major accomplishments or breakthroughs in the game just yet. However, I'm almost certain that this will change in the near future. As for a blueprint of the upcoming week, I plan to simply finish the whiteboxed level and then figure out how to share it and make it accessible to my other teammates. We also plan to start work on the user interface in Unity this week. I don't have an image of the current UI prototype, but even if I did have one I wouldn't include in this blog post since that's just what it is: a prototype. Hopefully we can make some good progress this week, especially with sharing the whiteboxed level so other team members can edit it.
|
AuthorHello, my name is Cameron Kucin. This is my blog area, where I'll share the info I've learned and the experience I've had in the Game Art and Design pathway. Archives
May 2022
Categories
All
|