Merry Christmas! Let’s celebrate with a yandere Christmas carol!
Speaking of Christmas carols, Sakura Media re-created “It’s Beginning To Look A Lot Like Murder” in 3D! I think she did an absolutely amazing job, so check it out!
And if you’re looking for something comical, check out this Christmas Special by Victoria Walton:
In addition to Christmas cheer, I also have a new build and a progress report! Click “Continue Reading” to see the details!
Progress Report
First, I’d like to describe what I’ve been working on for the past few weeks.
In my last progress report video, I put this image onscreen, and said that the items on that checklist would be my next priorities. However, I completely forgot about some other things that I also really wanted to implement; for example, End-of-Day Visuals and greater face variety. Actually, there are a dozen little things I want to fix about Yandere Simulator; everything from background details (the sky didn’t have a sun until a couple of weeks ago) to important new features (like making students go to the nurse when sick).
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.
On a side note, being able to save and reload allows me to experiment in all sorts of ways, and experience every outcome of every scripted event. Eventually, through repetition, I can develop complete knowledge of a mission and every NPC in it, and become a flawless master assassin. There’s an excellent video about this exact topic that you can check out, if you feel like it:
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…
…and I’m pleased to say that I was able to achieve my goals!
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:
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
What’s next?
I worry that the YouTube audience will think I’ve stopped working on the game if I don’t release a progress video, so I intend to release a new video on January 1st. In that video, I’ll largely just be repeating everything I said in this video, but I’ll also have some questions for the fanbase, as well.
Thank you for following the development of Yandere Simulator!
This tutorial shows how to enable the Linux development environment on ChromeOS, install Wine (a Windows compatibility layer), and run…
This guide explains the most common modern workflow for modding Yandere Simulator: install PoseMod first, then add mods that are…
This setup works best when Yandere Simulator and PoseMod live in the same dedicated folder. Using the ZIP version of…
Customize your Yandere Simulator experience with this extensive collection of skins and textures. From playing as rivals to fun themed…
Beyond the standard rival and skin mods, the Yandere Simulator community has created some truly unique and "miscellaneous" experiences. From…
Rival Mods are among the most sought-after modifications for Yandere Simulator, allowing players to implement the 10 official rivals before…