Christmas + New Build + Progress Report

Progress Report

For a very long time, I’ve wanted to implement a new inventory system. This is one of the things that I worked on over the past few weeks. However, while working on it, I was plagued with self-doubt. I constantly asked myself questions like, “What if nobody likes this feature?” “What if I’m working on a feature that nobody wants?” “What if everyone wants me to change it back?” “What if this breaks the game’s design?” “What if this turns out to be a giant waste of time?”

In the end, I decided that the new inventory system was a bad idea. It would change the flow of gameplay drastically, require significant alterations to the game’s design, and would probably be perceived as a hindrance rather than an improvement. Because I had sunk multiple days into it, I didn’t want to stop; stopping would mean that my time had been a waste. But, continuing to spend more time on it would be an even BIGGER waste, so I stopped working on the new inventory system.

I decided to work on one of the pre-Osana checklist items, instead. I chose to work on the Saving/Loading system. When I first started developing Yandere Simulator, I imagined the most simple saving/loading system possible: when you’re in your room, you can save. That’s it. I wasn’t planning on letting the player save in the middle of school gameplay. However, over the past few years, I’ve come to reconsider that plan. I’ll explain why:

Yandere Sim’s game design is heavily influenced by the Hitman series. During a Hitman mission, the player is frequently put into situations where a single mistake could jeopardize the entire mission. When I play a Hitman game, I am constantly saving the game before taking risks, and reloading my saves whenever something unfortunate happens. Being able to save and load at any point in time is crucial to my enjoyment of the game; if I wasn’t able to save and load at any arbitrary time, I would probably be far less interested in playing Hitman.

Anyway – because Yandere Simulator’s game design is closely related to Hitman’s game design, I decided that it’s absolutely mandatory for Yandere Sim to have an “anywhere, anytime” save system, exactly like Hitman. Anything less would probably result in a lot of frustration for the player, whenever you screw up and want to turn back time. And so, I decided to make it my mission this month.

Although I have over 6 years of programming experience, I’ve never actually worked on a project that required a save/load system before, so this was entirely new territory for me. You might think that, “Take a snapshot of the current state of the game, and let me return here anytime I want,” sounds like a basic necessity for a video game, right? Well, unfortunately, it’s easier said than done.

If you’ve ever used an emulator, you’re probably familiar with the concept of save states. When you create a save state, you’re dumping everything in the emulator’s memory. Old video game systems only had a few megabytes of memory space, so most save states are really small in size. However, most modern-day games are using several gigabytes of memory at any given time – at least, Yandere Simulator certainly is – so “dump everything that is currently in the computer’s memory” isn’t feasible. You don’t want your Yandere Sim save files to be 4 GB each, do you? Yeah, me neither.

I checked the Unity Asset Store to see if there were any pre-made save/load systems that I could simply purchase and drop into the game. However, there are absolutely NO plugins which take a snapshot of the current scene and allow you to return to it anytime you want. I spoke to multiple Unity developers about this, and they all told me the same thing; the type of functionality I’m asking for is impossible. You simply can’t build a “save everything about the game in its current state” plugin that will work universally for all Unity games.

I spent multiple days researching and investigating how other Unity developers were handling their saving/loading operations, and I gained a lot of knowledge about the topic. I don’t think you want to hear me ramble about reflection, serialization, singleton patterns, et cetera, so I’ll give you a brief summary: There is no easy way to create a “snapshot” of the current gameplay state at any given point in time. In order to achieve an “anywhere, anytime” save system like Hitman, I’ll need to explicitly tell the game absolutely everything it needs to remember when the players wants to save their game, and I’ll also need to provide the game with thorough instructions for precisely how to “re-create” the state that the game was in when the player saved.

Yandere Simulator’s school scene contains hundreds of objects that can be in numerous different states; a door can be open, closed, locked, etc – and there are dozens of doors in the school. Yandere Sim’s characters can be in numerous states, as well; dead, alive, fleeing, fighting, investigating…there are so many different states that if I wrote them out here, this blog post would be twice as long!

