• Ever wanted an RSS feed of all your favorite gaming news sites? Go check out our new Gaming Headlines feed! Read more about it here.
  • We have made minor adjustments to how the search bar works on ResetEra. You can read about the changes here.

Qwark

Member
Oct 27, 2017
8,027
Don't have to. There's a Digimon game in the PSX that's completely unbeatable.
Huh? Which one? I played all of them except the trading card game and never ran into anything like that. Digimon World 1 had some funky bugs, like you couldn't use the in-game jukebox, but you could still beat it.
 

SPRidley

Member
Oct 25, 2017
8,238


"A little bit of Scribblenauts was translated by me and a programmer to five? seven? languages with google translate only like two days before cert. "

Oh my, i remember this. I worked for 5tcell at the time and asked them who did the spanish version becaise it was absolutely atrocious. Theres a puzzle were you need to summon a castle and by writting the word in spanish (castillo) it didnt summon anything, not even with similr synoyms lile fortaleza.
To fix this you had to go to the menu, change the language to english, beat that missiom by writting castle, and then putting back the game to spanish. I remember my mother trying to beat the game (as it was the first game i worked on) and getting stuck in that part lol
 

Serein

Member
Mar 7, 2018
2,346
Great thread, very entertaining. If someone ever writes a book about this stuff it should be called "Because Dogs Do That".
 

ILikeFeet

DF Deet Master
Banned
Oct 25, 2017
61,987
it's funny—reading indie game stars admitting to using real dumb practices is sssssort of a nice reminder that you don't to be a perfect programmer to make great games, but it's also a reminder that...these people didn't let being an imperfect programmer keep them from making great games. equal parts "they're just like me!" and "i should try to be more like them!"
5 bucks most of these anecdotes are from games published by large publishers
 

Quexlaw

Banned
Sep 11, 2018
53
I can only understand two or three of all jokes. :\
Maybe because I'm an UE4 developer.
Sounds to me like you are a new developer, am I wrong?
While lots of these do not apply to UE4 developers, the concepts are 1:1 transferable and should be understood with general programming knowledge.

@Topic
I really enjoyed reading those. It relativizes the doubts I have regarding my own programming skills. There is much to learn still, but it does show that getting hung up on it really is rather destructive.
 

grunkleFungus

Banned
Aug 22, 2018
171
NC, US
I love the narrative of these workarounds. A man with a water wheel stuck inside his body, a little hall demons go through before fighting the demon slayer...
 

JahIthBer

Member
Jan 27, 2018
10,382
Good thread, just a shame Japanese devs can't join in, i have a strong feeling Agro's Ai in SOTC was bugged, but they claimed "Horses just work like that" to roll with it, just like the Dog in Fable 2.
 

Deleted member 8593

User requested account closure
Banned
Oct 26, 2017
27,176
Even though I don't understand all of it, some of these are hilarious and reflect some of my attempts at C lmao.
 

John Caboose

Member
Oct 26, 2017
2,200
Sweden
Not a game Dev, but I am a software developer. Love this thread, horrifying and relatable.
This thread is amazing.

I think both of you will thoroughly enjoy these articles then. Same kind of stuff as this thread.

https://www.gamasutra.com/view/news..._their_most_memorable_dirty_coding_tricks.php

https://www.gamasutra.com/view/feature/132500/dirty_coding_tricks.php

https://www.gamasutra.com/view/news/249475/More_dirty_coding_tricks_from_game_developers.php

This one is my favorite:

There's an old joke that goes something like this:
Patient: "Doctor, it hurts when I do this."
Doctor: "Then stop doing it."
Funny, but are these also wise words when applied to the right situation? Consider the load of pain I found myself in when working on a conversion of a 3D third person shooter from the PC to the original PlayStation.
Now, the PS1 has no support for floating point numbers, so we were doing the conversion by basically recompiling the PC code and overloading all floats with fixed point. That actually worked fairly well, but were it fell apart was in collision detection.
The level geometry that was supplied to us worked reasonably well in the PC version of the game, but when converted to fixed point, all kinds of seams, T-Junctions and other problems were nudged into existence by the microscopic differences in values between fixed and floats. This problem would manifest itself by the main character (called "Damp") simply falling through those tiny holes, into the abyss below the level.
We patched the holes we found, tweaking the geometry until Damp no longer fell through. But then the game went into test at the publisher, and suddenly a flood of "falling off the world" bugs were delivered to us. Every day a fresh batch of locations were found with these little holes that Damp could slip through. We would fix that bit of geometry, then the next day they would send us ten more. This went on for several days. The publisher's test department employed one guy whose only job was to jump around the world for ten hours a day, looking for places he could fall through.
The problem here was that the geometry was bad. It was not tight and seamless geometry. It worked on the PC, but not on the PS1, where the fixed point math vastly magnified the problems. The ideal solution was to fix the geometry to make it seamless.
However, this was a vast task, impossible to do in the time available with our limited resources, so we were relying on the test department to find the problem areas for us.
The problem with that approach was that they never stopped finding them. Every day bought more pain. Every day new variants of the same bug. It seemed like it would never end.
Eventually the penny dropped. The real problem was not that the geometry had small holes in it. The problem was that Damp fell through those holes. With that in mind, I was able to code a very quick and simple fix that looked something like:
IF (Damp will fall through a hole()) THEN
Don't do it
The actual code was not really much more complex than that (see Listing 2).
Listing 2: Meet My Dog, Patches

damp_old = damp_loc;
move_damp();
if (NoCollision())
{
damp_loc = damp_old;
}
In one swoop a thousand bugs were fixed. Now instead of falling off the level, Damp would just shudder a bit when he walked over the holes. We found what was hurting us, and we stopped doing it. The publisher laid off their "jump around" tester, and the game shipped.
Well, it shipped eventually. Spurred on by the success of "if A==bad then NOT A", I used this tool to patch several more bugs -- which nearly all had to do with the collision code. Near the end of development the bugs became more and more specific, and the fixes became more and more "Don't do thispreciseandexacthing" (see Listing 3, actual shipped code).
Listing 3: Meet My Dog, Patches

if (damp_aliencoll != old_aliencoll &&
strcmpi("X4DOOR",damp_aliencoll->enemy->ename)==0 &&
StartArena == 6 && damp_loc.y<13370)
{
damp_loc.y = damp_old.y; // don't let damp ever
touch the door.. (move away in the x and y)
damp_loc.x = damp_old.x;
damp_aliencoll = NULL; // and say thusly!!!
}
What does that code do? Well, basically there was a problem with Damp touching a particular type of door in a particular level in a particular location, rather than fix the root cause of the problem, I simply made it so that if Damp ever touched the door, then I'd move him away, and pretend it never happened. Problem solved.
Looking back I find this code quite horrifying. It was patching bugs and not fixing them. Unfortunately the real fix would have been to go and rework the entire game's geometry and collision system specifically with the PS1 fixed point limitations in mind. The schedule was initially aggressive, so we always seemed close to finishing, so the quick patch always won over the comprehensive, expensive fix.
But it did not go well. Hundreds of patches were needed, and then the patches themselves started causing problems, so more patches were added to turn off the patches in hyper-specific circumstances. The bugs kept coming, and I kept beating them back with patches. Eventually I won, but at a cost of shipping several months behind schedule, and working 14 hour days for all of those several months.
That experience soured me against "the patch." Now I always try to dig right down to the root cause of a bug, even if a simple, and seemingly safe, patch is available. I want my code to be healthy. If you go to the doctor and tell him "it hurts when I do this," then you expect him to find out why it hurts, and to fix that. Your pain and your code's bugs might be symptoms of something far more serious. The moral: Treat your code like you would want a doctor to treat you.
- Mick West
 

Cipherr

Member
Oct 26, 2017
13,436
"I can't believe the weird bugs in this game. How could this happen? Other devs don't let this happen."

Other devs:
giphy.gif


LMAO right!?
 

Deleted member 43872

Account closed at user request
Banned
May 24, 2018
817
If you think any of the crimes so far are terrifying, don't click this link.

That's a fraction of the source for a game that shipped on Steam (pre Steam Direct, even), published by its author as an admission of guilt. It's written almost entirely in the XNA Update(), without the use of loops or arrays. It's the worst shipping code I'm aware of by far.
 

Deleted member 671

User requested account closure
Banned
Oct 25, 2017
1,268
I love this thread because it shows us that the devs are humans and screw up just as much as we do and yet still ship absolutely amazing experiences.

And it runs! I've played it! Like, I really need to give the author props for bull-headed determination, sticking with that style to the end even though learning the basic elements of programming would have been so much easier.

