Cultcow EvaXephon / Yanderedev / Alex Mahan / Alexander Stuart Mahan / cannotgoogleme - Edgy weeaboo coomer with pedo tendencies and 15+ years internet history as a lolcow, now known as a disaster developer behind eternal debug build called "Yandere Simulator", confirmed groomer and dollfucker

The end of EvaXephon?


  • Total voters
    2,411
New long ass post by Alex on r/yandere_simulator.
Archive
Didn't Alex get other apologies before? It's so bizarre we live in a world where people prefer to just bend the knee to him than, I don't know, not do it. I mean, for fuck's sake, this is YandereDev we're talking about.

The guy must feel powerful or something considering he can bring down YanSim clones or try, cause people to apologize to him, get praise thanks to suicide-bait and even get any youtube channel down via copyright claims.
After all the shit he's done, he has some way with karma... I guess he does earn his haters most of the time.
 
Faaa.png

Which beg the question why it hasn't been done already, he had 2 whole years and this was easier than implement a single rival.
Maybe he was saving it to use as an excuses to delay his game?
 
Regardless: 1) It would defy all logic if YS had cache friendly data structures. That's most likely the biggest issue.
Well, let's have a look! We'll go to the notorious StudentScript.cs.
If we look at the data fields for one student, we have, in order:
Assuming we're running in x86 mode and a pointer is 4 bytes. (Is this true?)
To be generous, I also assumed the compiler would be a smarty-pants and optimize those billions of contiguous boolean flags into a bit vector.

FieldsBytes
3 pointers for rotations
12​
67 pointers for links to scripts and objects
268​
6 pointers for animation things
24​
2 floats for vision
8​
9 pointers for ParticleSystems
36​
7 pointers for textures
28​
2 pointers for renderers
4​
33 pointers for various transforms for object locations
132​
3 array pointers for emitters
12​
1 array pointer for schedule
4​
6 more array pointers of miscellaneous junk
24​
7 array pointers for miscellaneous holdable items
28​
4 more miscellaneous pointers for corpses etc
16​
3 pointers for actions and arrays of actions
12​
10 audio-related pointers
40​
11 pointers for colliders
44​
54 pointers for objects
216​
193 bool flags
25​
63 floats for various parameters
252​
32 ints for phases
128​
2 enums for misc junk
8​
31 ints for counting various things
124​
4 enums for misc junk
16​
137 strings for identifying animations and such
548​
8 array pointers for lists of animations
32​
9 ints for IDs
36​
3 enums for personas/clubs
12​
10 pointers for positions of various things
40​
4 pointers for breasts and eyes
16​
1 int for "Frame"
4​
1 float for "MaxSpeed"
4​
3 array pointers for skirt parameters
12​
2 pointers for targers
8​
1 bool for "Gush"
1​
1 float for "LookSpeed"
4​
1 unused float
4​
1 unused int
4​
1 pointer for Jojo
4​
7 pointers for shower stuff
28​
7 pointers for clothing
28​
2 pointers for Attack on Titan
8​
1 bool for "Spooky"
1​
3 pointers for judo
12​
2 pointers for misc junk
8​
1 int for "CoupleID"
4​
1 float for "ChameleonBonus"
4​
1 bool for "Chameleon"
1​
3 pointers for accessories
12​
And a partridge in a pear tree
GRAND TOTAL
2296
So an entire StudentScript instance (of which there are 100 or so) spans about 36 cache lines, and just about everything you do within one will be on a different line. Those giant lists of objects pretty much make that inevitable - you're only going to be interested in one of them at a time, typically.
Every frame it'll probably flip through about 200KB worth of student structs, although a substantial fraction of these fields are probably not accessed on a given frame.
If we're actually running in x64 with 8-byte pointers, you can roughly double these numbers.

I think some of the internet mongoloids do have a fair point in that modern computers are so big and fast that they can pretty much brute-force their way through a lot of suboptimal programming in a simulation of this size. So I will only tentatively point and laugh, not having benchmarked anything.
 
Last edited:
Well, let's have a look! We'll go to the notorious StudentScript.cs.
If we look at the data fields for one student, we have, in order:
Assuming we're running in x86 mode and a pointer is 4 bytes. (Is this true?)
To be generous, I also assumed the compiler would be a smarty-pants and optimize those billions of contiguous boolean flags into a bit vector.

