ProgrammerHumor

weCouldNeverTrackDownWhatWasCausingPerformanceIssues

weCouldNeverTrackDownWhatWasCausingPerformanceIssues
https://i.redd.it/n8kzet2gy3df1.png
Reddit

Discussion

MiniCactpotBroker

wait a moment, is this code real? looks like he checks collision for every point of sprite twice? once is stupid, but twice? dude doubles down even in code

14 hours ago
Brilliant_Lobster213 OP

It's used for some gradient objects and lightning effects in Heartbound. And yes those are collision checks happening for every pixel across the sprite, a 100x100 sprite becomes 10,000 collision checks every frame

14 hours ago
stamatt45

What in the actual fuck

14 hours ago
SignoreBanana
:js::ts::py::ru::j:

Lmao what's optimization

13 hours ago
lIlIlIIlIIIlIIIIIl

I optimized it by throwing more hardware at the issue

13 hours ago
shadowndacorner

It runs slowly on some machines. We have no idea why. Don't ask us what a profiler is.

12 hours ago
joemckie

Minimum specs: a quantum computer

6 hours ago
the_TIGEEER

And instead of being just like "Oh yeah guys that's a good catch I could have done that better ahha seems I rushed that a bit I'll add it to my backlog to optimize it but I have some other things I prioritize now" what he instead said was "It's good enough.. The game runs fast enough so my implementation is completely valid since it runs fast with it.."

3 hours ago
Relative-Scholar-147

What does O(n) even mean... Do you think I would I get hired at Blizzard?

13 hours ago
abermea

Spoiler alert: he wasn't a dev, he was one of the guys who would ban you for cheating in WoW

11 hours ago
seires-t

It's called a janitor

10 hours ago
abermea

At least he didn't do it for free (I hope)

9 hours ago
Rei1556

does your father works at and is one of the founders of blizzard? if the answer is no then no

12 hours ago
Mabot

for a total noob like me, what would an optimization for this look like?

12 hours ago
abermea

I would put a bigger bouding box around the entire sprite, no need to check for collisions if other objects are not close

Then maybe I would devise a way to figure out where another object is coming from and I would only test pixels that are close to it

Also I would create a map that only has the outline of the sprite so I only test against the border

So I would reduce 10,000 checks to maybe 30 per frame

11 hours ago
ChrisFromIT

I could be wrong, but likely there is already a bounding box check done and this is ran on the objects that passed the bounding box check, hence why there is the object_index value.

And this part of the code is just doing a line scan on the x axis until a collision with said object to light that object for a set gradient so that the object can cast a shadow and only one face of the object is lit.

Looking at the code available to work with sprites in Game Maker Studio, it honestly looks like that these checks are being done on pixels close to the sprite to begin with. Only optimization that could really be done at this point is to make sure that there isn't any padding for the sprites and maybe have multiple box colliders if possible.

But if Game Maker Studio had a proper sprite API where you could get the color of a pixel in a sprite, I would probably include an additional sprite for each render sprite that would have the coordinate of the first non transparent pixel for each line along the x axis and then just read that pixel for each line to get that pixel coordinate instead of having to do collision tests. This second sprite could be created during the loading process or during sprite creation or during game building.

But Game Maker Studio doesn't have a performant method to fetch pixel data from sprites. So my optimization and yours with the map of the outline of the sprite is not possible. Mind you, as I said, it looks like your optimization is what is actually be ran in Thor's code, tho it is having to check against a collision mask instead of the actual pixels of the sprite.

10 hours ago
abermea

That's actually interesting. I wasn't aware this is how GameMaker works

Maybe the only optimization possible then is to do a QST so you test on progressively smaller cuadrants until you get a hit? So you do 4 checks and then another 4 but only if you get a hit in any of them and so on...on a 100x100 sprite you would get the exact collision pixel on 6 checks

9 hours ago
ChrisFromIT

Well thinking about it, it seems that the lighting algorithm is a left or right edge detector based on light direction. I see what you are saying, essentially a binary search per line until the pixel collision is found. That is one way to do it.

Personally, I would move it fully onto the GPU and in the fragment/pixel shader for the sprite, do 5 samples or how many samples required for the shading to the left or right of the pixel depending on the light direction and count how many samples have color in them and then do the lighting fall off based on the count.

Bit heavier computationally, but it is highly parallelized and on the GPU which is what the GPU is for.

9 hours ago
StrangeCurry1

An easy optimisation would be to use gamemakers built in lighting and shader functions

He is doing everything manually in an insanely stupid way

12 hours ago
zabby39103

Wow. This kids, is why you don't try to re-invent the wheel unless you really, really know what you're doing.

12 hours ago
Versaiteis
:cp::py:

Nonsense, reinventing the wheel is a great way to learn how the wheel works and what goes into making one.

A handmade wheel probably isn't the best thing to attach to your car in production though...

11 hours ago
SartenSinAceite

There's a difference between reinventing the wheel to learn and reinventing the wheel cause you think you're hot shit.

10 hours ago
Versaiteis
:cp::py:

Eh, those aren't mutually exclusive. I've certainly done my fair share of bullshit thinking I was slick. Sometimes it works out, sometimes it blows up in my face. Really I've learned more from the latter, but learning is itself a skill.

As far as I'm concerned it doesn't really matter up to the point where you're attempting to slip it into production.

10 hours ago
ChrisFromIT

The thing is, Game maker studio doesn't have a built in lighting engine, so u/StrangeCurry1 is wrong in that he could use the built in lighting, since it doesn't actually exist.

