ProgrammerHumor

twentyYearsOfExperience

twentyYearsOfExperience
https://i.redd.it/8qqdvca9ricf1.jpeg
Reddit

Discussion

ProgrammerHumor-ModTeam
:ath:

Your submission was removed for the following reason:

Rule 1: Your post does not make a proper attempt at humor, or is very vaguely trying to be humorous. There must be a joke or meme that requires programming knowledge, experience, or practice to be understood or relatable. For more serious subreddits, please see the sidebar recommendations.

If you disagree with this removal, you can appeal by sending us a modmail.

4 hours ago
isfil369

At line 200 you would think that there is a better way to do this

13 hours ago
elmanoucko

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.

12 hours ago
Prestigious-Ad-2876

Sunk 8 - 9 years and kickstarted* the game around 2 years ago.

I think he hit a wall of, if he releases the game, it's proof he is a fraud who doesn't have the skill he claims, but if it's never finished, he can claim it's not done.

He has been Twitch Famous and made a lot of money for so long that he had the ability to outsource the production.

That would have been a move he could even play off as "I wanted to focus on writing and story direction".

6 hours ago
BoRIS_the_WiZARD

Well yeah his daddy got him hired at blizzard. Couldnt hack it so he left thinking he was better.

6 hours ago
lenn_eavy

eWxactly, a person needs to recognize when good enough is good enough and it's time to move on to the next thing with new bits of knowledge.

5 hours ago
zenverak

Even if it’s a class or a dictionary type thing

13 hours ago
pangapingus

Database with stored procedures

12 hours ago
zenverak

Excel with descriptive cells

12 hours ago
pangapingus

lmao brings back memories when I used to keep a SMB client head above water with their Access-based dispatch system holy moley lol

12 hours ago
zenverak

I professionally used access at a school system where someone setup access to a student system to get data for reporting

12 hours ago
jester32

Nope lgtm 

12 hours ago
All0utWar

Idk, I feel like at around 10-15 you'd surely start thinking of other methods lol

9 hours ago
KhorneFlakesOfChaos
:py:

Did you add an extra 0?

10 hours ago
card-board-board

I assumed it was generated. It is generated, isn't it?

12 hours ago
Papellll

I'm pretty sure it is not

11 hours ago
jpec342
:sw:

Even if it was generated, it would be way less useful than actual proper code.

10 hours ago
AlexTaradov

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.

8 hours ago
mxve_

Okay but this game has been delayed like 5+years now

7 hours ago
AlexTaradov

Well, if you write code like this and not release, then it is a time for some introspection.

7 hours ago
henryeaterofpies

Allegedly this is bad on purpose for the ARG component of the game.

10 hours ago
Doraiaky

The true game is coding the game yourself

8 hours ago
riztazz
:cp:

Man, at line 7, not 200. I would go insane lol

7 hours ago
why_1337
:cs:

That's loser mentality, you have to push through!

6 hours ago
NnasT
:cp::cs::js::j::unity::unreal:

Omg true 😂😂 the point of no return

5 hours ago
Kaenguruu-Dev
:cs::gd::py:

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

14 hours ago
Caerullean

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.

13 hours ago
Papellll

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

11 hours ago
ZeGaskMask

It’s completely different here because he’s attempting to fake a talent he doesn’t have

10 hours ago
tee_with_marie

I feels like i am getting wooshed here

Wasn't the same true for his wow and other dramas?

8 hours ago
Critical-Exam-2702

Is he really?
I just remember one short of him saying something like "you don't need to be good at coding to create games, the code base for my game is shit"

6 hours ago
XanderTheMander

Probably because most people didn't know who he was until the while Stop Killing Games thing.

11 hours ago
HexKernelZero

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. 😅

11 hours ago
Ursomrano
:asm::c::cp::cs::py::m:

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.

11 hours ago
new_account_wh0_dis

I guess cause he feeds them by responding and doubling down on his stuff. I think some people made it their mission to crack his ego, which God speed to them but idk if the hate watchers will get bored before his ego goes.

7 hours ago
earthboundskyfree

My best guess is that narcissistic tendencies really amp things up for people