In short: There are hundreds – actually, thousands – of different things that the game needs to remember in order to perfectly re-create the school as it was when the player saved the game. And, in order to implement a save/load system, I’ll have to manually tell the game each thing that it needs to remember!

Not only that, but every time I add a new feature to the game, I’ll have to update the save/load system to be aware of the latest feature I’ve added, and implement protocol for how the game should re-create every state that the feature can be in. Because of this, it would probably be wise to implement a save/load system last; otherwise, I’ll constantly be updating the save/load system every time I add a new feature or tweak an aspect of the game.

So, let’s recap: I spent multiple days developing an inventory system, only to realize that it was a bad idea. Then I spent multiple days researching different methods of saving/loading the game, only to realize that I should postpone it until the game is further in development. Even though I’ve been hard at work since my last blog post, I don’t have a huge new feature worthy of a video. I feel as though I’ve made important progress, but at the same time, I feel like I’m returning to you empty-handed. There is good news, though…

The more I researched saving and loading, the more intimidated I felt. I began to worry that I was committing to something I wouldn’t be able to accomplish. Could I really build a save system like that? Would my skills be adequate? Would I only waste my time if I tried? I needed to prove to myself that it was within my ability to build a save/load system. At the very least, I wanted to confirm that it would be possible to serialize and de-serialize student data; to log everything that students were doing (Are they late for class? Do they hold a grudge with Yandere-chan? Have they witnessed a murder?) and restore them to that state on demand. So, I began working on a save/load system – a simple one – to prove my own ability to myself…

It is now possible to “save” the game – but I’m putting “save” in quotation marks because I’m currently being very selective about which data is being saved. As of now, when you’re loading a save, the game will only remember:

Time of Day
Student Locations
Yandere-chan’s Location
Student Data (Dead? Alive? Late? Alarmed? Holding Grudge? Etc.)
Everything else (item positions, blood stains, unlocked doors, etc) is not being saved at this point in time; I simply wanted to prove to myself that I can build the proper foundation of a save/load system, and I succeeded at my objective.

You can also create “Save Files” at the game’s title screen now:


Your save file displays information such as how many people you’ve killed, the current level of school atmosphere (“Mood”), how many times you’ve alarmed other students (“Alerts”), etc. Maybe Save File #1 will be your pacifist file, and Save File #2 will be your “kill everyone” file? (As you can see, I’ve added a little detail: the more people you kill, the more bloody your save file will get on the title screen!)

The save/load system is extremely incomplete at this point in time; there are no warning boxes when you’re deleting your data, for example. Don’t get attached to any of your current save files, either, since they may be completely incompatible with future versions of the save/load system.

The save/load system is probably very buggy in its current state, since there are doubtlessly some things I forgot to tell the game to remember when re-creating the state of the school scene. You probably shouldn’t bother to report bugs related to saving/loading; at this point in time, it’s more of a “proof-of-concept” than anything else. You can play with it for pure novelty value, but you probably shouldn’t expect the game to run smoothly after reloading a save.

Wow! I really rambled for a long time in this blog post, huh? I guess I wanted to describe what I’ve been doing to reassure you that I’m still dedicating every day to working on the game, even if you don’t see a huge impressive new feature in the latest build. One of my worst fears is that everyone will assume I’ve stopped working on the game because I haven’t updated in X days, or added a new feature in X days. I wish that every two-week period could result in a new feature…but sometimes, it’s necessary to spend time on prototyping and research, instead of developing new content.

Speaking of new builds, I’m releasing a new build today, with numerous bug fixes and minor improvements – as well as the save/load system described above. Here’s a list of everything that changed between the previous build and the current one:

