Jason Thor Hall / PirateSoftware / Maldavius Figtree / DarkSphere Creations / Maldavius / Thorwich / Witness X / @PotatoSec - Incompetent Furry Programmer, Blizzard Nepo Baby, Lies about almost every thing in his life, Industry Shill, Carried by his father, Hate boner against Ross Scott of Accursed Farms, False Flagger

  • 🐕 I am attempting to get the site runnning as fast as possible. If you are experiencing slow page load times, please report it.

Which will happen first?

  • Jason Hall finishes developing his game

    Votes: 33 0.8%
  • YandereDev finishes developing his game

    Votes: 412 9.6%
  • Grummz finishes developing his game

    Votes: 117 2.7%
  • Chris Roberts finishes developing his game

    Votes: 143 3.3%
  • Cold fusion

    Votes: 1,639 38.4%
  • The inevitable heat death of the universe

    Votes: 1,929 45.1%

  • Total voters
    4,273
that last two pages have been off topic as fuck
to bring it back on topic
Looks like pivoting to Monster Hunter has been successful for this faggot.
He's seeing his first uptick in followers since the WoW drama
uptick.png
 
to bring it back on topic
Looks like pivoting to Monster Hunter has been successful for this faggot.
He's seeing his first uptick in followers since the WoW drama
View attachment 7084045
It's a normal streamer thing to do for a reason. Streamers naturally ride whatever waves they can since that's what people are looking for.
 
To help tardwrangle ourselves back on topic, it looks like Jason put out a short talking about some mechanics of localizing the infamous dialogue array

YouTube Link

Each language has its own massive 2d array which is layered on top of the English one. This adds another layer to the idea that adding or changing existing dialogue is an absolute nightmare. It'd be one thing if this method was presented as "it's basic and a little clunky, but hey it works", but this slop being peddled as clever is quite obnoxious.

And of course the comments are mostly marveling at the most basic, fragile form of 18n fallback possible:
1741804504624.png

But if you dig a little you can find some dissent, of course infested by gnomeguards totally missing the point:
1741804688968.png
I particularly love the idea that using a map over an array to avoid messing up indexes is on the level of "you're not a real game dev if you don't make your own engine!"

This thread looks particularly amusing and scathing toward both Jason and his commenters:
1741805485626.png
 