11 hours ago
ChrisFromIT

Game maker studio doesn't have a built in lighting engine.

11 hours ago
adenzerda

If you can express a good enough approximate collision area as a bounding box, all you need to do is check x and y values of possible collisions. 2 checks

10 hours ago
MiniCactpotBroker

13 hours ago
ChrisFromIT

>It's used for some gradient objects and lightning effects in Heartbound.

Also for shadows.

And yes those are collision checks happening for every pixel across the sprite, a 100x100 sprite becomes 10,000 collision checks every frame

Close, it runs the check along the x axis until it finds a collision and then moves to the next line. This is done for doing shadows. Not the best solution for it. But the solution given in the Code Jesus doesn't do shadows, it just handles lighting things inside the light bounds.

11 hours ago
Oscar_Geare

Reviewed here with alternative implementations proposed: https://youtu.be/jDB49s7Naww

11 hours ago
BadSmash4
:bash::cs::cp::c::vb::py:

Holy shit that is completely insane

12 hours ago
Nooby1990
:py::g::c:

Not 100% sure if that code is real, but I would not be surprised. Every single time I have seen code from this "20 Year industry veteran" is of this kind of intern tier quality.

14 hours ago
knobby_tires

I just saw this snippet in a youtube video and apparently it is a part of an open source demo he released a while back

14 hours ago
zabby39103

Literally the worst code I have ever seen from a big name social that casts themselves as an expert. There's so many better influencers. Someone like primeagen is much better, I don't agree with everything he says but you can tell that he knows how to code and I'm interested in his opinion.

This guy is just like toilet code, you could actually get worse at programming by listening to him.

12 hours ago
MiniCactpotBroker

Me neither. I was making negative comments about him even before SKG and people were downvoting or arguing me constantly. Some things he was talking about gamedev or programming were not true, some of his tips could be even harmful.

13 hours ago
Suspicious-Swing951

Give our interns a little credit. I would call it highschool student tier.

10 hours ago
Weasel_Town
:j::py::msl::g::kt:

Yeah, everyone's mocking his personality, meanwhile I'm staring in horror at this quadruply-nested loop for something which I think doesn't need to be a loop at all. If I understand this correctly, you're checking whether two rectangles overlap, which can be done in O(1) time.

13 hours ago
StrangeCurry1

It seems like hes also manually implementing some sort of shader at the same time instead of using gamemakers built in shader functions.

This is multiple levels of shitty code

12 hours ago
Suspicious-Swing951

His excuse is he didn't use shaders so it would run better with integrated graphics. Not even joking.

10 hours ago
spyingwind

No excuse when GameMaker supports GLSL. Pick a version to make your shader in. OpenGL 2.0 shaders where released in 30 April 2004 and OpenGL 4.6 was released in 14 June 2018.

In my games I use 3.3 just so that I know it will work on nearly everything.

9 hours ago
stresslvl0

Aaaand now it’s using 8x cpu

9 hours ago
iknewaguytwice
:js:

We’ve had one collision, yes. But what about second collision?

14 hours ago
MiniCactpotBroker

maybe anticheat

13 hours ago
iveriad

From what I see, it looks like a code that could've been a shader in Unity.

But I'm not familiar with Game Maker.

12 hours ago
FlukyS

Ah just to be sure you know how it is

12 hours ago
arc_medic_trooper
:cs:

If you care to read more of whats written on the left, he goes on to tell you that over 60fps, game runs faster, as in that physics are tied to fps in the game, in the year 2025.

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

GameMaker still ties game logic, physics, and rendering to the same loop, which is unfortunately a relic of its own past. You can use delta time and the new time sources to make things like movement and scheduling things run consistently at different framerates, but you can't really decouple those three things from each other.

One story I like to tell is how Hyper Light Drifter (made with GameMaker) was intially hardcoded to run at 30FPS. When they had to update the game to run at 60FPS, they basically had to manually readjust everything (movement, timings, etc.) to get it to work.

14 hours ago
coldnebo
:ru::js::j::cs::cp:

it’s actually a very common implementation in game engines. decoupling physics from fps is a bit more complicated… the naive thing is to use the system time, but you quickly find that this has very poor precision for action games. so you need a high resolution timer. but then you have to deal with scheduling imprecision and conservation wrappers around your physics or things blow up right when you get a little lag from discord or antivirus, etc. (basically your jump at 5 pps suddenly registers 2 seconds and you get a bigger jump than game designers factored for. so you clamp everything— but then you aren’t really running realtime physics.)

there can be legit reasons to lock it to fps.

13 hours ago
Dylan16807

You get almost all the benefits by locking your physics to a rate. That rate doesn't have to have any connection to your frames. For example you can run physics at a fixed 75Hz while your fps floats anywhere between 20 and 500.

11 hours ago
Wall_of_Force

if physics is paused between frames wouldn't gpu just rendered same frame multiple times?

10 hours ago
BioHazardAlBatros
:cp::c::js::py:

No, you have to process animations and effects too.

10 hours ago
ok_tru

I’m not a game developer, but isn’t this what you’d typically interpolate?

6 hours ago
failedsatan

exactly. you don't really have to care about where the physics actually is because your drawing code just has to calculate the last change plus whatever has passed between the last two physics frames (very naive explanation, there are better ones anywhere you find gamedev videos/articles)

4 hours ago
quick1brahim
:cs:

Physics doesn't necessarily get paused, rather it accounts for variable frame time to produce expected results.

Imagine the first 3 frames take 0.12s, 0.13s, and 0.12s.

If your game logic is Move(1) every frame, you've now moved 3 units in 0.37s.

If the same 3 frames took 0.01s, 0.01s, 0.01s, it's still 3 units but now in 0.03s (much faster motion).

If your game logic said Move (1*deltaTime), now no matter how long each frame takes, you're going to move 1 unit per second.

9 hours ago
DaWurster

This works for simple physics calculations like speed/velocity. It's still manageable with accelerations but your physics start to become frame rate depending then. It gets really bad as soon as you add collision checks and more complex interactions. This is also why the patched 60 fps versions of Dark Souls have some collision issues for example. Even worse, effects which only occur at high performance or low performance system. The high speed "zipping" glitch which is only possible at very high frame rates in Elden Ring is such an example.

Modern game engines separate a fixed frame rate physics update and an update with variable times for stuff like animation progression. There is also physics interpolation. No collision checks here and no or limited effect of forces but continued velocity calculations. This way you don't get hard jumps between physics ticks.

7 hours ago
Dylan16807

The rendering can assume things will keep moving the same way for the next few milliseconds. The slight flaws won't be any worse than the flaws you get from a fixed framerate.

10 hours ago
Objective_Dog_4637
:j:

This is really just async programming in general. Any time you introduce parallelism or concurrency you get issues with accurately splitting up time quantums with respect to whatever process is running at really high throughputs. If there’s lag (a process taking a long time while other processes wait to use the cpu/gpu) you have to essentially backtrack processes or force them to wait, and if all of this is queued with similar lag it can quickly become a decoherent smeary mess running into race conditions or slow to a halt.

One of the best ways to handle this is to force everything to only process for a certain amount of time before it’s forced to wait for the rest to be processed, which is typically how concurrency works, but this, again, only really works until you end up with enough processes to cause all of them to slow down until enough threads are killed. Either that or you can split the work across cores and just have them all run independently of each other but this will obviously also cause problems if they depend on each other.

Then there’s the problem of who keeps track of the time? As you mentioned, you could use fps and just run everything in the render pipeline every 1/60th of a second but if your logic requires that to be fixed you end up with issues if it changes (I.e. if there’s a 1/60th buffer for an input/response but the system runs at 30fps you might drop the input because the game is expecting it to last twice as long as it actually can). You can tie it to system time but machines have issues managing time too, causing clocks to drift after a while, leading to the same problems.

This is such a huge fundamental problem that even reality itself seems to not have been able to figure it out, splitting clocks relative to scale and velocity (I.e. a fixed frame rate at quantum scales and a dynamic frame rate at relativistic scales), and preventing both from being rendered faster than the speed of light.

11 hours ago
mithie007

I'm not a games programmer so maybe I'm missing some nuance - but you don't actually *care* about the precision of the time itself, right? You're not looking for subsecond precision or trying to implement local NTP. You only care about ticks?

Can't just tie it to cpu cycles with something like QueryPerformanceCounter? Which can be precise down to microseconds?

10 hours ago
Acruid

Right, you want the simulation to target say 60 ticks/sec, but if the CPU maxes out and starts lagging, you can slow down the simulation. Nothing inside the simulation should care about how much real/wall time has passed. Stopping the ticks running is how you gracefully pause the game, while keeping things outside the simulation like the UI and input still working.

At any point inside the simulation you know how much time has passed by counting ticks, which are the atomic unit of time.

10 hours ago
SartenSinAceite

Oh so this is my usual fear of "I've been floating for 5 seconds on this rock and the game thinks I'm falling continuously, I'm gonna die"... except rather than me glitching myself into a falling state, it's a 3-second lagspike as I'm descending from a jump.

11 hours ago
Cat7o0

make sure to use Delta time right too

https://youtu.be/yGhfUcPjXuE?si=jzYc75I2qy5m7bqL

14 hours ago
Ylsid

It's a shame there's no possible way to make games on anything other than game maker

10 hours ago
Specialist_Brain841

just hit the turbo button on your pc

7 hours ago
Brilliant_Lobster213 OP

Technically the game is from 2015, its over 10 years old while not even being released yet

15 hours ago
Gaunts

Alright bud your banned from chat hope your happy

15 hours ago
Brilliant_Lobster213 OP

"Hope it was worth it bud" stretches

15 hours ago
akoOfIxtall
:cs::ts::c:

"yeah the game is not finished yet, i work hard on it every day *wink, what am i supposed to do for you?"

14 hours ago
Yumikoneko

"Yeah, Animus is 99% percent complete"

- PeePeeSoftware for half a year

I actually saw a compilation of him saying almost that very same sentence for months lmao

9 hours ago
AllTheSith

10 years withou releasing? Riot might as well buy the ip and restart with a new engine.

11 hours ago
odaiwai

We're here to chew gum and code games, and we're all out of code.

10 hours ago
StaticVoidMaddy

That makes no difference, even in the 2000 framerate-independent physics was a thing, maybe earlier but I'm not sure.

12 hours ago
Floppydisksareop

That's not necessarily an issue. It is a very common, easy way to solve these things, and frankly, for an indie game, it is more than fine. Not the first one, not the last one. Some shit is tied to FPS in games like Destiny for god's sake.

That being said, if you did decide to do it like that, just fucking cap the FPS.

14 hours ago
arc_medic_trooper
:cs:

I mean based on how arrogant he is, I’m not giving him the benefit of doubt. This mean boasted how good of a software person he is (I say person because he claims to be not just a dev).

Yeah it’s a common way to do it, yet still a bad way to do it, and definitely not the way to do it if you claim you are good at what you do.

14 hours ago
Vandrel

I'm not sure I'd hold Destiny up as a shining example of what to do. Didn't it take the devs 12+ hours just to open a level for editing in the first one? At one point they basically said they fucked up by making their Tiger engine by hacking in pieces from their old Halo engine but they did it because they didn't know how to go about recreating the feel. Bungie isn't what it once was.

13 hours ago
Floppydisksareop

Counterpoint: it works just fine.

12 hours ago
Vandrel

Their game functioning doesn't mean you shouldn't try to avoid the bad practices that caused them issues along the way and there are a lot of things they did wrong that caused them pain later. I get that you like the game but don't let that stop you from seeing the flaws.

12 hours ago
horizon_games

Just run it in DOSBox

14 hours ago
zerosCoolReturn
:cp::cs::s:

bro doesn't know what delta time is in 2025 😔

14 hours ago
arc_medic_trooper
:cs:

I would like to remind you that hes worked at Blizzard Entertainment, hes the only second gen Blizzard Entertainment worker in his family so we all should be more respectful towards him, because Blizzard Entertainment experience is really important.

13 hours ago
shadowndacorner

Note: His position was in QA.

12 hours ago
KnockAway

Some big studios are also guilty of this. Risk of Rain 2, new update by gearbox, tied everything, and I mean everything, to FPS, even mob spawns. It was as bizzare as it sounds lol.

11 hours ago
Lorguis

No, it's for the ARG, obviously. What, you think he'd make a mistake???

8 hours ago
aspindler

Lots of modern games have physical actions linked to fps. The knife in RE2 remake does more damage if you are over certain fps.

14 hours ago
arc_medic_trooper
:cs:

They do, they shouldn’t.

14 hours ago
ziptofaf

To be honest it isn't a problem for retro style games. I don't mind stable 60 fps in pixel art titles, animations are hand drawn anyway at like 4 fps and whether you have 16ms or 4ms latency is effectively irrelevant. More FPS to reduce your input lag kinda... does nothing.

So if someone takes this shortcut (or uses a game engine that just does it by default) I wouldn't really hold it against them. As long as it's running consistently at 60 fps and it's properly locked to that value. Now, if your game looks like it should run a GeForce 3 and Pentium 4 1.2GHz and yet it drops to 45 fps on a PC 100x more powerful then it's a very different story.

Admittedly some larger studios still do it to this day too and they probably shouldn't. Funniest example I know of is Dark Souls 2 - console version runs at 30 fps. PC version runs at 60. And so PC release was way harder than the console one - your weapons broke all the time, dodging certain attacks was near impossible, you got less iframes. In the newer games From Software just upped it to default to 60 but you will still have glitches if you go beyond it. For those cases I 100% agree, physics and logic should have been decoupled ages ago.

14 hours ago
arc_medic_trooper
:cs:

FromSoftware is notorious with this, and probably my biggest complaint that their games are locked to 60fps.

13 hours ago
Darux6969

yup, tried going above 60fps on ds3 and my running speed was super slow lmao

14 hours ago
Breadinator

Paging Space Engineers, paging...Space Engineers. The Clang is calling.

14 hours ago
BWoodsn2o

Famous "bug" in Quake 3 Arena and games built off of that game's engine. Physics for the game are tied to framerate and are calculated on a per-frame basis. If you limit your framerate to specific numbers (125, 250, 333) then the game would round up on specific frames, allowing players to jump higher if they were running the game at these magic framerates. The effect became more pronounced the higher your framerate was, at 333fps you were basically playing with low-grade moon physics.

There were other effects of playing with higher framerates, specifically 333fps, such as missing footsteps, better hit registration, and faster weapon firing speeds. The Q3 engine truly broke at high framerates in a cartoonish way.

8 hours ago
SignoreBanana
:js::ts::py::ru::j:

lol took me right back to 90s

13 hours ago
arc_medic_trooper
:cs:

I mean it would take you to 90s because the idea that you should decouple game logic from the framerate is old enough to vote and pay a mortgage.

13 hours ago
Panderz_GG
:cs:

Wait so he is not using delta time in his calculations xD?

Every beginner yt tutorial teaches you that.

14 hours ago
coldnebo
:ru::js::j::cs::cp:

delta time is not a realtime constraint… hence the scheduler may or may not provide a real delta— ie system lag or stutter… then your physics blows up.

this can be harder than it looks.

13 hours ago
arc_medic_trooper
:cs:

I’m not a game dev, but I know that you don’t tie your physics to your frame rate. I’ve heard that based on the tools you have, it’s rather easy to handle it as well.

14 hours ago
Panderz_GG
:cs:

Yes, Gamer Maker Studio his engine of choice has a built in delta time variable.

It returns an int that is the time between frames in milliseconds, you can use that to make your game frame independent.

14 hours ago
Vandrel

Did it have delta time available when he started making the game a decade ago? It wouldn't surprise me if it did, I'm just not very familiar with Game Maker.

13 hours ago
arc_medic_trooper
:cs:

Lol, lmao even.

14 hours ago
coldnebo
:ru::js::j::cs::cp:

ah, yes, that’s more stable. it’s basically a scalar on the physics which is constant based on the chosen fps, so it doesn’t suffer from lag spikes.

