I guess we'll only see these posts now for the next 3 weeks until this sub inevitably finds another thing to repost for 3 weeks again
I'm surprised people only now started spamming this sub, considering this guy has been getting dunked on for months by now, and it's only now that I actually see people make hateposts about him here.
The previous drama were more about his WoW/other games behavior or the StopKillingGame initiative. It's pretty recent that people scrutinized his code I believe
It’s completely different here because he’s attempting to fake a talent he doesn’t have
I feels like i am getting wooshed here
Wasn't the same true for his wow and other dramas?
Probably because most people didn't know who he was until the while Stop Killing Games thing.
It's better than all the "Hurr durr I'm bad at programming and only pull from git hub and hate AI or vibe coding give me free likes hurrrzzzzzzz"
So, I'll take it. 😅
What I find so weird is that people shit on Thor AGGRESSIVELY. Like sure I didn’t like the guy because of how strong his opinions typically were (whether I agreed with them or not). But people are just not shutting TP up about hating him and I genuinely don’t get that; just stop watching him and move on with your life.
My best guess is that narcissistic tendencies really amp things up for people
I think the reality is that most people just like a good witch hunt, makes for good sport.
I don't particularly like the guy, but the healthy response to that is to stop interacting with them if I'm capable of doing so. Since he's an entertainer on the internet, doing that is pretty easy. It's the same shit with Star Citizen and the weird "refunds" community that popped up on its fringes. There's just a subset of individuals who get off on hating something.
There were posts about him here before, but they would get downvoted into oblivion because "he's so wholesome"
Posts about his coding are because yesterday or like, 2 days ago, there was a video reviewing and shitting on and fixing his code.
I just got roasted in a separate post for saying as much about how this sub is just dogpiling for karma.
Well... the way you phrase things will affect people's perception of what you're saying, even if the essence is the same.
But I do imagine that most people making hateposts of PS is probably new people flooding the sub after they realized there's a humour oriented programming sub.
Yep I've been arguing with people for the same thing, I don't get the obsession with giving this guy more attention. Like I don't like he handled SKGs, but seriously, this is just fueling his business. All PR is good PR.
Hell, most of the "drama" around him is just blown way out of proportion as we havent had anything happening in the scene for ages. On the most part he's just a programmer with a large ego, which anyone whos worked in the industry knows, that is absolutely nothing new.
Honestly I didn't follow the SKG stuff that much, but from what I did hear of his take, it wasn't even super unreasonable? Poorly communicated maybe, but he seemed to mostly be concerned with how the hell you keep something like an MMO alive without the service. Removing the online component from the online game kinda nukes the whole point of the game, and it's not unreasonable to state that it's unreasonable to expect devs to do the metric fuckload of work required to keep that game "running" in a way that isn't even representative of the core experience. Unless he stated something else I'm unaware of, all this seems to be is a bunch of capital G Gamers getting mad over some unimportant shit again.
I'm sorry, but that's fun
Just gotta wait untill enough people start their freshman year of compsci, then we'll go back to normal
I have a theory that firstly he got exposed with his shit code, and then started deliberately writing code fragments even worse to show and get here and other social media and have a new audience, besides those who come to his stream with hate for SKG.
I wouldn't put it past him. I also feel like he's the kind of guy to do stupid shit like this just for his own kicks in the hopes of someone one day seeing it. I know I've done some nonsense before just to make the next guy scratch his head. And now he gets to gleefully watch the world burn as millions see it lol
There where shorts of him talking about code from undertale being hundreds of line of switch statements changing the state of a variable back to what it originally was, therefore doing nothing.
so i think he got his excuses for his bad code in early. i believe his point was just make stuff and dont worry about the critisisms of the code, its better to have something than nothing.
But the problem there is he has bad code AND doesnt have anything because steam keeps flagging his game for being abandoned.
I mean, it's very well documented at least.
The only thing I'd insist on changing is grouping them by Location, Place, Self, etc.
Or you know, use a SQLite database like a normal person.
Can you use SQL or databases in general for game maker projects? Never saw anything like that in Arma, missions were all stored in the equivalent of an XML file
What's SQL? Is it a Java thing? You know I only code in C++, because I'm better like that
C++? Like C PLUS PLUS? Nah bro, you need to program only and only in C for like the best experience
I only code in C-- and write straight to byte code. Who needs any fancy C features or compiler?
Imagine flattening all classes in your code into arrays and then writing a bunch of comments, what each position in each array is supposed to represent.
Comments are a bad smell, if you need a lot of them to understand the code, then something is bad.
THE NUMBERS MAN, WHAT DO THEY MEAN??!?
Mason*
But seriously wtf is that? Dude controls the game state by shifting numbers in a do-all global array? What's inside those global arrays? THE NUMBERS MASON, WHAT DO THEY MEAN!?!?
Funnily enough, despite the horror of the code, from what I can see the commenting is above par and we actually do know that the numbers mean :P
If he used enums he wouldn't need those comments.
Enums aren't a good solution either. He should've used a map.
This is GML, you have arrays and structs. Using arrays with enums will be the more efficient way of doing this. I don't see why you would think it would be a problem?
(There is the Data Structures too technically but those are not recommended to be used anymore.)
I mean ideally he has an API for set/get flag and passes in enums, but there are no perf issues with an array with enums. He'll definitely can't change the enums once they're set of course! Imo the big issue is really the magic numbers.
Yes
It's right there in the comment
What’s the context of these screenshots?
So it's a solo dev who works on a game called Heartbound, and it's on of his dev streams where he shows code.
He's got some other escapades like hating on Stop Killing Games. His "history" is also questionable. He claims to have worked for the government, "hacking power plants" and that he's got 20 years in the business, his dad worked for blizzard or something and he's worked at blizzard as a QA too. He's also participated in a few defcons. He claims to have been working in cybersecurity, and people say he was a pentester.
Someone recently did a video going over his code in dev streams and called him out for poor practices, and the guy apparently replied with a whole ass "nothing burger" statement.
I watched both videos, and one of this guy's claims is that "Good coding practices are only important if you're working in a team", and failed to miss the point that the original code reviewer mentioned, where code readability makes it much easier to understand code years into the future and simplifies the process. This picture sums it up perfectly.
The game has been in early access/development for years now, and it's honestly going down the same path that YandereDev went down, with poorly formatted code and stupidly complex code to parse through, and this screenshot sums up why it is the case because he's obviously got so many things to fix in the event of a bug.
Now, some of it is due to GameMaker being weird, but the problems extend farther than that.
I am so glad I go outside
Someone recently did a video going over his code in dev streams and called him out for poor practices, and the guy apparently replied with a whole ass "nothing burger" statement.
Who the fuck cares
Honestly, I don't care at all but it's funny to see people caring so much about it... and people caring so much that they have to say "who cares"... dude's just another weirdo on the internet who needs to touch grass
Its the same thing with all of this dudes contraversies, its usually never about what he did, but how he reacts to criticism. Like with the wow thing and the stop killing games thing, he just kept on doubling down that hes right and that put people off. Same shits happening here
It's code for his game Heartbound
These are screenshots from a guy named Pirate Software. He claims to have a ton of experience in the games industry and leans on that experience to butress some otherwise dumb and ill-informed takes. He sharply criticized the Stop Killing Games initiative without appearing to understand what it's about.
He also codes on stream. As a result of his controversial and uninformed opinions, actual veteran programmers and game developers have been tearing his style to shreds as being below those expected of an amateur.
Absent his loudmouth behavior, he wouldn't have attracted any attention.
This guy codes on stream. He’s had a few mildly weird takes and less than honourable gameplay moments recently and for some reason that’s been permission for everyone in here to hyper focus on him and shit on his code for 3 days
Its way worse than "mildly weird takes" and "less than honourable gameplay moments". Thats just disingenuous lmao.
He has a bad take about stop killing games and is somewhat of an asshole.
Asmongold has openly cheered genocide on stream and spread hate for minorities but somehow PS has received infinitely more hate posts.
https://piratesoftware.sucks/summary. And not to speak of his alledged behaviour in Second Life
People need to realize it’s not the stupid take he’s being dunked on for per se. It’s his complete lack of self awareness, arrogance, and inability to admit he was wrong.
Yup...
One of the things I saw him get called out for was collaborating with Asmongold. Either way though, obviously Asmongold has done far worse things but that doesn’t change how much of an asshole Pirate Software has become.
Asmon has plenty of Haters, but I'm not too sure someone who's been terminally online for over 10 years will get Dunked on a programming (or Most Normal jobs) Sub
With or without his previous dramas this code is just bad and in itself deserves to be shat on. If he presented himself as a self-taught kinda begginer or something people would probably be empathetic but he claims having 20years of experience and always talk like he's better than everybody else, so obviously people will shit on him. He's asking for it at that point
He does not code on stream. He jerks off over his subscriber count on stream.
"midly weird takes" literally lying out of his ass at least a dozen times and tripling down on every single one of them, every time
Lying about things that don’t matter or meaningfully hurt anyone is grounds to choose not to watch him. Not flood this sub with unrelated catty mean girls-esc code take downs for days. This is mob behavior.
New spaghetti code game so we don't have to laugh at Yandere Simulator for the next 10 years? Nice
Looks like someone fresh out of a boot camp
Even bootcamps teach you how to use for loops.
You would be a fool to use a for loop here, the engine has a built-in function for this which will be faster.
You cant put comments on what each index means though /s
When you create the integer array, everything will initialize to 0 anyway.
Feels like there are no design pattern at all, just brute forcing like throwing every chess moves
He made a response video saying this is how game maker studio works. I have never used it so I can't say for sure. However, my guess is that it could be made to work a different way, but this is how he learned and now he's so far in he'd rather not refactor/doesn't want to learn.
I know GML pretty well. If he is gonna use an array like this, he should use an enum and/or getters/setters instead of directly accessing the variable like this via its index.
I am not really familiar with game development and design principles if he were to stick to those principles how would he implement this?(not talking about the obvious stuff like int instead of boolean)
The biggest thing here is it results in a lot of magic numbers — the indexing of the array is just a meaningless int to pull out a particular flag.
I don’t know anything about the game they’re building or what language, but the first step would probably be to use a map or dictionary so that you can look up these flags using a meaningful index (like an Enum)
You could probably go farther and hide those implementation details in a class, and hand the class a game state object (eg completed quests, current modifiers, flags, etc), and then have it spit out the next sequence for you.
It really depends on how isolated each component or sequence or quest of the game is, and then building a system that allows you to look up this kind of data in a modular way rather than pulling from a master array.
That being said there’s nothing wrong with coding like this if it works and fits within the scope and your ability as a programmer. Lost of great games have weird code. But I think there are other reasons people are shitting on this dude though I don’t really keep track of that kind of stuff
I would say the magic numbers are less of a problem than the scalability. Things change all the time, and if he decides to add more events near the start or middle of the story, he has to completely shift everything down, which is a pain in the ass when you have over 500 events in a single array.
I assume he can just add new ones to the end of the array regardless of where they fall in the story, right?
Yeah, and that's a horrible idea. If you already can't read the code because of magic numbers, it's going to be worse when you're doing a check on event 80 AND event 580
brother, sit this one out
you Control+F for 80, and Control+F for 580
This is the exact same thing you would be doing if you had to check for StartingQuest1 and Starting Quest10
to add more events near the start or middle of the story, he has to completely shift everything down, which is a pain in the ass when you have over 500 events in a single array.
No he does not
you can easily access Quest number 1000 in the array at the beginning of the game
Which would mean events are even more confusing because of the fact the game is ran by entirely ambiguous array which will now compare some random number + some other random number that is way higher than it.
This is unmaintainable, and no game programmer with actual experience would consider this a good solution to an already solved problem.
The most basic thing he could do is have a file with array indexes as const, like
int NOIR_EVENT_PLAYED = 198;
int INVENTORY_CHAPTER_2_SOCKS = 199;
int POOL_DID_WE_SAY_NO_TO_JOE = 200;
...
and then in this file instead of global.storyline_array[198] = 0; // Noir - Events played (0|X ...)
you would have global.storyline_array[NOIR_EVENT_PLAYED] = 0; // (0|X ...)
Which is better because then, in other files, instead of doing
// Noir - Events played
if (global.storyline_array[198] == 0) { ... }
You can just do if (global.storyline_array[NOIR_EVENT_PLAYED] == 0) { ... }
Which is much better because if at some point for whatever reason you want to change the 198
to 199
you only have to change it in that one const file.
The other good thing about this (very basic, you can do much better, structs etc) approach is that if you know later down the line that you want to do something with this particular event (in this case "Noir - Events played"), it's much easier with an IDE to go global.storyline_array[NOIR
, and here you auto complete, it'll show you every var that starts or contains the word NOIR and you can pick exactly the value you need rather than having to go to your array, look for noir, find it's 198, and then use 198.
Also you just init the whole story array to zero rather than on multiple separate lines
Not to play devil's advocate but imo, initializing an array like that with a for loop is not the best idea
Sure, it's less line of code, but it kinda implies that every single one of these have to start at 0 and be contiguous and so on.
Imo, those are not necessarily true. Just because most currently start at 0 doesn't mean you should design around it.
I've seen people go "but if you have an exception you change it after". OK, but what if you have 10? 20? 250 exceptions randomly scattered through the array? Yeah, to me it makes more sense to initialize that array one by one, because the value of array[n] is not coupled to the value of array[n + 1]
However, it would make sense to split that array initialization by categories. Like init_act_1_values(), init_act_2_values() and so on.
I'll follow-up: I'm all for dunking this guy but if its true that all the code he shows off is non-public and is prototyping, there's literally no problem with prioritizing dev speed over clean code.
All I've seen is this one screenshot and it just looks like "some dude's preferred config scripting". I know nearly nothing else about the context to make any informed decision about this, and I'm skeptical of others doing so without access to a repo and its commit history.
The fact we have any number of hit-pieces coming out ignoring the context of a dev's writing habits leaves their own credentials suspect. Granted, I'd likely never hire anymore participating in this chicanery so who the fuck cares?
It also allows him to comment on every single line what the call actually does
Functionally, its no different to having the same list, but with an enumerator declaration with each option on each line with a comment saying what it does
int POOL_DID_WE_SAY_NO_TO_JOE = 200;
Poor Joe.
Or store the text/scene in a file format????? And separate the rendering????
As much as reading the code "makes sense," it's really so far from good design principles to even give a succint answer as to how this should be done.
For starters, using a map with descriptive keys would be better. Instead of array_name[x] == 0 for has the menu been checked, you'd have map_name["Has menu been checked"] so that it's clearer what you're checking for without having to refer back to these code comments. That's only if you really wanted to store this information in a global dataset for some reason. There are plenty of better ways that follow OOP principles.
An example of a better way is to store these values on the relevant objects. Instead of having a global variable for each of these flags, store the flag on the related object and query it when you need to. E.g. a menu object with an isChecked flag. That way, you can query the object for the value, and everything will be in the types you expect them to be, and you can easily restrict when this value can be modified.
Why would the key need to be a string?
I imagine those chapters are their own plain object that contain internal states
Why not have a chapter as the key, and it's status as the value
If he holds the chapter in the scope of the code that runs it. Then you don't need to remember any magic number. You throw the current chapter in the map to achieve the state
not talking about the obvious stuff like int instead of boolean
A boolean wouldn't work here, as some rows have more than 2 states. You can see it in the comments. The 5th line is actually the first one where a boolean would work.
Static typing where you create classes with predefined properties and types.
Wasn’t he a QA tester at blizzard, I wouldn’t expect him to be a skilled programmer
I would rather this than oop inheritance hell or some other bs. I at least I know what this means
Gamedev experience is not programming experience
Why everyone acting like it's same thing
True, some game devs are only taught the basics from a script language and for most of the time it is the only thing needed; simple data structures, commands to show dialogue/menus, control progress on quests, etc.
I once helped on a ragnarok private server, and their custom code was painful to read, tons of goto 'label' statements and very crude use of variables, but looking back, it was amazing what that one admin did all by herself without any background on programming
Thor either doesn't know about enums or doesn't know that GML supports enums, because there's no excuse for using this many magic numbers.
Just enums won't help here, it would just spawn 3 times more code. Refactoring into nested categorized struct would maybe help. I am not a gamedev and genuinely interested how do you save all the game states. State machine? I heard that Larian used a giant database for this
Most hobby game devs never get around to implementing save states in their games, either because they abandon the project or because they don't know how and think it's something where you can keep kicking the can down the road, delaying the responsibility. It's something people miss like setting up localization, where you're severely hurting yourself by delaying the fundamentals.
Larian uses a database, yes. It's damn near the only viable solution at their scale. And the database supports several data types, including fixed strings, localized strings, literals, UUIDs, and a plethora of custom data types (mostly enums).
Some smaller games (especially ones without significant loot or questing items) will just store a few special details in JSON or even plain text. It varies a lot.
Game dev here, and this is so true. My school's game design program only had a programming basics class, and everything else was using blueprints in Unreal Engine. We all wanted more programming classes, but it was an art school and they didn't offer anything more in depth. Anyone with actual programming skills was in really high demand for our final studio projects.
No hate to me goto statements, it's the only reason I still have a job
Wut.
Because some things are obviously bad, regardless of context
He said he was a hacker for gov...
By hacker, he means he did social engineering.
And by social engineering it means he ran their internal phishing testing tools.
To be fair security is often even less like programming.
That's actually part of why I lost interest in the cyber security field. I really enjoyed programming and was disappointed when I found how little there was in my cyber security classes.
Yeah I'm in AppSec and recently got grouped with a devsecops team. First time I've seen security people who can write code. Most security engineers are at least 1 level abstracted from pure code.
Most hackers are 'hacking' people, not computers - and that's what he probably done for most of his career - social engineering
If he decompiled some executable and injected something into memory doesn't make him programmer...
Game developer for 15 years with published titles on Playstation, Steam. I do software engineering as well on contracts on the side and I whole heartedly disagree. You are confusing hobbyists that strike gold with professionals.
Game developers don't always have to be programmers. Artists and designers are frequently included in the developer role, for example. Depending on their projects, they may have no interaction with coding.
That doesn't mean game dev programmers should be off the hook for writing bad code.
I think you are confusing game designers with game developers.
Or are you talking about software architects? I'd consider them programmers too.
In more traditional software, your developers/engineers would be strictly programmers. Other disciplines having different titles.
The term "Game Developer" has been expanded. Personally, I'd only used it for programmers, however it's now used more often as a title for anyone involved in development.
E.g. your level designers making block outs, your 2/3d artists, tech artists, animators, audio.
An argument could be made that they are not "developers", but it's becoming more prevalent that they are included.
Eh I mean these days anyone working in the game are considered game developers but what you are not taking from this is that pirateSOFTWARE claims to be a software developer.
Sure creative success in game dev is not a benchmark of programming skill. If you have a vision and enough skill to execute it, that's great. Undertale is a good example.
The issue for Piratesoftware is how much he overplays his technical skills.
If you're going to give advice for indie hobbyist game devs be honest there is no shame and it's admirable to get that far with weak programming skills. We've all been there.
But to speak as if you're authority on the matter is pretty shitty and when you deliberately hide your technical skills it's very shitty.
Afaik he is cyber security expert -> it's not related to writing code
Imo technical skills doesn't mean programming skills
Which was also greatly over exaggerated, and he wouldn't correct others who misunderstood his actual role and skills, accepts titles of much more technical roles.
His cyber security skills were about getting people to click phishing emails, and testing locked doors and windows, roles that do have value in the field, but a "expert" you give you their actual title in the domain. Like Social Engineering Specialist or Physical Penetration Tester.
It wasn't even game development.
Because he's trying to pretend that it is, and used it to project a false authority while trashing SKG. So that's pissed a lot of people off.
Bro you people are fucking obsessed with this guy
What video are all these screenshots from?
Probably streams
Why are we doing this now?
I understand he's put himself in a shitty position, but these code review posts make no sense to me.
This man has more haters than any politician
Life priority I suppose.
You answered your own question. People want to dunk on him because of StopKillingGames. If that had never happened, nowhere near as many people would be giving a shit.
We should have simply countered his thoughtless opinions with our own ideas.
Instead, the community is tearing him down in an even more toxic way than he ever was with his behavior.
It makes no sense. In Italy, we say, “two wrongs don’t make a right.”
Many comments aren't even reviewing his code. I've read on multiple posts of this image why he's not using booleans instead of 0 and 1. If people actually looked at the code they'd see, that many lines have more than 2 possible states so a boolean wouldn't make sense.
I realize that, but what's driving me crazy here is: why do we even care if he's a great programmer or a mediocre one?
The community is acting in the most illogical way possible, with this toxicity (the kind they’d usually blame him for) that we could easily do without. We should be criticizing his actual positions instead, but no, fallacy-driven argumentum ad hominem, just like politicians. That’s how low we’ve sunk.
While the internet has its good sides, overall it is a toxic shithole. Especially on any kind of social media (including Reddit). We are long past actual criticism. People just want to jump on the hate train. It got so far that he was swatted lately because of Stop Killing Games.
AAAAAAAAAAAAAAAAAAAAAGH
IIRC, the idea behind this is to make the game easy to datamine. That array is the whole save file.
As a long-time user of GameMaker, if I had a nickel for every time a high-profile game developer revealed their GML code and it turned out to be full of bad and outdated practices from 14 years ago, I'd have two nickels. It isn't much, but it's funny that it happened twice.
I know there are professional GameMaker developers out there who write great GML code; I've seen their open-sourced libraries and tools for GameMaker.
He has experience, but not as a programmer.
He's been making a single game that's never left early development for over a decade despite an abundance of crowdfunding income
It's true what they say. You either publish a Concerned Ape, or you develop long enough to see yourself become a Yandere Dev
I didnt believe you when I read heartbound was still in early access. I thought that shit had been out for years.
Well, he's just talking about games instead of making one, so it's no surprise there is little progress.
Makes more money yapping than making lol. It's okay, scrum masters are the same way.
As someone working on an RPG in gamemaker myself I can see how this massive array happened! When you are having to track so much information about the game state its really tempting and sometimes easier and more flexible to just save it all to an array and call it a day. I don't think this is neat or elegant but for an rpg I dont think its terrible. As someone who started off with pokemon rom hacking this is also how the gen 3 games work - Global flags used to indicate progression.
The problem is this isn’t terrible if he actually assigned a proper static const definition so it could be called from anywhere.
But it’s not, ITS JUST A FUCKING NORMAL ARRAY
Spent the entire 20 years writing this one array lol
I would guess what he is doing is storing all possible dialogue options in an array and referencing the storyline_array[index] of said dialogue to see if it has been run before by checking if it is 0 or 1, but why would he set them one by one, and why structure it like this to begin with?
By the looks of it, because the documentation is in that same file, to the side for some reason. Max is 120 symbols per line for me personally, this is madness, who reads code like that?
I've been sick of this guy for a long time now.
Also wasn't this literally what he criticized Toby Fox for doing in Undertale? And that it was a "You don't need to be good at coding to make a game"?
Damn that's actually crazy, I'm an indie dev myself and even if you're a programmer newbie it's much more scalable to spin up a mysql db in your game for dialogue/flag management than this abomination. To be fair, Toby Fox did similar in Undertale and Yandere Simulator is also quite the codebase, but they didn't mana gem and chud the internet perpetually.
Legit question: Why would you want to use a Database for what seems to be integer gameflags in GameMaker no less? Honestly that seems over the top for what it is.
Well... It's kinda documented at least...
Pretty bold of you to post this on your main account
Dude still has a game on steam that I imagine has sold and made money. I ain't got that much. So I'm not going to shit too hard but damn you'd think he would have stopped and said "damn there has to be a better way".
I mean if he is gonna copy Toby Fox he is doing this part brilliantly.
I mean, I kinda get(?) why he is doing this, as [0,0,0,0,0,0,0,0] gets confusing real fast, but then again, you could just do something like:
[
0, // Property 1
0, // Property 2
0, // Property 3
...
]
But then also, it's harder for him to keep track of the index, and could easily shift one by accident, creating havoc within the entire array.
Is there any better way, or am I just being stupid?
In GML, you would simply init the array with a built-in function, and use enums to set the values, they number themselves starting from 0, so you don't need to care about the actual values.
As a new and inexperienced developer, how would you actually implement this if you were wanting to track a lot of this?
If you are going to use an array in GML, then use enums, not number literals for the index.
Having getters/setters instead of direct access makes sure that you aren't putting in an invalid value.
Imagine if there was a way to, iono, loop the assignment of vars for Pete’s sake
Imagine if there was a build-in function to init arrays.
there’s perfect code and there’s shipped code
Shipped? Isn't his game unfinished?
And perfect code, in GML? We don't even get to have namespaces.
can someone explain this to me in minecraft/warframe terms (not a programmer)
He set hundreds of chests manually when he could have just used a simple command, and he marked the chests “Chest #1”, “Chest #2”, “Chest #3” with an explenation somewhere else what actually belongs in them.
Watch out, 0.1x dev comin' through
Imagine removing a option here and refactoring this...
I'm having a flashback to uni, where a guy asked for help, I sat down, he was saying he wrote game mods so I was worried I wouldn't be able to follow, I open the file, I am greeted with like 50 if then else blocks.
I'd be less aghast if it wasn't for a programming class that was for 2nd year students
Did you know he worked for Blizzard? Those floors didn't mop themselves!
I hope this isn’t C, otherwise we just use memset over here
It’s GameMaker, the language is… unique, and quite limiting in some ways. You don’t always get to write code you want, but have to write how it wants
I have no knowledge at all about game engines and other things that are like game engines.
I assume default initialization of arrays isn’t a thing game maker supports?
It’s C like, but not wanting to expose C, and acts more like Basic (everything is global), but also wants to be “simple and easy to use” like Lua. Add in the fact that’s it’s changed over the years, and his core project is old (as old as his channel iirc), so may have been written before some of those language features existed. I am not defending him, or this code, I’m just saying GML isn’t a general purpose language you get to write “clean” golf level code in. You can’t really apply “good standards” to something in GML
Yeah.... That's pretty bad
A 2d array would work here, with storyline_array[LOCATION][STATE] if I were to do things this way. This seems the obvious way to go, given how the comments are structured. As has been mentioned, enums would be better than magic numbers and just using a for loop if you can't guarantee all arrays are initalized to zero but I don't know that much about GML.
He’s like Yandev trying to be an ASMR streamer what the fuck
Is he trolling or has he never heard of loops??
I think this is fine for a story based game
Obviously you can optimise it but this is probably what I'll get too if I'm building this. At most ill put in a reminder somewhere to improve it later
None of this would be an issue if he would actually admit to not being a very good programmer. The problem is he has people who are objectively better at programming than him picking apart his code, and instead of taking their criticisms, he tries to twist everything into "this is the best possible way to write this code for what I'm trying to do." In his eyes, he's not wrong.
Is bro yandere dev?
Actually worse than YanDev lmao
Maybe he did this so that he can have the documentation on the side?
At line 200 you would think that there is a better way to do this
That's where the 20years come from, once he finished enumerating everything like that, a few years already passed.
In a way this is fascinating, answer the question: "what would have happened if I never scraped that first toy project I made when I was a teenager". This.
Even if it’s a class or a dictionary type thing
Database with stored procedures
Excel with descriptive cells
lmao brings back memories when I used to keep a SMB client head above water with their Access-based dispatch system holy moley lol
I professionally used access at a school system where someone setup access to a student system to get data for reporting
Nope lgtm
Idk, I feel like at around 10-15 you'd surely start thinking of other methods lol
I assumed it was generated. It is generated, isn't it?
I'm pretty sure it is not
Even if it was generated, it would be way less useful than actual proper code.
Did you add an extra 0?
Or sometimes you just push though and release the game. There are people that spend years polishing the code while never releasing anything. And then there are people that just write whatever works, release and move on to the next project.
People were pointing at random stuff like this in the Balatro code, yet the game is an award winning commercial success.
Okay but this game has been delayed like 5+years now
Well, if you write code like this and not release, then it is a time for some introspection.
Allegedly this is bad on purpose for the ARG component of the game.
The true game is coding the game yourself
Man, at line 7, not 200. I would go insane lol