Last edited:
the infamous dialogue array
Array shown in the short, "home_bedroom_dialog_ENUS" (as decompiled by UndertaleMod)
JavaScript:
function home_bedroom_dialog_ENUS() //gml_Script_home_bedroom_dialog_ENUS
{
    @@Global@@().dialog_array[1][1] = "Going back to bed seems like a bad idea."
    @@Global@@().dialog_array[2][1] = "There we go, all set to battle the day."
    @@Global@@().dialog_array[3][1] = "No need to get dressed a second time."
    @@Global@@().dialog_array[4][1] = "%2_$3_Boof...$20_ $3_#Boof..."
    @@Global@@().dialog_array[4][2] = (2 << 0)
    @@Global@@().dialog_array[5][1] = "He's out like a light."
    @@Global@@().dialog_array[6][1] = "%4_Yikes!$20_ $1_#Lore?!$40_ $1_#Are you ok buddy?"
    @@Global@@().dialog_array[6][2] = (2 << 0)
    @@Global@@().dialog_array[7][1] = "%6_I think so$10_...$20_ $1_#The lightswitch is toast though."
    @@Global@@().dialog_array[7][2] = (1 << 0)
    @@Global@@().dialog_array[8][1] = "%6_I'm going to head back to bed.$40_ $1_#This day is already sour enough."
    @@Global@@().dialog_array[8][2] = (1 << 0)
    @@Global@@().dialog_array[9][1] = "Wait$10_...$20_ $1_#What about breakfast?"
    @@Global@@().dialog_array[9][2] = (2 << 0)
    @@Global@@().dialog_array[10][1] = "Dude$10_...$20_ $1_it's too early for food."
    @@Global@@().dialog_array[10][2] = (1 << 0)
    @@Global@@().dialog_array[11][1] = "It's never too early for food!$40_ $1_#Where is your sense of adventure?"
    @@Global@@().dialog_array[11][2] = (2 << 0)
    @@Global@@().dialog_array[12][1] = "Sleeping, like we should be."
    @@Global@@().dialog_array[12][2] = (1 << 0)
    @@Global@@().dialog_array[13][1] = "%3_You know I can't open the can..."
    @@Global@@().dialog_array[13][2] = (2 << 0)
    @@Global@@().dialog_array[14][1] = "Oh fine$10_...$20_ $1_let's get going then.$40_ $1_#Your fault if anything else goes#wrong."
    @@Global@@().dialog_array[14][2] = (1 << 0)
    @@Global@@().dialog_array[15][1] = "Baron isn't even awake yet."
    @@Global@@().dialog_array[16][1] = "Might want to grab your sweater #before we go.$40_ $1_It should be in#your dresser."
    @@Global@@().dialog_array[16][2] = (2 << 0)
    @@Global@@().dialog_array[17][1] = "%3_You really can't be thinking #about going in your pajamas, #can you?"
    @@Global@@().dialog_array[17][2] = (2 << 0)
    @@Global@@().dialog_array[18][1] = "Not my monkey, not my circus.$40_ $1_#Whatever you want to do I got #your back."
    @@Global@@().dialog_array[18][2] = (2 << 0)
    @@Global@@().dialog_array[19][1] = "The storm outside is getting rough."
    @@Global@@().dialog_array[20][1] = "Go back to sleep?#  Yes#  No"
    @@Global@@().dialog_array[21][1] = "Already fast asleep."
    @@Global@@().dialog_array[22][1] = "There's a huge slash across the back..."
    @@Global@@().dialog_array[23][1] = "It's too stormy to see anything..."
}
 
Each language has its own massive 2d array which is layered on top of the English one. This adds another layer to the idea that adding or changing existing dialogue is an absolute nightmare. It'd be one thing if this method was presented as "it's basic and a little clunky, but hey it works", but this slop being peddled as clever is quite obnoxious.
I don't code, but loading the English array "just in case" seems wildly inefficient if you hold it next to "a single global array for all dialogue is 20% faster". I'd guess it's all insignificant compared to Windows deciding to fuck up performance anyway with a background update or some shit, but pick a lane.
 
I don't code, but loading the English array "just in case" seems wildly inefficient if you hold it next to "a single global array for all dialogue is 20% faster". I'd guess it's all insignificant compared to Windows deciding to fuck up performance anyway with a background update or some shit, but pick a lane.
Performance doesn't matter in this case. Loading a string in the least efficient way is still a rounding error in your frame budget. He could overlay another 40 tables and it wouldn't make a difference to anyone playing the game. The real issue is how if he inserts a line of dialogue between two other lines in his array, it will fuck up all the offsets in all the translation tables and they will all have to be modified too, making it essentially unmaintainable for no good reason, which is why nobody does it.
 
I don't code, but loading the English array "just in case" seems wildly inefficient if you hold it next to "a single global array for all dialogue is 20% faster". I'd guess it's all insignificant compared to Windows deciding to fuck up performance anyway with a background update or some shit, but pick a lane.
He says anything to excuse his poor code.
  • Using a massive global array? It's for performance!
  • Loading 2 arrays for dialogue? It's for performance!
He doesn't seem to have any regard for maintenance. He says he can look up the English text when a translation isn't done or working and then fix it that way, but in the code he has to jump around his 2d array to apply the translations and it would be pretty easy to update the wrong index in the non-English portion, not to mention needing to manually update the array per new entry which scales terribly. He shows that he has to go find Japanese and then split the screen to have the languages side by side. He can do whatever he wants but trying to say it's for performance is his cope. It's a simple game, any performance gains on loading text are entirely negligible.