13 hours ago
Due-Peak4398

When you look at his code, you would think the guy has never looked at the docs or any tutorial in his life.

10 hours ago
chucktheninja

That is due to the engine. In game maker, everything is run once per frame, and it defaults to running 60 frames per second.

11 hours ago
Lishio420

I mean there is quite a few modern games where u can get fucked by having lower or higher fps

10 hours ago
game_jawns_inc

so?

10 hours ago
dragoduval

II love how much this dude is getting ripped on every subreddit.

15 hours ago
KiwiMaster157
:cp:

I'm out of the loop. What happened?

14 hours ago
JonesJoneserson

There was some petition to save abondonware games and this dude came out against it.

He like regularly suggests he's some beast developer or hacker or something, so when he pissed off the community they looked into his background as well as the code for his game and suddenly it looks like he may have been exaggerating a bit

14 hours ago
Middle_Mango_566

I only know him as a QA tester from blizzard, not sure why he suggested he was a great coder

14 hours ago
RadioactiveSalt

Didn't he brag about working as a "hacker" for some govt nuclear plant or something? Or was it someone else?

13 hours ago
TheBoundFenrir

Yeah, he did!

His linked in shows he *did* work with energy companies, and he probably *did* pen-testing, but from the look of that same linked-in, it's pretty clear his skillset is *fishing* and *social manipulation*.

Basically, he was probably one of the guys who would show up at the front door going "Hey man, my car broke down; I already called the tower, but do you have somewhere I can come inside and rest?", a couple minutes later it's "Hey dude, can I borrow you're bathroom?", and next thing you let him out of your site and he's walked somewhere unsecure and is making notes your manager is going to write you up about later.

...in other words, nothing at all involving software, let alone "hacking".

12 hours ago
madpacifist

What a surprise. The guy who is being exposed for bullshitting has extensive job experience in bullshitting.

3 hours ago
r0ndr4s

Because he loves to lie.

14 hours ago
broccollinear

I only know him as that furry guy who was embroiled in a gay furry RP cheating ordeal

14 hours ago
the_human_oreo

I keep seeing this one be mentioned but haven't been able to find any actual posts with information, you got any links that cover this?

13 hours ago
Rei1556

that furry thing ordeal, i think the search term for it is maldavius(jason hall aka pirate software) and second life woodbury university

12 hours ago
Brokemono

The gay furry erp part of the video is crazy, watch at your own risk or skip that part, here is the video covering it all: https://www.youtube.com/watch?v=rWoxDoDn44I

If you're just interested in his other side, where he claims to be a hacker and a good game developer, then watch this 2-part series: https://www.youtube.com/watch?v=0jGrBXrftDg&t=10s

11 hours ago
FrancisBitter
:sw:

None of those words are in the bible.

13 hours ago
Respirationman

Well duh it wasn't written in English

13 hours ago
LexaAstarof
:py::rust::c::j:

Ordeal

13 hours ago
AnotherCableGuy

His GitHub repo is a wasteland.

13 hours ago
LitrlyNoOne

I'd be so hurt if people started reviewing my GitHub on social media. 😂

5 hours ago
ASimpForChaeryeong

Just heard of this guy now. I'm curious why he was against it?

14 hours ago
terholan
:ts::py::cs:

He has his own publisher company. Simple conflict of interests.

14 hours ago
BlckSm12

a bit is an understatement

14 hours ago
Lungseron

"A bit" is quite an understatement. Dude codes worse than i did when i was starting witgh Gamemaker. He doesnt know the goddamn basics of optimization, nor has any good practice. He's just brute forcing it to work and doesnt give a shit.

7 hours ago
New_District_8073

"he may have been exaggerating a bit"

you may have been understating a bit

9 hours ago
Prometheus_Gabriel

He seems to lack any fundamental of programming not knowing basic concepts such as magic numbers or for loops and uses about the worst possible way to keep track of events in his game 1 massive array of 500 some indexes which he sets in 1 file and comments behind it what it's for and what can be filled into this particular index(imagine having to add another index at 215 to keep Related Story events grouped and then having to change all the subsequent entries and their calls). When called out on this he copes by saying it's so my ARG is easier and more doable or so the save file is more easily editable I saw him say both both sound like massive cope.

All these freshman level mistakes while he claims to be a 20 year experienced game dev who has worked at blizzard for 7 years. After some research people found he did QA(he equals this to being a dev due to it being a part of the development process) and what amounts to social engineering, his dad was also a founder at blizzard that is how he got the job he is blizzards first Nepo baby.

The worst part is he is just a smug and arrogant person who condescends everyone because he worked at blizzard and can never accept he is wrong or made a mistake no matter what, he gets into a lot of unnecessary drama due to that personality trait. He did an interview with a YouTube therapist where this also came up he denied this being the case and blamed others for not understanding how he was right.

14 hours ago
Pleasant_Ad_2080

I think the ARG is to find out how bad his code is and fix it.

13 hours ago
Training-Solid-4650

That, or it's the sound any actual dev makes when they see his code.

13 hours ago
LeoTheBirb
:c::j::s:

He's a guy who basically claims to be an expert game developer, which he is not. He's worked on the same game for about 8 years, and it isn't complete, still stuck in early access at around 20 USD. People dug into his code, and found that it sucked, and was likely the reason why it was taking so long. The delay is not from a lack of capital, he makes a decent amount of money livestreaming himself coding and playing games, and actually earns enough to pay a sound engineer and artist. So the game's code is very likely the thing standing in the way of completion. He mostly scoffs at criticism, and just does his own thing regardless. He's sort of like an "Anti Jonathan Blow"; same egotistical bullshit, but without any real skill to back it up.