9 hours ago
Czexan
:sv:

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.

9 hours ago
cien2

He actively misinterpret and spread misinfornation about a pro-consumer movement.

People who disagreed with his take and moved on did that when he released 2 vids of anti-SKG several months ago. The result? SKG was in danger of not reaching quota. It only turned around because Ross made the SKG vid calling out PS and confronting PS' lies

Ignore and continye to let him spread misinfornation? Thats what Ross have been doing. It hurt the movement. People like PS should not be let loose spreading lies and misinformation however they like. People like PS should be discouraged from making such statements, which from his responses, he does not. He quadrupled down on his lies which made people piling on him. Had he conceded that he misunderstood the movement, this wouldnt drag on like today.

This is such a virtue-signalling take. This aint it, chief.

5 hours ago
Suspicious-Swing951

There were posts about him here before, but they would get downvoted into oblivion because "he's so wholesome"

9 hours ago
Sinantrarion

Posts about his coding are because yesterday or like, 2 days ago, there was a video reviewing and shitting on and fixing his code.

7 hours ago
nottherealneal

13 hours ago
imdefinitelywong

13 hours ago
ItABoye
:c:

Just gotta wait untill enough people start their freshman year of compsci, then we'll go back to normal

11 hours ago
Thebluecane

13 hours ago
gcstr

I'm sorry, but that's fun

12 hours ago
Ravesoull

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.

14 hours ago
looksLikeImOnTop

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

10 hours ago
Wicam
:cp:

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.

10 hours ago
Tomahawkist

why does steam do that? he clearly is working on it

4 hours ago
Gustheanimal

His ego is too big to allow himself getting exposure this way

6 hours ago
BetaChunks

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.

13 hours ago
punio07
:cs:

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.

7 hours ago
beclops
:sw:

That’s the only thing you’d insist on changing?

8 hours ago
SiOD

Or you know, use a SQLite database like a normal person.

10 hours ago
Kyy7
:j::cs::py:

You should not really use SQLite for something like this with games as these are variables that you need blazing fast and easy access to. Doing file-reads and sql-queries for something like this is no go.

One thing one would use databse like SQlite for in gaming is saving progress, like world state in a huge open world rpg but even for those it's usually just json, yaml or some custom data format.

7 hours ago
jpglew

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

8 hours ago
CuterThanYourCousin

What's SQL? Is it a Java thing? You know I only code in C++, because I'm better like that

9 hours ago
Embarrassed_Jerk

C++? Like C PLUS PLUS? Nah bro, you need to program only and only in C for like the best experience 

8 hours ago
i_wear_green_pants

I only code in C-- and write straight to byte code. Who needs any fancy C features or compiler?

7 hours ago
new_account_wh0_dis

Not my area but I'm I kinda are normal people developing on game maker are pulling in SQLite for their savefiles/game state?

Someone who has seen more than 5 lines of his code can correct me if I'm wrong but I assume he has it set up like this cause his save/load are just serializing the array so this is the only place that actually will tell you which gamestate variable does what. Better way to do it with struct or dictionary would make the code more readable in other files but is this really as cursed as everyone is making it out to be?

Funny note that a quick google brings up that someone posted a question about this exact thing spawned from another thread from here about his related code

https://www.reddit.com/r/gamedev/s/kKNmBrQpzE

6 hours ago
abuzer2000

This is the second time I'm seeing this suggestion in this sub. You are all just braindead or don't know what you are talking about.

DO NOT EVER USE SQL FOR GAME MECHANICS!!!

5 hours ago
akoOfIxtall
:cs::ts::c:

THE NUMBERS MAN, WHAT DO THEY MEAN??!?

14 hours ago
ReplacementLow6704

Mason*

14 hours ago
akoOfIxtall
:cs::ts::c:

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!?!?

14 hours ago
Dieterlan

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

13 hours ago
RandomNPC

If he used enums he wouldn't need those comments.

13 hours ago
Winderkorffin

Enums aren't a good solution either. He should've used a map.

13 hours ago
Castiel_Engels

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.)

11 hours ago
RandomNPC

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.

13 hours ago
Dieterlan

Yes

13 hours ago
sparksen