He could make it easier to mod by having dedicated files instead of hardcoding everything, allowing the community to add languages. I'd argue this would be easier to maintain as a developer too but to each their own.
 
But if you dig a little you can find some dissent, of course infested by gnomeguards totally missing the point:
View attachment 7084086
There's absolutely nothing wrong with using a language enumerator to index into arrays. Once again, the midwit programmer thinks the hashmap is the solution to literally everything while in reality an array is solution to literally everything.
 
I don't code, but loading the English array "just in case" seems wildly inefficient
normally in i18n you do have a fallback, but you only load the (normally used) hashmap once per scene per dialogue options available to that scene, and reference the languages. the way mald described it you load the array twice rather than referencing an i18n reference.
in laymans terms you need to load the massive array twice, once for english, and once for the language chosen if its not english. if there's 10 thousand dialogue options, you need to load that into memory twice, looping 20 thousand times
if you hold it next to "a single global array for all dialogue is 20% faster"
this is the thing mald does that i fucking despise the most. ok, you could improve the performance of your game, being done through game maker, by putting data in memory at runtime, up to 25%. emphasis on up to. but this only truly really applies if youre referencing that allocated memory thousands of times per frame. not per second, per second times 60. its only really done in games that rely heavily on physics.

in malds case, not only does it not improve performance, it also loads dialogue for scenes that you havent seen, and inacessible scenes from previous content

but of course retarded maldy will say he does it so 'people can hack his game'

i should tell my boss i allocate random shit to memory so the user can hack the app that'd be fun
I'd guess it's all insignificant compared to Windows deciding to fuck up performance anyway with a background update or some shit, but pick a lane.
ultimately the memory allocation for dialogue wont fuck the user too much, no. those files are probably very light in the end. my only guess is if maldy fucks up somewhere and poor error handling trying to access something in memory causes a leak. which, if it happens, will be a nightmare to fix due to his retarded naming convention

lads feel free to correct me if im wrong. theres areas of what i said that i am conjecturing based on experience (particularly the memory leak bit. i also encourage reading into it, its pretty interesting)
 
Last edited:
He's made the game impossible to work on. "each social interaction has between 16-32 potential routes" combined with his array explains why the progress has been halted for years and why the new updates are just tinkering with minor stuff.
The progress has been halted because he doesn't work on it. Maybe he doesn't work on it because it's not fun anymore due to being messy, who knows.
 
There's absolutely nothing wrong with using a language enumerator to index into arrays. Once again, the midwit programmer thinks the hashmap is the solution to literally everything while in reality an array is solution to literally everything.
I'll agree that an enumerator is a better data structure than a hash map in this and most other situations, but I don't think he's even doing that. I haven't dived deep into the Heartbound code because I'm not actually all too concerned with it, but from that short and the bits I have seen it looks like he's just raw-dogging indexes which is the thrust of the issue.
You could take every criticism from people suggesting a hash map, replace "hash map" with "enum", and it still fully applies. I'll totally own the dunce cap for defaulting to "map" when referring to any data structure with named keys, though, I'm definitely no genius.
The decompiled array name ending with "_ENUS" gives me pause and makes me think I did miss something like a retard.
 
Last edited:
The progress has been halted because he doesn't work on it. Maybe he doesn't work on it because it's not fun anymore due to being messy, who knows.
I think he's got project paralysis coming from his shit code, everytime he tries he forgets what the array is doing, then he remembers he has the 100k line documentation to go thru, and he just starts procrastinating, and leaves it for tomorrow.
He'll repeat this until he either gets better and remakes the system (not happening), or until he hires someone to do it (not happening), this means that he's stuck in a loop like the moronic robot that he is.
 
