Cultcow EvaXephon / Yanderedev / Alex Mahan / Alexander Stuart Mahan - Developer of Osana from 2014 till September 2020, Crowdfunding Soon

What will happen to Yansim?

  • Alex works less and less on his game as he rides out his tugboat

    Votes: 1,350 43.4%
  • Alex drops the game and becomes a fulltime streamer

    Votes: 441 14.2%
  • Alex opens up a Kickstarter that will fail because of gremlins (no refunds)

    Votes: 591 19.0%
  • Alex adds more useless features asking for more money

    Votes: 1,129 36.3%
  • Alex goes full skitzo drawing crayon comics about his battles with gremlins

    Votes: 341 11.0%
  • Alex takes all the criticism to heart and improve his life

    Votes: 71 2.3%
  • Alex will troon out becoming Alexia

    Votes: 850 27.3%
  • Alex does a flip

    Votes: 695 22.3%

  • Total voters
    3,114

SIGSEGV

Segmentation fault (core dumped)
True & Honest Fan
kiwifarms.net
You're also wrong, the names aren't hard coded. They're pulled in from JSON of all things, as a single string.

Also, this JSON is great and I should have looked at it sooner
One of the nice things about JSON is that its fairly extensible and flexible, letting you nest data cleanly for more complex structures.

Or, you could do what Alex has done.
JSON:
{
    "ID":"1",
    "Name":"Taro Yamada",
    "RealName":"",
    "Gender":"1",
    "Class":"32",
    "Seat":"15",
    "Club":"0",
    "Persona":"1",
    "Crush":"0",
    "BreastSize":"0",
    "Strength":"0",
    "Hairstyle":"1",
    "Color":"Black",
    "Eyes":"Black",
    "EyeType":"Male",
    "Stockings":"None",
    "Accessory":"0",
    "ScheduleTime":"7_7_8_13.0100_13.375_15.51_16_17.25_99_99",
    "ScheduleDestination":"Spawn_Locker_Hangout_Seat_LunchSpot_Seat_Clean_Hangout_Locker_Exit",
    "ScheduleAction":"Stand_Stand_Read_Sit_Eat_Sit_Clean_Read_Shoes_Stand",
    "Info":"An average student. \n \n Average grades, average looks, average life... \n \n I'm not sure what you see in him."
}

Of note there, the three schedule entries. Rather than actually having some sort of structure in there by which he can define them, he's just written them into one big old string mess that he then parses out. He has no way to easily read what matches up to what, make sure that the pairs match, that nothings been transposed, etc. That right there is a big pain in the ass, done the hard way for no real good reason, when its trivial to parse nested json structures out to build full proper schedule objects. But off course, that'd require having such objects exist.

He also distributes the old student json as a backup, right in the file. I don't know why. Other fun Json includes the credits, a topics one that seems like it actually covers the specific conversations, but is just hardcoded array references (What the fuck are you doing yandev why does this need to exist)
>all of those numerical values being stored as strings
Fucking WHY. I know for a fact that he needs to compare those against integral types in the source code, so why the fuck would he store them as strings?
 

cjöcker

kiwifarms.net
I don't have to, because I know the names are hard coded. They aren't procedurally generated. If the names are stored in any way, at all, a switch statement would be the best choice to make it change in the text. It would be quick and easy to implement and fix the issue of the text box using full names when saying a characters name. It could written into that text prompt itself.
You're fucking demented and your code probably rivals Alex's in messiness and un-scalability judging by how you think.
 

SquirrelModeller

3D modeller
kiwifarms.net
I am loosing brain cells from reading the last few messages on this thread.

A switch statement is nothing special. It is a cleaner and theoretically faster way of writing an if statement. Here is why:

A switch statement allows the computer go through multiple statements to see which one is true. Now what does an if statement do? The same fucking thing. Switch statements, once again, just sometimes a cleaner method to write your code in. Everything gets converted to binary anyway, so in a few cases the if statements leaves behind a bit more binary, therefore in theory slower.

The argument of using switch statements over if statements is fucking stupid. Both ways work. The problem is how someone STRUCTURES the code.

Secondly the JSON or text file. Any game uses stored files to STORE information goddammit. Weather you generate it procedually or have it pre-coded most time it is stored in a text file. You know why text files are great? Because you can modify the files. The user can even overwrite the files or outright delete them to startover. There is litteraly NO REASON to complicate it more.

Thirdly, AUTOMATION. Funnily enough computers are made to repeat tasks. Like assigning valuables to multiple boleans. You write a script to automate the process of assign valuables to students for example. It is not difficult which is also why Alex's code is so fucking horrendous.
 