FieldsBytes
3 pointers for rotations
12​
67 pointers for links to scripts and objects
268​
6 pointers for animation things
24​
2 floats for vision
8​
9 pointers for ParticleSystems
36​
7 pointers for textures
28​
2 pointers for renderers
4​
33 pointers for various transforms for object locations
132​
3 array pointers for emitters
12​
1 array pointer for schedule
4​
6 more array pointers of miscellaneous junk
24​
7 array pointers for miscellaneous holdable items
28​
4 more miscellaneous pointers for corpses etc
16​
3 pointers for actions and arrays of actions
12​
10 audio-related pointers
40​
11 pointers for colliders
44​
54 pointers for objects
216​
193 bool flags
25​
63 floats for various parameters
252​
32 ints for phases
128​
2 enums for misc junk
8​
31 ints for counting various things
124​
4 enums for misc junk
16​
137 strings for identifying animations and such
548​
8 array pointers for lists of animations
32​
9 ints for IDs
36​
3 enums for personas/clubs
12​
10 pointers for positions of various things
40​
4 pointers for breasts and eyes
16​
1 int for "Frame"
4​
1 float for "MaxSpeed"
4​
3 array pointers for skirt parameters
12​
2 pointers for targers
8​
1 bool for "Gush"
1​
1 float for "LookSpeed"
4​
1 unused float
4​
1 unused int
4​
1 pointer for Jojo
4​
7 pointers for shower stuff
28​
7 pointers for clothing
28​
2 pointers for Attack on Titan
8​
1 bool for "Spooky"
1​
3 pointers for judo
12​
2 pointers for misc junk
8​
1 int for "CoupleID"
4​
1 float for "ChameleonBonus"
4​
1 bool for "Chameleon"
1​
3 pointers for accessories
12​
And a partridge in a pear tree
GRAND TOTAL
2296
So an entire StudentScript instance (of which there are 100 or so) spans about 36 cache lines, and just about everything you do within one will be on a different line. Those giant lists of objects pretty much make that inevitable - you're only going to be interested in one of them at a time, typically.
Every frame it'll probably flip through about 200KB worth of student structs, although a substantial fraction of these fields are probably not accessed on a given frame.
If we're actually running in x64 with 8-byte pointers, you can roughly double these numbers.

I think some of the internet mongoloids do have a fair point in that modern computers are so big and fast that they can pretty much brute-force their way through a lot of suboptimal programming in a simulation of this size. So I will only tentatively point and laugh, not having benchmarked anything.
So, how would yanderedev realistically go about fixing this? Would de-bloating studentscript and having a (minimal) unique script for every student be the fix here?
 
Y'know. The genre itself isn't all that bad and could be done well. Most "jap high school sims" are super limited, ie. day-to-day stamina usage like Persona. To have an actual real time school simulator seems incredibly obvious yet not really done. And it's also simple enough to be an indie studio's breakthrough.

Minus the killing and shit, obviously.
 
So, how would yanderedev realistically go about fixing this?
For starters, keep the data that's accessed together close together, and move data that's rarely accessed out somewhere else.

Like, there are over 100 fields that are references to animations, even though you can presumably only be using one animation on any given frame. One simple thing might be to just move all that animation data out to a separate class, and just have a reference to one instance of that class on the student object. And so on for other things - essentially, keep your best "real estate" for the things most often used.

Previous disclaimer applies: as far as I know none of this may actually be a problem, and the real "fix" is just "Computers are fast".
 
Why do they need to create "hype" in the first place? This is a fangame that started from YS, they aren't planning to selling it or anything ambitious like what Alex intends with the Kickstarter (if he ever does it that is).

Honestly, while I understand why everyone was happy about that better artist being accepted to the LL official team, I'm worried that they're going to use her art for nothing else but "hype" and when the project crashes and burns it'll be all for nothing. WNM might've not been the best game, but the developer at least knew how to build hype without sacrificing time that could've been spent on development by uploading 10 min long videos of gameplay every month or so.
I don't understand either, they already have a ton of youtubers hyping them as the second coming of God compared to Alex, they should really just stop looking for attention and continue their work but you and I both know this project will fail
 
I don't understand either, they already have a ton of youtubers hyping them as the second coming of God compared to Alex, they should really just stop looking for attention and continue their work but you and I both know this project will fail
The "Alex Effect".
Alex set the precedent. Every edition that attempts to mirror the concept will die, either from its creators becoming just like Alex, or in the case of WTM, other reasons. The year will be 2053, yanderedev will finally be releasing the 4th rival, and in the wake of his game will there be hundreds of attempts to create something better, doomed to death from the very beginning.
At least, that's my theory.
 
The "Alex Effect".
Alex set the precedent. Every edition that attempts to mirror the concept will die, either from its creators becoming just like Alex, or in the case of WTM, other reasons. The year will be 2053, yanderedev will finally be releasing the 4th rival, and in the wake of his game will there be hundreds of attempts to create something better, doomed to death from the very beginning.
At least, that's my theory.
Hold on Year 2053 and you think he be on the 4th rival? Pretty damn optimistic don't you think?
 
Well, let's have a look! We'll go to the notorious StudentScript.cs.
If we look at the data fields for one student, we have, in order:
Assuming we're running in x86 mode and a pointer is 4 bytes. (Is this true?)
To be generous, I also assumed the compiler would be a smarty-pants and optimize those billions of contiguous boolean flags into a bit vector.

