Visual UpdateIn this video, I show off the new design for the menus along with the updated looks for the Ship. Lastly, I show the Ejection Scene that comes at the end of a completed voting session! The New ArtThe main focus of this update is obviously all of the new art additions that were accomplished over the week. All in all, I was able to accomplish:
Here's a catalog of images for the updated art in case the video happens to move too quickly: I would also like to thank Sella Alcazar for help with getting the Skybox set up, and for giving me tips on the lighting and decoration of the ship! The Ejection SceneI wanted to recreate the ejection scene from Among Us, because I felt it would look pretty funny in the realistic environment of the ship and would sell the voting off of the suspicious crewmates even better. To accomplish this, I used a fairly simple trick: I have a long plane that sits in front of the ship which is hidden in game. Then I teleport the voted off Crewmate to one end of the plane, and I have them walk to the other end while rotating their mesh. Once they go off-screen, I return the Crewmate as a ghost back to their original starting position. Ta-dah, the ejection is complete and looks as humorous as I had hoped it would! The plane that is hidden in-game. Crewmates walk from the left sphere to the right sphere. (The spheres are above the plane, but are a little hard to see due to looking similar to the stars.) What's Next?This upcoming week is the last official week of working on "Among AI". I've accomplished a lot of what I had hoped to over the course of the project, so I'll be wrapping it up with just a few tweaks:
And these will finish off the project for now! Next week, I'll discuss what I'd like to do as bonus if I ever have unofficial time to work on the project in the future. Want to Download the Project?
0 Comments
Voting Time! Who's the Guilty Party?In the video above, Purple and Pink have been killed by Yellow and Red, respectively! However, Purple is first found by Orange who begins leading the Discussion for Purple's killer. The Crewmates then discuss what was the last time Purple was seen alive and who was in the murder room closest to the time of Purple's death. Orange obviously says that Yellow was seen leaving the room pretty close to the incident time, but Red also states they saw Green leaving the area around that time as well. In the end, even though it's a close voting session, Yellow is voted off as shown at the end with them having been turned into a ghost. Congrats to the team figuring out the Killer in this instance! Voting Screen UIMy main focus of the voting screen was to make the screen look similar to how it does in the original Among Us game. The voting screen UI consists of 10 panels, each holding a Crewmate's name and their portrait. These panels also hold lists that can be filled up with images of those who vote against said Crewmate on the panel. There is a "No Vote" option at the bottom left where Crewmates can decide to vote for nobody like in a real game of Among Us. Lastly, there's a button at the bottom right where I'm happing to have open UI which details each Suspect's "Suspicion" value. This button could also be used to display a menu with more information if I update the AI like info on why each Crewmate votes against each other. This picture's quite funny to me because the Killers both voted for an innocent while the rest of the crew correctly votes for Yellow. Calculating Suspicion and VotesI wanted to make it so that there wasn't only one "biggest suspect" that would get voted for during each voting scene since, in a real game of Among Us, there is indecisiveness and spread out votes amongst the multiple suspects to each murder. To accomplish this, I've created a system for calculating a "Suspicion" value (A float ranging from 0 to 1) to go with each suspect, and team members vote based on those values from their pool of suspects. To begin with, there is a timeframe before and after the last time the Victim was scene alive. Suspects who entered or exited the murder room can only be put forth if they did so from that time frame. Currently, said time frame is set to 15 seconds, so suspects who entered/exited the murder room between 15 seconds before and after are the only ones put forth in discussion. Next, the code calculates each suspect's initial "Suspicion" value as the time delta between the time they passed through the murder room and the last time the victim was seen alive. The value for the "No Vote" bar is calculated as: 1 - the Maximum Suspicion value calculated that round, and then it is added as a suspect to the list (if voted for, it counts as a Crewmate not voting for anyone). The suspicion values are then normalized to give each suspect a 0% - 100% chance of being voted for by each Crewmate. After that, each Crewmate votes at random with those "Suspicion" percentages influencing who they vote against. Smarter Discussions and VotingInitially, the AI for Discussions weren't the smartest. I made a couple of tweaks to the criteria of discussions and votes to make the Crewmates a bit smarter in what they say and who they vote for:
What's Next?Since the voting off of Crewmates now fully works in the fact that each Crewmate can vote, Crewmates die when voted off, and Victories can be achieved by either side based on who gets voted off, I am officially a week ahead of schedule! Week 9 was originally planned to be focused around the Voting Scene, but now I'm planning of finally giving the game the visual update it's been needing (and I won't stop talking about)! My plans for next week are as follows:
Bonus: Even though this next week will be majorly focused on the looks of the game, I will also be spending some time making the AI smarter so that we can get more interesting thought processes from each other Crewmates in Discussions and Voting. I will likely be continuing with this over the course of the last 2 weeks of the project. Want to Download the Project?
All About DialogueIn the video above, Red kills Brown. Brown's body is eventually found, sparking a discussion amongst the survivors who the killer may be! Dead Body DiscoveryTo start off, I had to make it so that crewmates were capable of starting a discussion scene whenever they spotted a dead body. However, they had to first approach the dead body, because there is a range limit in which a player can report a body in Among Us. To do this, I set it up so that dead bodies will stop the Innocent's Behavior Tree and turn a "Body in Sight" bool to true (indicating the crewmate sees a dead body). Once this is complete, the Behavior tree is restarted and follows this behavior: This branch consists of what an Innocent should do upon seeing a dead body. If there is one visible, the crewmate will get the body's location, move to it, and then indicate to the AIDeductionGameMode that a discussion/voting scene should be started. The AIDeductionGameMode will then record who found the body, the information of the body's location and owner, and then the Game Mode will proceed to set all Crewmates around the discussion table while also deactivating their trees. Lastly, the Game Mode will clean up and remove all dead bodies currently on the ship. This is all done in this manner to set up the discussion scene to have everything it needs to be performed and so as to match what occurs in the game Among Us when a body is found. The Discussion SceneThe discussion scene consists of UI that display what the Crewmates "Know" about the victim and the room the murder took place in. The actual discussion is managed by a loop. In order the events as of currently are:
An image of the blueprint for the discussion loop. Based on the question given, the crewmates have a different set of memories they search through and the response they give. This image shows Purple, the lead of this discussion, asking the question of when everyone last saw Pink alive and each Crewmate saying when and where they last saw Pink. Crewmate Portraits The last part I'd like to discuss for this project is that each Crewmate now has a portrait! This is helpful for quickly recognizing which Crewmate is being observed on the Knowledge Bar and who is talking in discussions! The image being shown is bound to the name of the Crewmate being observed/the Crewmate who is "speaking". What's Next?The Discussion Scene isn't quite finished. To wrap up the implementation for now, I will be working on:
As always, a nice bonus (if I can find time to do so):
Want to Download the Project?
Memory System and BugfixesIn the video above, I show the new sliders, the better pause button, the new Knowledge bar controls, and the new memory system. Memory SystemThe memory addition is the newest major feature to be added to the game. The general concept of it is that, every couple of seconds, each Crewmate will have a chance two forget two random pieces of memory. Forgotten memories have their text set to a red color and will not be usable in the soon-to-be-added voting discussions. Crewmates can have, at the very least, 8 memories that aren't forgotten. This prevents the system from leaving the Crewmates with no usable memories in discussions. Also, main menu has had the "Forget Memory Chance" slider added to it as well to allow the user to specify what percent chance the Crewmate will lose 2 memories every 2 seconds. If I have bonus time, I'd like to be able to update the sliders page to allow the spectator to specify the memory loss chance, the number of memories lost, and the delay between memory loss checks. Bugfixes/PolishAs was mentioned in the last update, I had three areas of concern when it came to bugs and polish. Here are the three issues I tackled and the solutions I came up with to solve them:
Green is able to see past all of the Crewmates standing in front of him so he is now able to register Blue, Turquoise, Red, and Gray even though Blue is directly in front of his line of sight.
Crewmate Dead BodiesI was also able to implement a dead body drop for whenever Innocents are killed. The gravestones act at the representation of a Crewmate's dead body in the simulation. Currently, these dead bodies hold the last Crewmate Information state that the Innocent had, which is how the dead bodies record who was killed and what room they were killed in. Crewmates are currently able to see these dead bodies on the ground and are able to send up a print message stating whose dead body they found. This function will be updated to begin the Voting Discussions scene in the next update. What's Next?Next week marks the second half of the Crewmate's reasoning and understanding: learning through Dialogue. To accomplish this next part of the system, I will be working on:
Want to Download the Project?
|
Coleman LevyWelcome to my blog! Archives
August 2021
Project |