I'll agree that an enumerator is a better data structure than a hash map in this and most other situations, but I don't think he's even doing that. I haven't dived deep into the Heartbound code because I'm not actually all too concerned with it, but from that short and the bits I have seen it looks like he's just raw-dogging indexes which is the thrust of the issue.
You could take every criticism from people suggesting a hash map, replace "hash map" with "enum", and it still fully applies. I'll totally own the dunce cap for defaulting to "map" for any data structure with named keys, though, I'm definitely no genius. The decompiled array name ending with "_ENUS" gives me pause, though, maybe I am retarded.
I'd also like to note that he has previously bragged about how "translator-friendly" this whole system is. I'm not sure how translator-friendly a system that requires a translator to install GameMaker Studio, load up your entire project and directly edit code just to translate some text is. I have a feeling a lot of them would have preferred a fucking .txt file, and maybe, as a luxury, a small program to WYSIWYG edit the text using the in-game dialogue box and text rendering system so they can make sure it isn't overflowing.
 
I'd also like to note that he has previously bragged about how "translator-friendly" this whole system is. I'm not sure how translator-friendly a system that requires a translator to install GameMaker Studio, load up your entire project and directly edit code just to translate some text is. I have a feeling a lot of them would have preferred a fucking .txt file, and maybe, as a luxury, a small program to WYSIWYG edit the text using the in-game dialogue box and text rendering system so they can make sure it isn't overflowing.
It's not. Gimme a txt file so I can just start good old microsoft word.

Though one could use a document on the story to get things right. Which Jannyson probably doesn't have because Heartbound is basically abandonware.
 
if the choices are between terry davis and maldy when it comes to programming id rather just lay bricks all day under the arizona sun
Hey now Terry was actually good at what he did. He just called everyone a nigger for not getting it right away cause he was mentally ill.
You could sit down with Terry and talk shop over a cup of coffee and if he knew you were genuinely interested in programming he'd happily talk to you about it. And you might just learn something or come out with some new interesting understandings. It was some of the more lucid experiences he would have with people honestly.


You can't learn shit from Mald. He'd make it elaborate and bullshitty because he doesn't know and try to wizard of Oz you about it.

To help tardwrangle ourselves back on topic, it looks like Jason put out a short talking about some mechanics of localizing the infamous dialogue array
This fucking nigger trying to make it sound advanced.
Its just two separate tables and when you set your language it checks to load it.
I'm a fucking retard with no coding experience and even I know that. Except he coded it inside the engine like a bigger fucking retard.
Instead of doing something like a separate CSV table that you can just open up and edit lines easily with.
So he made it MORE of a mess.
Fuck me. I don't even work with computers anymore and I can see how stupid and messy that is.


E:

has he never heard of a CSV file?
I learned this shit from a little 63 year old lady who was a secretary at a job like 15 years ago! Not the same thing exactly but she showed me how she used them to auto fill and populate lots of things. God bless Judy. I hope she's still alive and well
I think he's got project paralysis coming from his shit code, everytime he tries he forgets what the array is doing, then he remembers he has the 100k line documentation to go thru, and he just starts procrastinating, and leaves it for tomorrow.
He'll repeat this until he either gets better and remakes the system (not happening), or until he hires someone to do it (not happening), this means that he's stuck in a loop like the moronic robot that he is.
Sisyphus's Coding boulder.
 
Last edited:
I think he's got project paralysis coming from his shit code, everytime he tries he forgets what the array is doing, then he remembers he has the 100k line documentation to go thru, and he just starts procrastinating, and leaves it for tomorrow.
I think he just sucks and would rather play vidya and super hacker like a manchild rather than do actual work/meet obligations.

Put yourself in the mindset (sorry ahead of time) of a degenerate, pseudointellectual master hacker stunted nepo manchild with a sitting community of likewise degenerate, manchild trannies

Option A: work 8-10 hours a day on slow, boring number work to finish an obligation from 6 years ago that you're not interested in and already received your asspats for.
Option B: play with new toys/dress-up and drink monster
 
Last edited:
Back