Zatherz

free(NULL);
kiwifarms.net
I am loosing brain cells from reading the last few messages on this thread.

A switch statement is nothing special. It is a cleaner and theoretically faster way of writing an if statement. Here is why:

A switch statement allows the computer go through multiple statements to see which one is true. Now what does an if statement do? The same fucking thing. Switch statements, once again, just sometimes a cleaner method to write your code in. Everything gets converted to binary anyway, so in a few cases the if statements leaves behind a bit more binary, therefore in theory slower.

The argument of using switch statements over if statements is fucking stupid. Both ways work. The problem is how someone STRUCTURES the code.

Secondly the JSON or text file. Any game uses stored files to STORE information goddammit. Weather you generate it procedually or have it pre-coded most time it is stored in a text file. You know why text files are great? Because you can modify the files. The user can even overwrite the files or outright delete them to startover. There is litteraly NO REASON to complicate it more.

Thirdly, AUTOMATION. Funnily enough computers are made to repeat tasks. Like assigning valuables to multiple boleans. You write a script to automate the process of assign valuables to students for example. It is not difficult which is also why Alex's code is so fucking horrendous.
Why does this thread attract so many Dunning Kruger shitcode factories trying to outdo the previous one?

What is "everything gets converted to binary anyway" supposed to mean? C# compilers that target MSIL (I think it might be called CIL now or something) do micro-optimize switch statements. There is a dedicated switch opcode in the specification which implements a jump table. This only works on primitive types (integers, booleans, chars etc). C# switch cases do accept strings weirdly enough, and those are the one case that will always be compiled into the equivalent of a series of if/else. It's absolutely true that the switch over if/else argument is underage aspiring vidya developer tier, since this tiny micro-optimization accomplishes nothing for the relatively small set of conditions in all of the decompiler output I've seen, but it's also false that switch does the same thing.
A jump table as a general concept is an array of labels, offsets, memory addresses or some other form of pointing to a location in the code section such that each entry corresponds to a numeric condition. The idea is that if you have a switch that looks like this (not that this is something you want to do often, or in most cases at all):
C#:
switch(foo) { // foo is an integer
case 0: // ...
case 1: // ...
case 2: // ...
case 3: // ...
// ...496 cases...
case 500: // ...
default: // ...
}
it's pretty clear that testing the value of foo 500 times with 500 different values is a waste of time, because the conditions form a very simple series. Therefore most compilers for most languages that have a switch statement or similar mechanism will be smart enough to instead hardcode an array of 500 pointers or offsets to particular case conditions, where the indices directly correspond to the condition. When it's time to run this code, foo will be first checked for whether it's lower than 0 or higher than 500. If it is either of those, then the default condition will be run. Otherwise, foo will be used as an index into the previously mentioned static array, and the instruction pointer will be set to the value at that location.

Of course you can have switches that have holes in them:
C#:
switch(foo) {
case 0: // ...
case 1: // ...
case 3: // ...
// ...496 cases...
case 500: // ...
default: // ...
}

The Mono compiler (and certainly more "official" compilers like the VS compiler or Roslyn, although I think Mono might already have been using Roslyn as its compiler for some time) is smart enough to see that generating 499 conditions is still a waste in this case, even though the conditions don't form a proper series. What it chooses to do according to a small test I did to confirm this behavior is that it still creates an array of labels of size 500, however at index 2 instead of inserting a label to a case it inserts a label to the default case. The same will happen if you try to introduce more holes. It's really up to the compiler to use its various heuristics to decide on what the best course of action is - degenerate to simple if-like conditions, or duplicate a lot of labels in the jump table.

Of course you can't really do this for everything, for example with a statement like:
C#:
switch(foo) {
case 0: // ...
case 1: // ...
case 2: // ...
case 1024 * 1024: // ...
default: // ...
}
it would be a waste to reserve like 4 megabytes of space and then fill over 99% of it with a label for the default condition, so the Mono compiler in this case did something smarter - it generated a jump table for the first 3 cases, then a condition equivalent to an if for the last case, and finally if none of those run the default case is ran.

Things get more interesting with this block:
C#:
switch(foo) {
case 0: // ...
case 1: // ...
case 2: // ...
case 1000: // ...
case 1001: // ...
case 1002: // ...
case 2000: // ...
default: // ...
}

Here the compiler actually created two MSIL switch operations, with two separate jump tables. If the first jump table (0-2) fails, it subtracts 1000 from foo on the stack and runs the second switch, where the indices map to the appropriate 1000-1002 case conditions minus 1000. Again for 2000 it did a simple condition, and then if all of those fail the default case is ran.