It's right there in the comment

13 hours ago
Deritatium

13 hours ago
Calogyne
:elixir-vertical_4:

What’s the context of these screenshots?

14 hours ago
Intel_Xeon_E5

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.

13 hours ago
Romanian_Breadlifts

I am so glad I go outside

11 hours ago
Animal31

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

10 hours ago
Intel_Xeon_E5

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

9 hours ago
dahpizza

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

7 hours ago
Tarasios

I'm going to take this comment as a genuine question, because it really is a fascinating look into what gets popular on the internet and what draws people's attention.

The guy in the picture several million subscribers and was prolific on youtube. He presented himself as an expert game developer with years of professional experience. A lot of his videos were false, or worse, half true. Over time, more and more people who actually knew about the things this guy was talking about realized he was full of shit.

This built up quietly, as nobody was going to try to attack a "big influencer". That is, until he was in the middle of some wow drama where he was extremely clearly and obviously in the wrong and yet he refused to acknowledge any wrongdoing. It was so blatant that people had the chance to come out of the woodwork with all kinds of takedowns.

This became very popular content because the guy kept doubling down massively on anything he was called out for. It could be something like... Alright made up scenario for illustrative purposes but say this guy trips over a wire. He starts ranting and raving about "whoever put that wire there is a fucking idiot" for 10 minutes, vowing revenge. Then someone shows him the clip of he himself placing the wire there. Immediately he backtracks saying "no actually I was right to put it there".

You'll have seen it a lot more over the past month or so due to a European initiative "stop killing games". The movement had its initial momentum totally killed when the guy attacked it back when he was more well regarded. He spread false information about the initiative, and in June as it was nearing the end date, people used the guy's infamy to bring momentum back to the initiative.

It's so consistent and so blatant, and now people with professional experience get to have a field day of content debunking his BS. And people flock to it because the guy is so conceited that they enjoy hearing about his failures.

Which is what the internet calls a "lolcow".

4 hours ago
Even-Environment6905

The „coding Jesus“ guy who did the review is also ass at coding. Pretty sure coding YouTube is just unemployed ppl and grifters 💀

5 hours ago
19_ThrowAway_
:cp:

It's code for his game Heartbound

14 hours ago
Mr_Engineering

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.

13 hours ago
GobiPLX

New spaghetti code game so we don't have to laugh at Yandere Simulator for the next 10 years? Nice

14 hours ago
kitty-_cat

I thought this was Yandere Sim before reading the comments lol

7 hours ago
AnimateBow

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)

14 hours ago
SpectreFromTheGods

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

14 hours ago
usethedebugger

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.

13 hours ago
Sw429
:rust:

I assume he can just add new ones to the end of the array regardless of where they fall in the story, right?

11 hours ago
usethedebugger

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

11 hours ago
Animal31

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

10 hours ago
usethedebugger

No it isn't, what are you talking about? Is everyone in this subreddit still in undergrad? This is a remarkably inefficient solution that nobody with any actual experience would implement lmao. Toby Fox got away with it because it was his first game. Storing everything in a single array means you have zero remnants of a clue of what you're doing.

10 hours ago
Animal31

You literally just claimed the distance between two events is what contributes to the difficulty

Can you even read?

10 hours ago
Animal31

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

10 hours ago
usethedebugger

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.

10 hours ago
Kyy7
:j::cs::py:

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)

For extra flexibility one could use named integer constants instead of enums as enums can't be changed during runtime (modding). But generally I've seen strings to be used for something like this as dictionary uses hashing for strings anyways unless gamemaker is some sort of anomaly.

The fact that he seems to be usign array is probably the worst mistake as with dictionaries you don't have to really initialize values like this. Just implement some lazy-init for values or return something like -1 for values that are missing from the dictionary.

6 hours ago
Kika-kun

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.

14 hours ago
sarc-tastic

Also you just init the whole story array to zero rather than on multiple separate lines

13 hours ago
Kika-kun

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.

13 hours ago
Animal31

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

10 hours ago
Ok-Okay-Oak-Hay

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?

12 hours ago
Mtsukino
:cs:

int POOL_DID_WE_SAY_NO_TO_JOE = 200;