FieldsBytes
3 pointers for rotations
12​
67 pointers for links to scripts and objects
268​
6 pointers for animation things
24​
2 floats for vision
8​
9 pointers for ParticleSystems
36​
7 pointers for textures
28​
2 pointers for renderers
4​
33 pointers for various transforms for object locations
132​
3 array pointers for emitters
12​
1 array pointer for schedule
4​
6 more array pointers of miscellaneous junk
24​
7 array pointers for miscellaneous holdable items
28​
4 more miscellaneous pointers for corpses etc
16​
3 pointers for actions and arrays of actions
12​
10 audio-related pointers
40​
11 pointers for colliders
44​
54 pointers for objects
216​
193 bool flags
25​
63 floats for various parameters
252​
32 ints for phases
128​
2 enums for misc junk
8​
31 ints for counting various things
124​
4 enums for misc junk
16​
137 strings for identifying animations and such
548​
8 array pointers for lists of animations
32​
9 ints for IDs
36​
3 enums for personas/clubs
12​
10 pointers for positions of various things
40​
4 pointers for breasts and eyes
16​
1 int for "Frame"
4​
1 float for "MaxSpeed"
4​
3 array pointers for skirt parameters
12​
2 pointers for targers
8​
1 bool for "Gush"
1​
1 float for "LookSpeed"
4​
1 unused float
4​
1 unused int
4​
1 pointer for Jojo
4​
7 pointers for shower stuff
28​
7 pointers for clothing
28​
2 pointers for Attack on Titan
8​
1 bool for "Spooky"
1​
3 pointers for judo
12​
2 pointers for misc junk
8​
1 int for "CoupleID"
4​
1 float for "ChameleonBonus"
4​
1 bool for "Chameleon"
1​
3 pointers for accessories
12​
And a partridge in a pear tree
GRAND TOTAL
2296
So an entire StudentScript instance (of which there are 100 or so) spans about 36 cache lines, and just about everything you do within one will be on a different line. Those giant lists of objects pretty much make that inevitable - you're only going to be interested in one of them at a time, typically.
Every frame it'll probably flip through about 200KB worth of student structs, although a substantial fraction of these fields are probably not accessed on a given frame.
If we're actually running in x64 with 8-byte pointers, you can roughly double these numbers.

I think some of the internet mongoloids do have a fair point in that modern computers are so big and fast that they can pretty much brute-force their way through a lot of suboptimal programming in a simulation of this size. So I will only tentatively point and laugh, not having benchmarked anything.
Would removing the easter egg pointers optimize the student script? While there aren't many of them, I don't see how they would be necessary for gameplay.
 
Would removing the easter egg pointers optimize the student script? While there aren't many of them, I don't see how they would be necessary for gameplay.
If he expects anybody to take the game seriously he ought to outright remove the costume easter eggs, the ones that completely lock Ayano out of the locker rooms.
The few times I was playing the game, trapping myself in a Touhou costume or some shit unable to take it off really pissed me off.
 
I was bored in the Love Letter discord, so I decided to go through some stuff in the r/ys instead. Nothing revolutionary but it's better than nothing.
post_reddit1.PNG

post_reddit2.PNG
Personally I think it is possible to stream game developing in an interesting and educational way. For example: IndieHorrorDev (the guy who made Welcome to the Game). You just need to take a teacher-like role to it.
"Interacting with the viewers... would be a large distraction"
Yeah, cause replying to some reddit post isn't a 'distraction'.
"Typing text, waiting for code to compile"
After typing one section, you could explain to your audience what it could do, what effect should it have on the game, why you're using this method instead of another, etc.
"Waiting for the scene to load, re-launching Unity"
Those would be the perfect moments to just talk with your audience, Alex!
"Trying to figure out the source of a bug"
In these moments you could just say to your audience something along the lines of "okay, guys, now watch closely, maybe you'll find the bug faster than me!" or "it's okay to google stuff if you're not sure about something, especially if you're new to the coding!" or "it's going to take a while, folks, just go get some drinks and I'll be back in a minute!".

If your fans are still there, after 6 years, I don't think they would get bored while watching you being a productive person.
And spoilers? Yes, because there are so many secrets left! It almost sounds like you didn't tell us any little thing you could think of while delaying Osana for the nth time.

For good measure, I'll post some stuff from the Love Letter discord too.
about deadlines.PNG
about the discord.PNG

Another person asked about the skits.
another person asking about skits.PNG

Someone is losing patience.
losing patience.PNG
making midori-alike.PNG
people asking for merch already.PNG
theyre at least doin some research on japan.PNG
u need to be older to work with them.PNG
They have a new manager.
up to neck in emails.PNG

Poor guy isn't getting any sleep.
poor guy not sleeping.PNG

applications.PNG

appplications opeeen.PNG
straying from persona.PNG
self_awareness_when its gonna be realesed.PNG
true.PNG
Someone already made a fan art of Bow-chan in Artificial Academy 2
artificial academy.PNG

Link

Oh, and...
ys improvement hm1.PNG

mods-answer-ys-png.1470105
 

Attachments

  • mods answer ys.PNG
    mods answer ys.PNG
    7.4 KB · Views: 696
Last edited:
Back