"The actual file is three to four times what is shown here." I'm crying with laughter. Hey, in the end he's right, it works so props to him for getting it to run.
 

tuxfool

Member
Oct 25, 2017
5,858
If you think any of the crimes so far are terrifying, don't click this link.

That's a fraction of the source for a game that shipped on Steam (pre Steam Direct, even), published by its author as an admission of guilt. It's written almost entirely in the XNA Update(), without the use of loops or arrays. It's the worst shipping code I'm aware of by far.
Unrolling those loops.

Unbeknownst to the author and all of us peons it's actually a highly efficient and optimized masterpiece.

I'm surprised he managed to make it run
 

Dracoonian

Member
Dec 6, 2017
210
These are wonderful, thank you. Makes me wish we can get conversations like these from people who worked in AAA games, too.
 

newgamewhodis

Member
Oct 28, 2017
820
Brooklyn
This is the shit I love to read about. I wish more games were able to include "DVD extras" so we could get more banter about how the sausage was made.
 

Rassilon

Member
Oct 27, 2017
10,590
UK
In older titles, shinny reflective surfaces were created by simply making the surface slightly transparent and putting an inverted model of the map on the otherside; a literal mirror world.

I realised this when I glitched through the floor in SWBF2 (2005).
 

Deleted member 2620

User requested account closure
Banned
Oct 25, 2017
4,491
If you think any of the crimes so far are terrifying, don't click this link.

That's a fraction of the source for a game that shipped on Steam (pre Steam Direct, even), published by its author as an admission of guilt. It's written almost entirely in the XNA Update(), without the use of loops or arrays. It's the worst shipping code I'm aware of by far.
I've died. I'm dead.
 

Deleted member 2595

Account closed at user request
Banned
Oct 25, 2017
5,475
If you think any of the crimes so far are terrifying, don't click this link.

That's a fraction of the source for a game that shipped on Steam (pre Steam Direct, even), published by its author as an admission of guilt. It's written almost entirely in the XNA Update(), without the use of loops or arrays. It's the worst shipping code I'm aware of by far.
Holy shit
 

Charsace

Chicken Chaser
Member
Nov 22, 2017
2,870
If you think any of the crimes so far are terrifying, don't click this link.

That's a fraction of the source for a game that shipped on Steam (pre Steam Direct, even), published by its author as an admission of guilt. It's written almost entirely in the XNA Update(), without the use of loops or arrays. It's the worst shipping code I'm aware of by far.
That is some real soul crushing stuff there. I can read it, but I wouldn't want to go through and try to port that code.
 

elenarie

Game Developer
Verified
Jun 10, 2018
9,812
If you think any of the crimes so far are terrifying, don't click this link.

That's a fraction of the source for a game that shipped on Steam (pre Steam Direct, even), published by its author as an admission of guilt. It's written almost entirely in the XNA Update(), without the use of loops or arrays. It's the worst shipping code I'm aware of by far.

I like this. If it was hard to write, it should be hard to understand, am I right?!

On a related note, it's good that games in general are not open source. :)
Sometimes interesting things can be found while adventuring through the source files.

 
Last edited:

Tunahead

Member
Oct 30, 2017
986
Yup. At the end of the day, the most valuable resource is time. So when you're making a game and you need to put a new thing in it, chances are something in your core systems can already do a lot of the things you want, so just repurpose that in sneaky ways and save everyone a lot of time.

A great example of this is the non-player character. A lot of games have NPCs, and they need to be able to do lots of things like have behaviors, pathing, give or receive items, etc. So when something else in the game needs to have that stuff, just put an NPC there in a way that the player can't see them and call it a day.

When Bethesda wanted to add moving trains to Fallout 3, they just put a giant novelty train hat on an NPC and instructed it to move along a track.

When you receive a quest reward in World of Warcraft, you're looting an invisible NPC.

It's all absolutely delightful.
 

Dervius

Member
Oct 28, 2017
4,910
UK
Great thread, very entertaining. If someone ever writes a book about this stuff it should be called "Because Dogs Do That".

It definitely should be.


That's top notch. A lesson for the ages.
 

Shaneus

Member
Oct 27, 2017
8,900
I spent a good hour reading that thread, and still didn't finish it. I think this one was my favourite:


This was great, too:
 
Last edited:

TheFireman

Banned
Dec 22, 2017
3,918
These tweets really make me happy I've decided to get a CS degree before going into game design lol.