Poor Joe.

12 hours ago
Chitoge4Laifu

Or store the text/scene in a file format????? And separate the rendering????

9 hours ago
Cryn0n
:c:

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.

14 hours ago
MajorTechnology8827
:hsk:

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

12 hours ago
ReneKiller

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.

12 hours ago
marrone12

Static typing where you create classes with predefined properties and types.

8 hours ago
Middle_Mango_566

Wasn’t he a QA tester at blizzard, I wouldn’t expect him to be a skilled programmer 

13 hours ago
coolraiman2

Looks like someone fresh out of a boot camp

14 hours ago
HedgeFlounder
:c::py::js::cs::unity:

Even bootcamps teach you how to use for loops.

11 hours ago
Castiel_Engels

You would be a fool to use a for loop here, the engine has a built-in function for this which will be faster.

11 hours ago
new_account_wh0_dis

I assume that this is the only place where the actual game state values are. Remove it and wonder what flag 267 represents. At some point regardless of design there will have to be a line telling you how to access the players decision on something.

I guess he could do a for loop and just have all the comments below. Save a few KBs assuming the compiler doesn't catch patterns. But like at the end of the day I'm not even sure the lack of a for loop is the big issue here.

6 hours ago
Scalar_Ng_Bayan

You cant put comments on what each index means though /s

11 hours ago
mstop4
:ts::js::gml::bash:

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.

12 hours ago
weneedtogodanker

Gamedev experience is not programming experience

Why everyone acting like it's same thing

14 hours ago
P_G_12

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

14 hours ago
dontfretlove
:cp::cs::js::lua:

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.

13 hours ago
Illustrious-Age7342

Because some things are obviously bad, regardless of context

14 hours ago
Caubelles

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.

14 hours ago
BalefulRemedy

He said he was a hacker for gov...

14 hours ago
arsenicx2

By hacker, he means he did social engineering.

14 hours ago
Zafara1
:py::js::g::rust:

And by social engineering it means he ran their internal phishing testing tools.

13 hours ago
jyajay2

To be fair security is often even less like programming.

14 hours ago
dark_zalgo

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.

14 hours ago
Zanish

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.

13 hours ago
weneedtogodanker

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...

14 hours ago
RunicWhim2

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.

13 hours ago
fallenmonk

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.

13 hours ago
felipec
:c:

It wasn't even game development.

13 hours ago
Shazvox
:cs::js::ts:

Yeah, It's taken me a while to realize why so many games are so goddamn basic and boring (pretty, sure. But still basic and boring).

7 hours ago
Fusseldieb
:js: :py: :msl: :cp: :p: :bash:

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?

12 hours ago
Castiel_Engels

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.

11 hours ago
ThatOldAndroid

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.

13 hours ago
Castiel_Engels

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.

10 hours ago
Xizzan

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.

13 hours ago
ProfessorBorden

This man has more haters than any politician

13 hours ago
Xizzan

Life priority I suppose.

13 hours ago
ReneKiller

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.

12 hours ago
Xizzan

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.

12 hours ago
ReneKiller

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.

12 hours ago
SKabanov

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.

13 hours ago
Xizzan

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.”

13 hours ago
IndividualZucchini74

>"We should have simply countered his thoughtless opinions with our own ideas"

they did. He then proceeded to double down.

There's no helping it with some people, so might as well just mock them.

11 hours ago
SVlad_667

What video are all these screenshots from?

14 hours ago
Penguinmanereikel
:py::js::gd::ts::msl::j:

Probably streams

14 hours ago
Animal31

Bro you people are fucking obsessed with this guy

10 hours ago
Relative-Meeting-442

AAAAAAAAAAAAAAAAAAAAAGH

13 hours ago
snowmanonaraindeer

IIRC, the idea behind this is to make the game easy to datamine. That array is the whole save file.

13 hours ago
EmiliaPlanCo

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

9 hours ago
boboshoes

I would rather this than oop inheritance hell or some other bs. I at least I know what this means

11 hours ago
Arandui

He has experience, but not as a programmer.

14 hours ago
Penguinmanereikel
:py::js::gd::ts::msl::j:

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