The compiler wasn't smart enough to figure out that it can create jump tables out of either of these, however:
C#:
switch(arg) {
case 0: // ...
case 2: // ...
case 4: // ...
case 6: // ...
default: // ...
}
C#:
switch(arg) {
case 0: // ...
case 1: // ...
case 2: // ...
case 4: // ...
case 8: // ...
default: // ...
}

Maybe other compilers can do a better job.

As a sidenote, the Mono compiler did not compile a set of ifs equivalent to a 0-3+default switch into a jumptable, which it did with the switch.

none of this really matters with the ifelse mess in yansim though lol

I don't understand your JSON vs text file paragraph. What do you think JSON is, if not a text format of a particular structure? In YanSim's case, there is really no need to invent your own format to store student data.

>all of those numerical values being stored as strings
Fucking WHY. I know for a fact that he needs to compare those against integral types in the source code, so why the fuck would he store them as strings?
Does he use 64 bit ints? That's the only reason I can see for doing something like that if he's using a third party JSON serialization/deserialization library, because of precision loss on numbers in JavaScript.
 
Last edited:

cjöcker

kiwifarms.net
Does he use 64 bit ints? That's the only reason I can see for doing something like that if he's using a third party JSON serialization/deserialization library, because of precision loss on numbers in JavaScript.
While you're correct when you say that this is an issue, he's not writing JavaScript and isn't even using 64 bit integers. The reason why it's a string is because he stores everything in an Excel spreadsheet then exports it to JSON, and the way it exports numbers makes them strings.
 

Zatherz

free(NULL);
kiwifarms.net
While you're correct when you say that this is an issue, he's not writing JavaScript and isn't even using 64 bit integers. The reason why it's a string is because he stores everything in an Excel spreadsheet then exports it to JSON, and the way it exports numbers makes them strings.
I specifically mentioned using an existing library for this because my thought process was he could be using some indian shitcode written for CRUD webapps that have to work with a JS frontend. Not sure whether the truth is any better.
 
Last edited:

Rimsook

kiwifarms.net
WTF we stated like a lot of pages ago that, the whole "switch statement" doesn't mean shit because the problem with yansim is that Alex has a gigantic ego thus making him unable to do "newbie" research on how things works i.e: data structure/architecture.

The student.cs is an issue, but not the main one. The switch statement is pointless in the discussion because most of the time what it takes a lot of resources (in terms of scripts in unity) are things like "ObjectGame.Getcomponent" to get the type of the object, which generates a lot of garbage in the memory, along with the insane amount of strings and redundancy he uses, stuff that can be avoided just by taking a few minutes to read Unity documentation, for fuck sakes the guy even hard codes the animations instead of using animation states! But leaving the scripts a side.

Most of the problem comes in how poorly he uses the tools that Unity gives in terms of rendering, he doesn't know how to clic the fucking checkbox to bake the light in the object so that shit doesn't kill the memory of the GPU, let alone how to use the lighting properly. Because he let that shit be in real time without any kind of settings and of course the amount of bloom that burns everything. Also the guy still uses deprecated packages that newer versions of Unity doesn't uses.

So basically, Alex is just a fucking retard that spend 8yrs of his life doing a shitty meme project and still doesn't fucking know how to use Unity properly.
 

Rimsook

kiwifarms.net
Wonder how long is going to take him to make his video for the kickstarter campaign, considering that his last blog post he stated that "he finally finished fixing the bugs and adding new features"

but also he's going to release a video for the upcoming rival and how "different" is going to be from Osana, I believe it's kinda difficult for him to make "hate & shame 2" considering how badly he fucked up recently.
 

TurkishOreo

Legendary cream and more cacao
kiwifarms.net
he's going to release a video for the upcoming rival and how "different" is going to be from Osana, i believe it's kinda difficult for him to make "hate & shame 2" considering how badly he fucked up recently.
Does this mean he's the developer of Amai from 2020 till the sun explodes?
 
  • Optimistic
Reactions: args

Rimsook

kiwifarms.net
"different" aka
"Amai is cooking related. You can now poison your riv
FUCK, did that already. Uhhhhh....

You can, uh, now ruin her cooking recipe, so that people don't like her. Yes!"

Calling it now.

"Now for Amai, i have think in a different approach considering that she's is the second rival she has to be more difficult than Osana, which is not a simple task, people will tell me 'but yanderedev you just need to make a version of Osana and just change it here and there' that would be true if for an amateur project, but yansim is not something like that, Amai needs to be unique in any way possible. For starters you would think that you can just poison Amai considering she is part of the cooking club, this is not the case because Amai is smart. While she cooks Amai is totally aware of her surroundings if the player wants to touch her ingridients or the stove she is using, she would alert other npcs, so poisoning her is not an option.