Fixes, Changes, and Additions


  • Began implementing a Saving/Loading system; it’s now possible to access the Save/Load menu options in Yandere-chan’s smartphone menu. Currently, saving/loading will only affect students, Yandere-chan, and the time of day. At this point of time, nothing else (such as weapons, items, doors, etc) will not be affected by saving.
  • Updated the “Characters” page on the official website with profiles for groups of people, in addition to specific individuals. There are now profiles for the Science Club, Bullies, and Student Council. (However, there is no profile text yet; only images.)
  • Added vegetables to the empty gardening plots in the Gardening Club, in preparation for improving the gardening club members’ routines by giving them more actions to perform aside from “watering flowers”.
  • Fixed bug that could cause Yandere-chan to perform strange animations inside of changing booths if she was performing an action like carrying a heavy weight when the player made her change clothing.
  • Fixed bug that caused a character’s handheld objects to disappear from their hands if Yandere-chan spoke to them twice while that character held a grudge against Yandere-chan.
  • Fixed Matchmaking minigame bug that would cause Kokona to say the wrong line of dialogue when telling a suitor to use the “Show Off” command without sufficient stat points.
  • Fixed bug that caused male students to die when Yandere-chan used psychokinesis on them, instead of being lifted up and moved around as intended.
  • Fixed bug that caused characters to hold their smartphones in their hands at inappropriate times, if a specific set of circumstances was met.
  • Updated the appearance of the TV + TV stand in the Gaming clubroom so it’s not a duplicate of the TV + TV stand from Yandere-chan’s home.
  • Fixed bug that would prevent anyone from being able to use the locker room to change clothing if Kokona changed her clothing in there.
  • Fixed bug that caused Yandere-chan to wear two pairs of panties simultaneously if the panty censor was enabled and then disabled.
  • Updated the artwork for the club recruitment posters near the school’s entrance. The new artwork was illustrated by Neronda!
  • Further improved the lifting-heavy-weight animation. (It’s not perfectly seamless, but it’s a lot less weird and janky now.)
  • Fixed bug that could cause Miyuki AR minigame models to appear when the player was editing a character’s face in Pose Mode.
  • Fixed bug that prevented the player from being able to talk to any students if a member of the Light Music Club was dead.
  • Fixed bug that prevented the loading screen from appearing when selecting “Load Checkpoint” at the Heartbroken screen.
  • Updated the “Characters” page on the official website with a new category – “Groups”. No text yet; only images for now.
  • Fixed bug that caused female students’ heads to disappear when using the yellow sweater school uniform (thanks AMZE)!
  • Yaku (Science Club boy with visor) will now have “sad eyes” on his visor when he has been targeted for bullying.
  • Fixed bug that made leaves clip into the woodchipper in the Gardening Club when opening the woodchipper’s lid.
  • Fixed bug that caused photographs to flicker or disappear when placed on Yandere-chan’s corkboard at home.
  • Fixed bug that prevented some characters’ hair models from turning to stone when Medusa Mode was active.
  • It is now possible to use the lockpick to open the safe or the display case in the Headmaster’s office.
  • Fixed bug that prevented the Music Club’s stockings from appearing as options in the Pose Mode menu.
  • Fixed bugs that prevented male students from being dismembered when attacked in Cyborg Mode.
  • Gita will no longer give her Task if the Light Music Club is closed, or if Miyuji is dead.
  • Changed the game’s post-processing bloom effect so that it’s not so harsh on the eyes.
  • Students will now refuse to follow Yandere-chan into the delinquent/incinerator area.
  • If the delinquents get expelled, School Atmosphere will now receive a small boost.
  • Changed the color of Fureddo’s ascot to distinguish him from his namesake.
  • Changed the appearance of the tranquilizer bottle in the infirmary.
  • Fixed discoloration problem with Homu Kurusu’s eye texture.
  • Changed all instances of “Yandere-chan” to “Ayano”.
  • Added three new hairstyles for Yandere-chan.
  • Added many new props to the Drama Club.
  • Updated Fureddo Jonezu’s hair model.


Komentar

Postingan populer dari blog ini

February 15th Update

10 Fun Things to Do in Yandere Simulator

Manipulating Students in Yandere Simulator