14 hours ago
bulldoggamer

I didnt believe you when I read heartbound was still in early access. I thought that shit had been out for years.

13 hours ago
Arandui

Well, he's just talking about games instead of making one, so it's no surprise there is little progress.

14 hours ago
Fuehnix

Makes more money yapping than making lol. It's okay, scrum masters are the same way.

13 hours ago
tetzudo

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"?

12 hours ago
flapperultra23

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.

12 hours ago
StaticVoidMaddy

Spent the entire 20 years writing this one array lol

8 hours ago
differentshade

Looking at the code, I kind of believe it took 20 years.

7 hours ago
usethedebugger

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.

13 hours ago
Zestyclose_Zone_9253

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?

13 hours ago
Castiel_Engels

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?

10 hours ago
ItsTheJStaff

Well... It's kinda documented at least...

12 hours ago
Highlight448

Pretty bold of you to post this on your main account

12 hours ago
Sculptor_of_man

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".

12 hours ago
Castiel_Engels

I mean if he is gonna copy Toby Fox he is doing this part brilliantly.

10 hours ago
TheModernDespot

As a new and inexperienced developer, how would you actually implement this if you were wanting to track a lot of this?

11 hours ago
Castiel_Engels

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.

11 hours ago
CMD_BLOCK

Imagine if there was a way to, iono, loop the assignment of vars for Pete’s sake

11 hours ago
Castiel_Engels

Imagine if there was a build-in function to init arrays.

11 hours ago
baza-prime

can someone explain this to me in minecraft/warframe terms (not a programmer)

10 hours ago
Castiel_Engels

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.

10 hours ago
lmg1337

Watch out, 0.1x dev comin' through

10 hours ago
SnooStories251

Imagine removing a option here and refactoring this...

10 hours ago
Drakeskywing

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

9 hours ago
TrashManufacturer
:rust:

I hope this isn’t C, otherwise we just use memset over here

9 hours ago
Uberfuzzy

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

9 hours ago
TrashManufacturer
:rust:

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?

9 hours ago
Uberfuzzy

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

9 hours ago
blueeyeswhiteboomer

Yeah.... That's pretty bad

9 hours ago
MaleficentContest993

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.

8 hours ago
squabbledMC

He’s like Yandev trying to be an ASMR streamer what the fuck

8 hours ago
Glittering-Wolf2643

Is he trolling or has he never heard of loops??

8 hours ago
Rudresh27
:py:

YandereDev face reveal?

7 hours ago
Prestigious_Tie4861

At least it has comments

7 hours ago
Desperate-Tomatillo7

I'm out of the loop. What is this meme trend?

6 hours ago
Streakflash

what is this and who is this?

6 hours ago
BBY256
:unity::cs::cp:

if(ip == "0.0.0.0") { return 0; } // Not a hacker
if(ip == "0.0.0.1") { return 0; } // Not a hacker
if(ip == "0.0.0.2") { return 0; } // Not a hacker
if(ip == "0.0.0.3") { return 0; } // Not a hacker
if(ip == "0.0.0.4") { return 0; } // Not a hacker
if(ip == "0.0.0.5") { return 0; } // Not a hacker
...

6 hours ago
thenamesammaris

Yandere Dev 2: Electric Boogaloo

6 hours ago
Pwoinklokinoid
:cs:

I called him out last year and someone went proper white knight defending him… like I could spend 20 years in a garage dosent make me a mechanic. It’s just painful when you see his code, I think at this rate he should just vibe code.

6 hours ago
RB-44
:cp:

This wouldn't be as bad if he didn't use magic numbers

6 hours ago
DigBick6996

would take him 20years to do this in Baldurs Gate 3 LOL

6 hours ago
OvisInteritus

is this vibe coding?

5 hours ago
DT-Sodium

What are you expecting from someone working on GameMaker exactly?

5 hours ago
TheRealRory

Even the comments are confusing as fuck

"Did we say No to Joe 0/1/2 = Not yet/No/Yes"

So is 1 No we didn't say no we said yes, or is it we said No?

5 hours ago
ardicli2000

What happened to json, xml, db or even assoc arrays?

5 hours ago