I also added a few features to her in the form of Raibaruni and Minako her two best friends who watch over her, they're not similars in any way to Raibaru, but they would protect Amai the same way Raibaru protected Osana, but now they wouldn't even allow you to be near of Amai unless you make certain task in order to bound with them, what task you ask? Well that's the fun to figure that out!"

Update: Jun, 15 2028

"This is the new update for Amai, as I stated in previous updates Amai is more complicated than Osana. And it looks like that her schedules interferes with Osana's in a way I haven't figured out how to resolve, that's why Amai is not ready yet. But i have to remember you guys, the game is alive as long as you people keeps supporting the project and myself, so please check the patreon."

1605906428533.png
 

Lmove

kiwifarms.net
got this video recommended to me
Dunno why, but I really don't like this guy.
Not only he spills the same shit that everyone had been spilling for the last decade. But he also speaks to his audience like they're a bunch of literal retards.

If you can't stand the guy for whatever reasons, Whang appears at the min 16 and shouts out the farm. @Diesel Boogaloo and @Not Based or Redpilled you guys are in the video, congrats!

 

JuanButNotForgotten

Friendly Mexican Ghost
kiwifarms.net
Not only he spills the same shit that everyone had been spilling for the last decade.
Not surprising, he is very late to the party.

But he also speaks to his audience like they're a bunch of literal retards.
A brief look into his channel reveals why.

As for Alex, I really hope that he works on his Shit'n'SHame 2 and that he will mention YS clones that failed without any shred of irony.
 

odumegwu

kiwifarms.net
"Now for Amai, i have think in a different approach considering that she's is the second rival she has to be more difficult than Osana, which is not a simple task, people will tell me 'but yanderedev you just need to make a version of Osana and just change it here and there' that would be true if for an amateur project, but yansim is not something like that, Amai needs to be unique in any way possible. For starters you would think that you can just poison Amai considering she is part of the cooking club, this is not the case because Amai is smart. While she cooks Amai is totally aware of her surroundings if the player wants to touch her ingridients or the stove she is using, she would alert other npcs, so poisoning her is not an option.

I also added a few features to her in the form of Raibaruni and Minako her two best friends who watch over her, they're not similars in any way to Raibaru, but they would protect Amai the same way Raibaru protected Osana, but now they wouldn't even allow you to be near of Amai unless you make certain task in order to bound with them, what task you ask? Well that's the fun to figure that out!"

Update: Jun, 15 2028

"This is the new update for Amai, as I stated in previous updates Amai is more complicated than Osana. And it looks like that her schedules interferes with Osana's in a way I haven't figured out how to resolve, that's why Amai is not ready yet. But i have to remember you guys, the game is alive as long as you people keeps supporting the project and myself, so please check the patreon."

View attachment 1739786
Honest question, will there be a day when this project is going to die with a whimper, with no followers whatsoever because everyone moved to games with better graphics and technology? How long is it going to take? You know, VR games are constantly better, and modern conventional games are already dwarfing Yandere Simulator, making it look like some outdated game from 15 years ago. There has to be a time in the future when Yandere Simulator will be an exotic curiosity to game journalists to probe and wrote articles about.
 

Rimsook

kiwifarms.net
Honest question, will there be a day when this project is going to die with a whimper, with no followers whatsoever because everyone moved to games with better graphics and technology? How long is it going to take? You know, VR games are constantly better, and modern conventional games are already dwarfing Yandere Simulator, making it look like some outdated game from 15 years ago. There has to be a time in the future when Yandere Simulator will be an exotic curiosity to game journalists to probe and wrote articles about.

Not really, at the end of the day yansim is a coomer game for weebs. Every 14yr old who is getting into anime and discover what yanderes are it would stumble upon yansim (in any way) now if it has a brain the weeb will see it just a trash and move on, now if it doesn't have a brain it would be part of the fandom; join the discord, get mad that there's no game progress, it will go to r/Osana and complain, and the last stage would be download Unity (to try to make it's own yansim, to prove Alex it can be done quickier)
 

Similar threads

Yandere Wars: The Clone Wars. No, the games aren't coming out.
Replies
4K
Views
689K
Gearbox's magical fuck-up of a CEO, lost a USB drive full of porn.
Replies
680
Views
181K
Former GamesDoneQuick staff and TF2 legend, slowly tumbling down trying to save the world from fascism
Replies
32
Views
6K