The actual reason anyone even cared to begin with is because he publicly doesn't like Ross Scott's "Stop Killing Games" movement. Its not the first time he's been wrapped up in drama. Discussion now is basically just about his hubris and lack of actual programming skill, more than his opinions about this or that thing.

14 hours ago
TheBoundFenrir

IIRC, It took him 2 years to make the first 2 chapters, and then he was "86% done with chapter 3" for another 6 years with no updates to show for it...because he made it big, he started streaming 8-16 hours a day and never actually doing any dev work. Not that his dev work was that great to begin with, but at least Heartbound Chapters 1 an 2 *run*, which is more than can be said of the rest of the game.

12 hours ago
plantbasedbud

Isn't there like 2-3 hours of content, 90% of which is just dialogue anyway? I've seen some reviews and the puzzles/fights are a grand total of 10-15 minutes apparently, the only value to the game comes from replayability if you'd actually want to play a visual novel like that more than once or twice.

4 hours ago
jeff3rd

it still baffles me that he managed to drag the making of a simple gamemaker game for 8 years and made 0 progress with it, I know some ero game devs will finish this shit within a year or less and it will still have more content.

12 hours ago
Lordados

TLDR he's just a massive asshole

14 hours ago
robclancy

Also he didn't press his mana gem

10 hours ago
skwyckl
:elixir-vertical_4::py::r::js:

He made some up shit, framed other shit in a way to make him look cool and knowledgeable, rode the fame wave exploiting his relationship with Blizzard (while bashing them), so in general, kind of a shady person, some of his takes were objectively good (which I can say from experience), but generally one should take what he says with a fistful of salt.

14 hours ago
Spare-Plum

Dude postures as a ex-Blizzard master game developer on Youtube and streams. He speaks like he has authority on everything and even uses a voice-changer to make his voice sound deeper and more authoritative on a subject. Eventually made a video series on something that was blatantly incorrect, spreading misinformation, and putting down a pretty reasonable cause.

People looked into his background and it turns out he was just a QA tester at Blizzard who got the position due to family connections. It turns out he knows very little about coding, game dev, etc and he's being exposed for speaking out his ass.

13 hours ago
TupperwareNinja

I love him as he got me into finally starting to learn game development. But the current release of him has some definite bugs and needs to go under review.

11 hours ago
otacon7000

I actually don't. As a society we have this tendency to really engage in character assassination, cancelling people, witch hunts, whatever you want to call it, and I think it is wrong and dangerous. No one is perfect, everyone has issues. Think about the stuff people could theoretically rip you a new asshole for if the problem was on public display.

10 hours ago
Didactic_Tomato

Yeah we lean too hard into this stuff en mass

6 hours ago
r0ndr4s

Who's "we" ? Doesnt he develop this game by himself?

14 hours ago
Cocholate_

He and his ego, who is so big it's classified as another person

5 hours ago
100GHz

What is that language?

14 hours ago
Brilliant_Lobster213 OP

GML (GameMakerLanguage). Scripting language for the GameMaker engine

14 hours ago
Hozukimaru113

Pretty sure its a proprietary gamemaker studio language

14 hours ago
throwthisaway9696969

I just can't get over the loop condition: why not simply xx < sprite_width ?

13 hours ago
Prestigious-Ad-2876
:cp:

I mean, he could also just start the variable itself at 1, xx = 1; is totally fine.

11 hours ago
Bomba_Fett
:j:

It's partially a readability thing, the shortest form of code isn't always the most straight forward. It's quite common to default to only doing for loops with iterations starting at 0 for consistency.

5 hours ago
Panderz_GG
:cs:

We're really beating a dead horse here...do it some more.

14 hours ago
Suspicious-Swing951

How much more? Three nested loops worth?

10 hours ago
zabby39103

Nah, this guy is bad and everyone needs to know how bad he is. I don't want to ever work with or encounter anyone that learned any coding from his videos. There's so many better options out there.

12 hours ago
Venn--

Yes, that's the "do it some more" part. Keep beating the dead horse.

10 hours ago
poulain_ght

But! What's with that code!? This can't be real!

15 hours ago
Issue_dev

You don’t run nested for loops straight from a switch statement? Are you okay? /s

13 hours ago
Hozukimaru113

It is real, and there is a video of a game dev comparing this implementation to a better one
https://www.youtube.com/watch?v=jDB49s7Naww

14 hours ago
Voidheart80

At this point... i believe this whole 10 year development was a money sink, some form of passive income while streaming video games. I mean with his poor coding skills I can only imagine what its like for him debugging, and his fake Smart Fridge scam he got going

12 hours ago
Prestigious-Ad-2876
:cp:

At 10 years Dev time I would have assumed that the game was a major money lose, but according to some analytics sites he has sold around 100k copies and earned between 700 - 1200k

Hell he made 5.5k in the last week alone on it.

For a game he has barely touched in the last 3 - 4 years he is pocketing a gross amount of money.

Next to his streamer income it might not be considered much to him though.

12 hours ago
zabby39103

Does anyone know if the game is actually good? Willing to believe maybe it has shit shit code but is a good game.

Undertale was an absolute mess as I recall (but at least that guy isn't going around masquerading as a good coder).

12 hours ago
Prestigious-Ad-2876
:cp:

The reviews I actually believe are the ones says that it basically doesn't exist, it has a decent idea, okay writing but it's full of holes and all told maybe 4 hours long after 10 years.

It's on the same vein as Vaporware when compared to what it is supposed to be.

It's not that it is horrible itself, but the reality surrounding it, "kick started some 5 years ago", "Less than half done", "10 years in production", "No real content updates in 2 years", "Missing major game elements", it's the clear indication that it will never be a fully released game under the current production.

And when faced with the real concerns about the game from people who actually had faith in it, he lumps them in with those who clearly have ill intent so that he never needs to address any of the complaints at all.

Like "Code Jesus" video IS grifter content made to please the masses who already hate Pirate Software, and that helps Pirate deflect reality even more, because now he has a new flood of hate to shield his real issues.

11 hours ago
BlckSm12

Yandev? Is that you?

14 hours ago
mitchbones

Yandev's game is gonna come out before Shitbound

6 hours ago
SignificantLet5701
:cp::c::j::rust:

... tying logic to fps? even 13yo me wouldn't do such a thing

15 hours ago
Front-Difficult
:ts::js::py::m::bash:

It's a pretty common pattern in historical game dev. Used less now, but it's not as crazy as it sounds. You essentially couple your logic/physics to your drawing/rendering logic. Everything gets done in the same loop, you calculate your players position in the same loop that you draw them in the new position, and you do this loop 60 times per second. You don't calculate anything before its necessary, never wasting CPU cycles, and making certain behaviours more predictable. This make building an engine a lot simpler.

It's a lesser used pattern for modern games because they're played on a variety of platforms with different hardware. You can no longer predict a player's FPS precisely like you could back when games were only ever played on one generation of console (or on an arcade machine). You can lock a players FPS at 60 of course, but then if their hardware is worse than you expected and their framerate drops you'll have a bad time in the other direction.

For modern games, handling differing framerates is usually more complex then just decoupling your game logic from your rendering logic. So now game logic tends to run on a fixed timestep/interval, or is entirely event based, regardless of if the player is rendering the updates or not. Some big AAA games still use engines with logic tied to FPS though. Notably Bethesda's Creation Engine games (Fallout 4, Skyrim, Starfield, etc.) all still use the players FPS for physics.

14 hours ago
Longjumping_Duck_211

Back in ye olden days, any given cpu instruction took literally the exact same number of clock cycles no matter when you ran it. Nowadays with hardware level branch prediction and speculative execution there is no way you can know how many clock cycles anything takes. Not to mention software level thread context switches that make timing anything impossible.

14 hours ago
Einkar_E

even in cases where logic isn't fully tied to fps many games has frame rate dependent quirks or glitches

14 hours ago
Aidan-47

Yeah, I’m a second year student studying game development and pretty much everyone defaults to that because it’s already the default function in unity when you start a script.

While this can be fine you see a lot of people running it in engine fine then waiting too late to test it in build and everything breaks.

Using Fixed Update instead was one of the most useful lessons I learnt in my first year.

13 hours ago
Leon3226

For most tasks, it's easily patchable by multiplying by time deltas. In engines like Unity, it's still a pretty common practice to make most of the logic in Update() (tied to framerate) and use FixedUpdate() (mostly untied) only for things that strictly require a somewhat stable tick rate, like physics calculations

13 hours ago
minimaxir

Tell that to console game developers.

15 hours ago
Xtrendence
:js::p::msl::j::cs::dart:

It used to be common practice, even massive games like Bloodborne do it. It's just the most straightforward way to manage time in games with the FPS as a sort of global way to tie everything to, otherwise keeping everything in sync is difficult. Obviously it has many downsides and is a dying practice, but especially on older consoles and such where FPS was usually capped to 30 or 60 anyway, it was "okay" to do.

15 hours ago
StillAtMac

Pretty sure Fallout was tied to it in some parts until recently.

14 hours ago
Arky_Lynx
:j::gd:

The Creation Engine would get weird if you uncapped your FPS as recently as Skyrim if I remember correctly (the normal edition, not the special one, at least). I was always told to cap it at 60. With Starfield, and the new version of the engine it uses, this is not necessary anymore (or at least, I've not noticed anything strange).

14 hours ago
Xtrendence
:js::p::msl::j::cs::dart:

Yeah the carriage in Skyrim's intro would start doing flips and flying if you had an FPS above 60.

14 hours ago
coffeeequalssleep

Eh, there are use cases. I don't mind it in Noita, for example. Better than the alternative.

14 hours ago
KharAznable

Most beginner gamedev at their 30s still do that (like me). Like I know it's bad, but it just so easy to do.

15 hours ago
Aidan-47

If your using unity you can switch to Fixed Update which works almost the same except it uses fixed time instead of frames

13 hours ago
KharAznable

I use ebitengine and the fact the engine use tick based update by default (not even passing delta time as update parameter), just make me not using that method by default. Some ECS framework built on top of ebitengine do help with this issues a bit.

And TBF from my limited experience, the engine is pretty performant like It still run 55-60 FPS on some logic heavy non optimized scene on opengl. But when I need to export it to WASM, the framerate drop feels abysmal and beyond obvious.

11 hours ago
Just_Another_Scott

You remember GTAV taking forever to load? Yeah a modder solved it after nearly 10 years. The game was downloading a json file for the game store. They were parsing through the JSON multiple times. So as the store grew so did the loading times. Rockstar claimed for years they couldn't figure it out lol.

10 hours ago
BandwagonEffect
:p::j:

This guy has been on my “I know something’s off but I can’t prove it” list since he talked about single handedly tracking down some hacker at defcon. But other dev YouTubers seemed to like him so I said nothing. So glad people are roasting him now.

9 hours ago
Big_Kwii
:holyc:

Heartbound has game logic tied to the FPS so that certain parts of the ARG can work.

you can't make this shit up...

13 hours ago
Ericakester

All Game Maker games are tied to the FPS

11 hours ago
Ok-Kaleidoscope1980

Coding Jesus made a video about the performance of his lighting (which is horrible)

13 hours ago
Prestigious-Ad-2876
:cp:

Interested to know if the claim "Game Maker Studio 2.3 has a ton of bugs" is legit.

I mean historically based on the person saying it, it's a lie, but that's not real fact checking.

12 hours ago
StrangeCurry1

I’ve been using 2.3 for a while now. Zero issues so far. Any issues he has is due to him trying to do stuff in backwards and inane ways

12 hours ago
Prestigious-Ad-2876
:cp:

Maybe just like a "I copy pasted my entire game into the new version and things broke" type thing.

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

Some people had issues with working with larger projects in the IDE and the legacy JS-based web runner (the "HTML5 export module") had a lot of bugs and parity issues, though it has improved a bit after they open-sourced it. They'll probably sunset it some time in the future in favour of their newer WASM-based runner. Nowadays, GameMaker (as it is called now) receives much more frequent updates (a major update once every 2 months or so vs. whenever they felt like it) and major bugs are usually resolved faster in minor updates.

GameMaker has seen a lot of improvements since the 2.3 days, the biggest among them is probably making it free for non-commercial use. Frankly, the subscription model made it much less attractive to new users compared to Unity and was really holding it back.

11 hours ago
ElectrocutedNeurons

https://gamemaker.io/en/blog/gamemaker-studio-2-dot-3-new-gml-features

nothing breaking, a lot of syntactic sugars. He's just saying it as an excuse lmao

10 hours ago
MorningComesTooEarly

Nah no way this is real, can you show the source vid?

14 hours ago
FreeformFez

Oh it's real

13 hours ago
Material_Ad9848

Think this guy thrives on being disliked. 1 video of him saying "Ya, im kinda of a smug asshole. that's just me." and 1/2 the hate would go away. But instead its "no, the thing you dont understand is I'm an expert at experting. Everything i know is pefectly correct. My dad is Blizzard."

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

What I find so weird about all of this is the fact that he’s been streaming him coding the game for a LONG time, yet people only started giving him shit for it now? Like yes this code is dogshit, but I don’t remember it looking bad in the past (or at least no one gave him shit for it before). Makes me wonder about people’s criticisms. Is he just updating code he did early in the game’s development? Is he fixing code an intern gave him? Are people just now noticing how bad his code has been the whole time and people have only now decided to point it out? I am so confused

11 hours ago
Adept_Avocado_4903
:py: :cp:

People didn't really give a shit until first the WoW hardcore drama and then more recently the Stop Killing Games drama. But now he has angered the internet and people are digging through everything he ever did in order to hate him more.

8 hours ago
Darcoxy

Ehhh, I'm conflicted. On one hand I get why the guy is getting criticised due to the Stop Killing Games petition and the WOW debacle, but on the other hand I feel for him because it can't be nice having the whole of the internet pick apart everything that you've ever done just to take the piss out of you.

I get that the things that he's getting ripped about are out in public (like his code) but at what point does memeing him cross the line into bullying and canceling him? I've seen witch hunts on the internet end badly and I'd hate that in this instance.

6 hours ago
SteelWheel_8609

He makes a living lying to thousands of young people every day and selling a fake game that will never actually be finished. He’s a con man.

Like, I agree with you, I think internet hate mobs can be dangerous. But this man is literally raking in more money than you or me lying non stop about who he is and what his capabilities are.

3 hours ago
Nabrok_Necropants

Im tired of seeing this dudes face just because he has radio voice

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

I haven’t seen the whole thing, but I think what he’s doing could be done better with a shader. I’m pretty sure shaders were around in GameMaker when he started this project.

14 hours ago
Easy_Needleworker604

It’s absolutely what a shader should be used for. 

Something I haven’t seen addressed is if this script is even used in game / if this is was ever intended to run in real time. This is on the order of being so slow the game would not run at all. I’ve written really dogshit code to try things out before. CJ presented it as just a file in the demo.

11 hours ago
edwardsnowden8494

I feel so elite for understanding what’s happening here

13 hours ago
SteroidSandwich

If only there was a way to check what code was causing issues. Must not have been invented yet

8 hours ago
Blubbpaule

I want to remind everyone that the current Version of the game has content for 40 minutes.

After what? 7 years? This should be labled as abandonware.

5 hours ago
Recent_Loan_2380

This legit wouldnt even happen to a vibecoder

4 hours ago
Thebox19

Gamemaker 2.3 has a lot of bugs

Lmao bro, even platform bugs would be preferable to poor coding and performance issues from your own code. An older version isn't an excuse for bad code when you're giving up project speed over stability.

9 hours ago
ParkingCan5397

I have never heard of a game released and updated in this DECADE that ties game logic/physics to the users FPS, truly incredible he keeps outdoing himself

11 hours ago
Pixel91

This decade as in the 2020s or this decade as in the last 10 years? Fallout 76 was a thing.

8 hours ago