Vidya behind the scene

Let's have a thread about how developers went around and did something unusual in order for things in a video game to work

>Early WoW
>Bosses had invisible bunnies around them
>When event was triggered, bunny was killed
>Another specific event occurred if a specific bunny was dead

Also early quests were mostly kill and talk quests. If you were on a specific quest and had to talk to a npc, an invisible bunny was spawned next to quest NPC so he immediately killed it in order for quest complete dialogue to appear.

Anyone else knows any other unusual things developers did?

Other urls found in this thread:

gamasutra.com/view/feature/194772/dirty_game_development_tricks.php
youtube.com/watch?v=hXmZX8iz2SE
developer.valvesoftware.com/wiki/Working_Ladders
gamasutra.com/view/feature/132500/dirty_coding_tricks.php
forums.dolphin-emu.org/Thread-ar-code-to-disable-clipping-in-metroid-prime-1-2?pid=370683#pid370683
youtube.com/watch?v=LeA-386t38Q
en.wikipedia.org/wiki/Binary_multiplier
youtube.com/watch?v=MiuLeTE2MeQ
en.wikipedia.org/wiki/Fast_inverse_square_root
wowhead.com/npc=37543/dnd-shaker
youtube.com/watch?v=ny_sAqDPhi8
aigamedev.com/open/review/fear-ai/
lpaste.net/4202149741313654784
youtu.be/QLFRQNaoguY?t=1459
twitter.com/SFWRedditVideos

Also someone remind me of which video game it was.

If you were to exit it properly an error would show, showing default error code.

Developers couldn't fix it so they just renamed the error code into "Thanks for playing X!"

>that pic
Jesus Christ, Carmack

>tfw you'll never get drunk off your ass and code something revolutionary

inb4 Fallout 3 train

Carmack didn't come up with it.

:^)

tcrf.net
reminder

...

In Bethesda games, much of the furniture is bigger, more complex furniture, but stuck under the ground - you only see the part thats sticking out.

Explain?

Its a clever hack, I don't see what the problem is.

What a champ

It saved months of developing a train system just for one occasion, so yeah.

why

Reused assets.

In one of the Rare N64 games (I think it was DK64 but the same thing might have occurred in Banjo Tooie) there was an area where the game, despite all manner of optimising, would still run at 2fps lower than the rest of the game (likely due to the size of the area in the level) so Rare decided the best course of action was to create new animations for Banjo and the NPCs in the area that run 10% faster than in the rest of the game so the effect of the framerate being lower would be less noticeable

That's actually a pretty clever way to get things done without having to design a tram system that was only going to be used once. Now this, on the other hand, is pretty fucking stupid.

Yes, pretty much every table in Skyrim is actually a shelf.

Most armor in games where you can equip different stuff is just a paint job on the character model, so you can see the armor shift and move as the character walks or flexes.
Also most armor is mirrored, so it takes less time to make and takes less space in the memory.

In modern FPS on consoles guns are fucking huge, so they can cover up more of the screen. That way the level behind them doesn't have to be rendered, instead the more static and predetermined weapon model is shown.
This is also one of the reasons for low field of view in such games.

that shit is so fucking clever, makes me laugh every time

ehhhhhhhh I never noticed. a table or 1 shelf thing could be made, but that works I gues.

For aerial missiles in half life, they attached missile models onto seagulls

Hack devs reusing assets reee~~

This reminds me of the Crytek engine, which would create your level as an island in a sea. So every level had a sea of water being animated under the level, even if the player never ever sees it, and its all covered.

>but that works I gues.

>Sacrificing shitload of ram instead of making different 200kb models which would even re-use the texture

Nah, it's just lazyness.

>DK64
This game also inexplicably had a game crashing glitch that the team couldn't figure out how to fix, but when playing the game on the dev kit (which had more RAM as standard) it seemed to solve the problem. After a few weeks of trying to iron out the problem, they couldn't find a way to stop this game crashing glitch occurring.

What was Rare's solution? To add a small line of code that meant the game wouldn't run without the N64 RAM cartridge upgrade thing that Perfect Dark and Zelda Majoras Mask used. The game itself doesn't actually make use of the extra RAM, it just stops this glitch from occurring.

The memory cost of just cloning an object is probably negligible to loading another, different looking object though.

shitloads of RAM for one model???

First person camera is in the chest of the third person model, rather than its face. I have no idea why, but it is.
So in first person you are shorter than in third person.

I remember people getting those for free since their game crashed without it

Re-using the same model costs almost no RAM, which was a big deal on consoles.

Creating an existence of a model already in memory is better than loading an additional model in memory.

Maybe if you a 12K shelf texture

Yeah, it was bundled with the game (which I remember being £5 more than usual N64 games(

Just imagine walking into a mansion FILLED with those tables. Your fps and memory would go to shit since they're actually twice the size.

>I have no idea why, but it is.
So you could see the weapon you're holding.

I think you're blowing this out of proportion.

FPS camera makes your third person model disappear and replacing it with a model that just has 2 hands without feet or body.

For newer games at least.

That shit's reasonable. But the shit I can't stand was Todd Howard bragging about how Fallout 3 had no ladders because they couldn't program them.

I don't think you understand how shit the gamebryo engine is

I hate when this happens. I know it happens because when you just place the camera where the player model would be you'll most likely use the middle coordinates of the model, but that's not where the eyes are so it makes no sense.
The memory is still not a problem because a new model would require even more of that. FPS SHOULDN'T be an issue because culling should take care of that, but I wouldn't trust bethesda's engine to do that correctly.

Starfox Zero real time renders the entire game world on the TV, but on the gamepad it only renders what you're looking at.

No idea why the couldn't do that for the TV as well, but Platinumgames probably had a reason for using 2 different rendering methods.

gamasutra.com/view/feature/194772/dirty_game_development_tricks.php

Joe Valenzuela, Insomniac Games

This trick was on the PS3: We on the Insomniac engine team had some textures that we wanted distributed with our engine/tools release. These were things like noise textures and source input for full-screen filter effects. For some unimportant reasons, we didn't want to distribute these as actual asset files, so instead we converted them to binary arrays and compiled them into the executable. There was one downside, though -- we wanted these to be in a different chunk of memory (RSX visible), so we would end up copying them out and just wasting the memory for the source.

The PS3 toolchain had a link feature to put certain sections in RSX memory, but it requires using 1MB pages, and in our case it would have wasted 700k. Instead, we added a new data section in the executable that aliased the bss (the "bss alias" or "balias" section). We had something like 3MB of bss in our final builds, so there was more than enough space to hide some texture assets. We ran some code as early as we could in the crt initialization to initialize the destination memory, copy the assets out, and then re-initialize the bss to 0.

Believe it or not, it worked! There was a little tweaking to accommodate hidden bss use and toolchain updates, but overall it was pretty straightforward.

I liked Notch's attitude towards ladders in Minecraft a lot more. He didn't want to add them because he hated ladders in video game because how poorly they worked, but ultimately ended up creating probably the best functioning ladders ever in a video game.

youtube.com/watch?v=hXmZX8iz2SE

Model replacement in Dead Island

I remember Bioware saying they removed the ability to holster your weapon in Mass Effect 3 to save 2-4MB of RAM on the holstered animations that would be required. So RAM on console is serious business, when you're incompetent.

how the fuck do you put those in a second or higher floor without fucking it up?

It's incredibly inefficient.

there is no "train system". all you need to do is set up a waypoint system and tween the train there.

it's the easiest shit to do

Literally every video game does that already fampai

Have you seen a table on the second floor in Skyrim?

512mb of console ram is negligible. I'll give you that. That they shipped such a massive game for such outdated hardware is proof of their technical knowledge.

what the fug

>release dev version on steam
big oops

The reason the enemies in Space Invaders sped up as they got fewer was because the game ran inherently slowly and killing off enemies freed up memory and let the game run through its game loop at a faster rate.

In other words, the fundamental concept of video games getting more difficult as you progress was the result of a bug/technical limitation.

It's actually really fun to read about Source engine ladders.

developer.valvesoftware.com/wiki/Working_Ladders

Fallout 3: Broken Steel
>subway train is a naked man with a train for a head

The first version of Dead Island released on PC was accidentally an early test build with debug settings built in IIRC

2-4MB of RAM is a lot when all you have is 256 usable like on 7th gen consoles.
Far less of it was actually usable for the developers.
>such a massive game for such outdated hardware is proof of their technical knowledge
They sorta failed though. Skyrim on consoles had a lot of problems long after launch. It still does from what I understand.

WHAT THE FUCK MAN
I refuse to believe it. It's, like, shovelware-level laziness.

>The reason the enemies in Space Invaders sped up as they got fewer was because the game ran inherently slowly and killing off enemies freed up memory and let the game run through its game loop at a faster rate.

No way. You fucking lie.

it's not really replacing a model, it's not rendering one at all in world

there's an entirely separate camera for your "HUD arms" and stuff, thats why your hands never clip into the world (except in crysis where they made a system in which the arms and character were animated in world)

Could you explain what's so great about Minecraft's ladders and what's wrong with them in other games?

>mfw GTAV on 360/PS3
Black magic mang

Maybe I'm describing it wrong, but it's a resource saving thing and it made sense when I was reading it in Edge

Its true.

True facts.

They're not THAT great, just the best implemenation I've seen.
Especially FPS-type games have often very uncomfortable ladders. In HL1, you'd be sent flying off them very, very easily.

Open the game and check for yourself. Only instanced buildings, where you enter through a loading screen, have tables on what should be the second or upper floor.
And thats because they are actually outside of the world, and it is the first floor, and the rest of the shelf is there.

On PC use the no clip command to confirm.

they should have kept this as an option in the game

This is what happened before we could control framerates

ever ran an emulator without a frame cap? the game loop is tied to the frame rate on screen.

that's why fallout 4 is fucking awful, because the engine is tied to the framerate

Now, that's black magic, I agree.

Most ladders in first person titles (Not him, but I'll help move the goalposts a bit) have the big issue of you either teleporting up them, only using them in cutscenes, sliding up them, or crabwalking up them while still holding your gun. Oh, and you can go flying off a bunch due to how movement works on most.

In Minecraft, you're pretty much locked to the ladder and have a different movement speed until you get to the top.

Do you remember ladders in Battlefield 2, where you just welded to it and can't even jump off?

That was actually the moment the concept of increasing difficulty came about.

It really is simple, the more enemies there are on the screen the more operations you had to do so it took longer. Old CPUs didn't necessarily have the sync methods and games didn't use delta time, they just did an operation after operation as fast as they could.

Dark Souls 1 animations run natively at 30fps.

60 fps mod speeds them up so you'd often get clipping errors such as falling through the world when sliding fast down the ladders since game isn't programmed to calculate collisions so fast.

If you were to kill Ornstein and Smough at the very same micro second, only one of them will buff up every single time, as his death event code line was the first in the code.

gamasutra.com/view/feature/132500/dirty_coding_tricks.php

>Back at [company X], I think it was near the end of [the project], we had an object in one of the levels that needed to be hidden.
>We didn't want to re-export the level and we did not use checksum names. So right smack in the middle of the engine code we had something like the following. The game shipped with this in.
if( level == 10 && object == 56 )
{
HideObject();
}
>Maybe a year later, an artist using our engine came to us very frustrated about why an object in their level was not showing up after exporting to what resolved to level 10. I wonder why?

...

I'd just like to say every game that paints your first person model as practically a filter over the rest of the game should be removed from the internet and the devs should be publicly hanged. I should not have tiny baby arms compared to a guy's corpse when I attempt to loot their body.

Bethesda didn't hire the people they needed for their work, they just hired people who were their friends.

Just because their games started selling well since Morrowind doesn't change who they are.

>People still falsely attribute inverse square root to Carmack

I don't see how this relates to the topic

Gen 2 Pokemons code before release was so bloated that after a weekend of condensing, over HALF of the allotted game cartridge was freed up and the game run better as a result. This allowed Game Freak to add the National Pokedex and the Kanto Region (minus a few dungeons/caves) to the game, when previously these things weren't thought to be possible.

Satoru Iwata was the one who did the condensing

Because you were there to fucking see personally who did it first, dimwit.

>Muh idol, leave him alone!!!

>60 fps mod speeds them up
This doesn't happen with the majority of the animations though. Estus and humanity usage does sped up though, so do various in-game mechanics that were meant to run at certain speed.

No, but I do know it wasn't Carmack.

That's because Game Freak is terrible at vidya tech. Good thing someone fixed it though.

I'm so used to seeing the next gen version that I sometimes forget it was ever on just 360 and PS3.

Similarly, MGSV on 360 and PS3 is a miracle.

Heh.

Carmack himself says he didn't invent it.

I was talking generally, but yeah.

Iwata pretty much did everything pokemon related on Gen 2, hell he even coded the entire stadium games.

GF is a bunch of incompetent fucks, also gen 6 games still have stuff from gen 3.

Barren wasteland, less than 5 NPC's per outpost, terrible FOV for a fucking TPS. Yeah man, a fucking miracle.

>MGSV

Not really, it looks pretty last gen, the cutscenes look good but in game there is flaws

...

Some ladders that are "sticky" are used to trigger specific events. It's really handy

see: FEAR


Another similar example

In Metroid Prime, doors were loading screens. That's why the gamecube looked so fucking good. it only ever had 2 rooms max in memory, and it never rendered geometry behind it (it even "culled" whole sections of floor and walls when you weren't looking at it, even though they were one piece). So when you shot a door to open, it would load the next room and wouldn't open until everything in the room was finished loading. Then when it closed, it would remove the room you were just in from memory

the HUD was also an in-world effect attached to the camera. It was also locked to 4:3, because standard television and gamecube, so when you emulate it widescreen you get this

I'm having a real hard time finding tech images from metroid prime, but i've seen them before. If anyone has some that'd be great

If anyone mentions doom not being 3d is a clueless fuck.

I've heard people say that needing MGSV to run on 7th gen consoles might be why it was so barren and lifeless.

In Ocarina of Time 3D, a lot of the time Grezzo spent "developing" the game was redoing animations to run at 30fps, which proved to be a more monumental task than they thought. Because the framerate on the N64 was both lower than the 30fps standard AND extremely variable, Nintendo EAD had a complex series of animations that would trigger depending on their context in the game.

One example was in the fight against Ganon at the end. Due to the engine being under load due to the large area, the many destructible objects, the fire sprites, lightning effects, etc, the game run typically 3 fps lower than the game normally does at rest, which, considering the game runs at 20fps at the best of times, ended up lowering the game 12% which was immediately noticeable. Due to stress testing the game, EAD were able to determine that the game would be running at between 15 and 18fps during this fight, so different animations for Link were programmed to accommodate this. If Young Link is loaded in to the game using a hack or glitch, his animations are inherently slower and sluggish compared to the animations that Adult Link has in the final battle.

That's... pretty neat, actually

Metroid Prime had some real cool shit. Also, due to that two room maximum limit, there's all sorts of animations and shit hidden in plain sight, like how Samus' hand is rendered and changes based on what weapon she uses.

Isn't it a common knowledge? Ofc Doom 3 wasn't 3D just because it had number 3 in it.

Emulate it on Dolphin. You can play it widescreen now because the screen culling can be removed with an AR code and someone made a widescreen HUD patch.

her hand isn't rendered, it's only "rendered" while you have xray visor active. There's no reason to animate the hands if you cant see it

unless you gave some evidence outside of the xray that she does

Not surprised.

And they did all this for, feel free to correct me here, 4% of their total sales of the game.

PS4 80%, Xbone 10%, PC 6%, last gen 4% are the figures I seen kicking around last November

No, it's not that. They did go way overboard with development, but 7th gen versions weren't critical in any way at all.

you could see this shit in game too without the third person camera because of how fucked up your shadow was

imagine how many of those get forgotten and left in

...

>In Metroid Prime, doors were loading screens
This is readily apparent if you've ever emulated it. Everything runs smooth as fuck.

Conversely, if you hack a Wii using an SD card to play Trilogy, the doors take up to 10 seconds to open

A lot of Japanese are still playing on past-gen consoles, so every jap game comes out on ps3.

I feel like open world games in general are just barren and lifeless. The bigger the world, the less dense you can really make shit in it.

elevators are also loading screens

>the HUD was also an in-world effect attached to the camera. It was also locked to 4:3, because standard television and gamecube, so when you emulate it widescreen you get this

forums.dolphin-emu.org/Thread-ar-code-to-disable-clipping-in-metroid-prime-1-2?pid=370683#pid370683

FF8
The entire game's rng is just a giant text file with a list of numbers that are used to determine what should happen, and the current number on the list choosen is decided by how many unrelated actions have occured while the game is running.

Notably, knowing what increments the number list index and by how much, you can control the game's rng, most usefully for Triple Triad rule spreading, or Triple Triad rewards (free rosetta stones).

Some of the things that cause an update include: interacting with a draw point (1), using the draw point (2), asking to play TT (1), losing the game (1), winning the game (2), whenever a model is loaded in the scene (like students in the schools or buses in the city).

For those intrested, the game attempts 3 times to spread a valid card rule before trying just once to abolish a card rule.
Also the rules themselves are weighted to be more likely choosen, while also, an unused card rule still exists in the list and if choosen the game defaults to open.

Hard restting the game causes it to start the list from the beginning, which is why the first battle you fight after turning it on is almost always the same, or why the same card rule spreads every single time. Soft resetting does not cause this as the list doesn't reset, causing the (true) rumor that soft resetting does help with card rules.

"Random has spread" more often was not your imagination.

Yeah I thought the fucking game was fucking with me when I played it off an SD. Samus, on her way to the fire caverns, was sitting there looking around for a solid minute

>Conversely, if you hack a Wii using an SD card to play Trilogy, the doors take up to 10 seconds to open

Completely untrue. Or are you talking about putting the games in the sd card? When I played MPT, the doors at most took 3 seconds.

it's not even that impressive, it's just a newton-raphson approximation with a better starting point with that hex shit.

That's what I like about Rockstar, they really put a lot of effort into making suburbs/areas feel different.

>Or are you talking about putting the games in the sd card?
Yes, I thought that was implied lad

I was always like "wow, this shit is REALLY far down"

Why did no one use it before then?

Carmack didn't write that code, and whoever did at their company didn't invent it either

google "fast inverse square root"

In a lot of JRPGs with RNG based stat progression, the stat growth is based around an algorithm usually tied to the players name, to simulate true RNG.

sorry then mate. Then again, who would put their games on a fucking sd card?

I hate this argument.

The wheel isn't that impressive now, but it was when it first started being used.

Why did no one use it before then?

I was young and I've since learned, my dude

That would be fine if Gamebryo could manage Z-culling but it fucking doesn't

because it was the 90s, computers still ran on steam back then

> Mathisen had written an implementation of a similar bit of code in the late 1990s, but the original authors proved to be much further back in the history of 3D computer graphics with Gary Tarolli's implementation for the SGI Indigo as a possible earliest known use. Rys Sommefeldt concluded that the original algorithm was devised by Greg Walsh at Ardent Computer in consultation with Cleve Moler, the creator of MATLAB.[16] Cleve Moler learned about this trick from code written by William Kahan and K.C. Ng at Berkeley around 1986 (see the comment section at the end of fdlibm code for sqrt[17]).[18] Jim Blinn also demonstrated a simple approximation of the inverse square root in a 1997 column for IEEE Computer Graphics and Applications.[19]

they did, just not in games because inverse square root isn't super useful outside of rendering

it's also not 100% accurate

Thats really fascinating actually

You fucking retard. Steam wasn't made until early 00's. And it just had few basic valve games.

kys

B A I T

don't bite it lads

computers won't run on steam until gaben finishes dinner and releases it

most programmers dont do things that retarded

lmao

It's not that he invented it (it was most likely done in 1990 by Gary Tarolli), it's that no one really tried using it for 3D rendering in games and it confused him because it actually worked even though he didn't put it in. That's what the "What the fuck?" is for.

It's like trying to come up with a new two-wheeled wagon and accidentally making a chariot using a couple other wheels and a box some other guy was working on nearby.

>most programmers dont do things that retarded


so you're not in the industry then?

we do that shit daily

thats the way every random number generator works, more or less

I mean, do you know why it works?

even with the knowledge of how bitshifting works, it still makes zero sense

No one had to use it in for calculating lighting.

Any particular examples?

>that zombie vagina in early game release

It's funny to see this in a product, but it sucks to work with people like this. I had a project I was handed where the previous developers had included a guy who named variables "piss", "shit", and "ass", and didn't leave any comments. It worked except for the changes I needed to make, but it added work trying to figure out what he meant when he set faggot to the square root of ass plus dicks.

Off the top of my head, Dragon Quest games use it

>tfw I can't figure out programming for the life me

well yes, but most of them don't use a literal file of numbers to do it

It just works!

The fact they typed out a thousands of lines long list of numbers rather than actually use a pRNG when the PS1 is capable of implementing one is funny.
Also when you hear that the rng in FFX-HD on PS4 didn't work at all, it makes you think the programmer(s) at Square(enix) can't do number generators.

when it clicks it clicks, everything more or less makes sense.

You want to move the character left, you code that when X button is pressed move Y direction at Z speed.

its just starting small and building up like any skill really

Gandhi's aggression was so low in Civ2 that it often went below zero and back up to the max value (255)

In modern Civ games, they have his "Tendency to Use Nukes" set to max as a joke. Actually they set it to 12 in Civ5, even though the stats are only supposed to go from 1 to 10.

you think they typed them out? they just generated them and saved them in a file. alot of old games do that because it was faster than generating them on the fly. doom has a list of random numbers for it's generator aswell

looks like you can't figure out grammar either

>had to explain to a uni classmate in a group project that you can't use "nigger" as a variable for an assignment

Programming is very simple user. You just need to understand the simple concept of it all(Assuming you're not retarded and just jumped right into Unity like every retard instead of starting with C or C#, I'd argue C++ after C) and once it all comes together everything else is simple. Until you deal with multi-threaded programming where nothing makes sense because of timing

I remember there were other approximations, like the one used for sqrt (square root), because older processors would crap themselves doing it, or didn't even have it.

The NES processor didn't even have a Multiply, for exemple. You couldn't do 4*3 directly, you had to do 4+4+4.

i've never seen an introduction to programming course/book/article/etc that wasn't shit so that's not too strange

The build engine (DN3D) has some neat hacks and weirdness

Mirrors aren't actually reflections, they do some hackery to recreate the room behind it, when making a mirror you have to create an empty room behind it that's roughly the same size. They also glitch out if you view them at a very flat angle so all instances of them in the game limit the angle you can view them at.

The maps don't take place in a true 3D space. You can build rooms that go 'through' where another room should be and the rooms will still be distinct and not block/interfere with each other.

Imagine a spiral staircase, squash it down so all the stairs are flat and level, if you keep following the direction of the stairs (ie go clockwise continuously), you'll get to the 'bottom' of the stairs, despite seemingly just going around in a circle.

One of the reasons FFX HD took so long to come out is that the game was designed for a certain resolution from the ground up, and when the resolution is increased and the aspect ratio changed, it becomes apparently that to save memory, Square devs only partially loaded in models during certain cutscenes, or left models of other characters needed just slightly off screen and out of camera.

The higher quality character models used in close ups, for example, might only load from the chest up to display at 480p. When the game is opened up to 1080p, this becomes noticeable. SE had to go back and fix all of this, turning what should have been a quick cashgrab in to a full on project using a full development team. You can catch a lot of these errors if you emulate the original game and use a widescreen hack.

It's like cooking

you learn a recipe and then learn how to combine recipes into even more recipes

and then you google every problem you have and someone already solved it

I heard that somewhere, pretty hilarious

That's the definition of precomputation, ie. you generate a lookup table before runtime, and only search through it during runtime, saving precious processing power. Actually, a game that also used precomputation (as binary tables, not text files) was Crash Bandicoot.

It requires a routine and finding the kind of material that doesn't suck ass and paced in a way that you can absorb.
But it's mostly about building a routine.

Games are nothing but smoke and mirrors. If it looks like a duck, walks like a duck, then it's probably good enough to be a duck for the user.

This for example is fucking hilarious, but nobody knows until you open up an editor. There's a lot of silly work arounds like this in games.

>gen 6 games still have stuff from gen 3
"If it ain't broke, don't fix it" is a big idea in programming. CoD's engine for example still runs of some code that was first made for Quake back, pretty impressive when you consider that the engine is good enough for that rock solid 60FPS it gets even on consoles.

every game uses precomputation

Why is the name of the function censored? There must be a reason that you, or someone else, actually went through the trouble of putting a black box over the function name. I need to know. If you don't reply to this post, I'll come to your house and bang your mom.

there is no half A press, now fuck right off faghot

One neat trick in Metal Gear Solid 1 (PSX) that some of you already seen. When you're in an Alert state and keep killing enemies, more of them appear out of seemingly nowhere. They actually appear just out of the camera, but the game uses a neat trick to not just "teleport" them to where they need to be: if you keep killing enemies and run as fast as possible near walls, you can actually see the enemies coming from the walls!
This is very easy to see in the tank hangar.

That's my fetish.

MGS2 did the same thing. If you get the Document of MGS2 and use the free camera during cutscenes, you can see all kinds of whacky shit going on, like Ocelots's upper body locked in to the ground during the scene where you meet the President, or Solidus's non-cloaked model peeking up from the sea under the bridge in the scene before the plane fight. I guess Kojipro had the sense to leave the loaded but unneeded models a lot further off screen than the FFX team did

I had to blank it out because my thread would immediately get deleted if I left it on, with a message saying I should. No clue why. Any ideas?

Yeah, but this only enhances the effect of emptiness in my opinion. Like, you have this really well done, interesting looking area that just screams "there should be something going on in here" and yet there is nothing, not even a side quest or a random event because the world is so massive that anything actually happens in like 25% of locations at most. This created a lot of places that are just wasted opportunities for something interesting.

You can look up the original src code, unless some idiot has implemented this again in their own code in an attempt to be smart even though its highly inefficient these days.

Now I'm even more confused.

Some people are just never happy.

Jumping straight into Unity is fine as long as the game you're making doesn't rely solely on Unity's built in functions. It *can* be a decent way to get someone into C#.

...

I think Cred Forums detects some images as spam.

I thought this is how computers actually performed multiplications and any multiply instructions are there for convince/backwards compatibility when people still did stuff in assembly.

Someone post Evaxephon's programming scribbles here.

WE MUST NEST MORE IFS

How about behind the scenes at ID Software

I heard that horses were removed from the first Assassin's Creed because everytime they were used, there will be a game breaking bug. So they were relegated to loading screens basically.

>we

if it had merely detected it as spam, how would he know the specific part to blank out
She's going down! Down to Chinatown!

so you think if I type 5000000*5000000 it's doing five million additions?

Could it have something to do with censoring Facebook profile names?

In a quick glance the image might look like a social media post.

It's not really that, I do appreciate the amount of detail they put into their games. I just would personally prefer most open worlds to be smaller, but more densely packed with content and using all its assets. Bigger doesn't really mean better.

I don't know.

>horses were removed from the first Assassin's Creed

They weren't, though. You can even use them while fighting.

Then there's Mirror's Edge.

youtube.com/watch?v=LeA-386t38Q

World portals in Portal 2, even if they're only used once.

Masters of Doom is a pretty great read.

>ultimately ended up creating probably the best functioning ladders ever in a video game.
That's really sad because they're still pretty fucking shit.

carmack is a terrible person

the more i learn about romero the more he looks like an ok dude on the other hand

fuck dont give modern devs any ideas please.

It's fine, but that's it. You're throwing too much shit into your head at once that doesn't make it ideal. That's why a lot of indie games done in Unity run like shit. They don't know programming and don't give a fuck as long as it runs. Which is completely fine for most games, but when they have ambitious projects like every zombie survival then what a surprise.

It also doesn't help that C# and Unity have a lot of things already done for you so many don't question what's inside the black box. Very bad. I get that there's no need to reinvent the wheel, but jesus christ be wary of the performance cost when using X.

I am disappointed. The one who say that worked for Ubisoft a pair of years so I take it for granted.

From: en.wikipedia.org/wiki/Binary_multiplier
>Early microprocessors also had no multiply instruction.

Not the guy you're talking to, but are there any particular things in Unity that you know of that have huge performance costs that many scrubs do on a regular basis that a real programmer wouldn't?

...

It's usually more efficient to reuse a model rather than load in a new one.
The engine tells the GPU that this model is also here so draw it there, it doesn't need to have a copy in memory for each copy of the model, just the position data.
Granted in this case it wouldn't be a one time use model so the performance hit would be negligeabel either way.

You can't ride them in cities, only in countryside, perhaps that what he meant.

No. It said something like q_rsqrt on your image is detected as a spam and I got warned for it

You fucking moron. Video games were invented in 2011 by Todd "Bethesda" Howard.

romero is a passionate idiot and carmack is a dispassionate genius
thats why they worked well together

Don't cache all your assets at once. Many games do this, and it ends up taking 2GB of your RAM memory for a 2D sidescroller.
Don't leave free objects scattered around scenes, they tend to cause memory leaks.
Don't google "how do I do this in Unity" because 50% of the time, people just copy-paste some 100 lines of unoptimized code that could be trimmed down to 15 by any competent programmer.
Actually, just don't copy paste stuff from tutorials. Uililia does it, and he said his code already has more than 5000 lines (or something). It's a nightmare to mantain.

Remember it being mindblowing how even 'simple' collision detection in 2D games requires creative thought.

You just map a box around the player and map a box around objects and if they touch you register a collision right?

You can but the game will run like dogshit because you will be comparing the player against every object in the game every frame so you're doing 100,000s of needless calculations a second.

One workaround is to map every object to a tile on the map, If you know the player can only move a maximum of 1 tile a frame then you only need to check what tile the player is in, then check it against the objects 1 tile away in each direction. You end up doing a few hundred checks a second instead.

Other methods are to do a collision detection 'map' with just black and white pixels that's invisible. If the player hits a white pixel on this map, register a collision.

Simple problems which require creative thinking are one of the things that give me a buzz when coding.

*said

half-asleep today.

I remember seeing a screenshot from the "HD" version that showed how some minor characters are actually part of the background and, therefore, their models could not be improved.

carmack is a straight-up sociopath

>Mirrors aren't actually reflections, they do some hackery to recreate the room behind it

That's very common in early 3D engines before they (and the hardware) could do real time reflections.

I used to do mapping for half-life and that was exactly how you did glossy floors. Make it semi transparent and simply build an inverted replica of the room below the floor so it looks like a reflection. Of course you had to take care not to have any models in the room or that would give away the fact it's not a real reflection, though IIRC someone made NPC models for that case where the second model would be inverse under the ground acting as a reflection. I think it was in Blue Shift? Still it was pretty restrictive since decals and such would not mirror.

While we're on the topic of HL, you couldn't have complex entities composed of simpler entities with different properties. For example, you couldn't have a solid door with a semi trasparent (glass) segment, so in those cases the solid part and the glass part are two different doors, and you just make the big one trigger the small one when it is triggered itself so they open in unison. Also you couldn't have composite entities, so for instance no moving elevators with working doors that move along with the elevator. The one elevator with such doors in the game isn't actually a real elevator, you get in, it does a screen shake, then loads a different level where the outside of the elevator is changed.

*maintain

I can't really say since I don't use Unity, but it's nothing against Unity in particular. It's prebuilt libraries since you personally never implemented them so you have no idea how the performance is.

A good all across the board example would be raycasts. You have no idea how retarded indie devs use this without ever wondering the performance cost until they shove a ton of them in a single frame.

How about a simple one that everyone can understand? String comparisons. Seems innocent, but overtime if you do a bunch beyond parsing then it all starts to pile up. It's not even like string is a complicated to implement or even think how it's implemented.

guy's not human, there's nothing wrong with that
good book

there aren't really any major points where you can say 'do this and your game will run better'
it's a combination of all the small mistakes you make because you don't know how code runs under the hood

>down to chinatown

FUCKING KEK

I've gotta ask, was there some sort of fuckery done code wise for Legacy of Kain: Soul Reaver on PS1? It's been on my mind for a little bit now, because i started a new game on the ps1 version.

I'm a programmer and I don't get what the fuck is happening here.

I always wondered why they made the call to make it a female model.

It uses streaming. Open the CD cover and it will stop working in a few seconds.

Hacking son.

I doubt it was a deliberate decision, they just made an NPC and it happened to be female.

Didn't Fallout have an NPC wearing a train for a hat?

They use an approximation of the the inverse square too algorithm to calculate lighting in the engine. If they used straight calculation, it would take much longer.

epic shitpost

This.

Fucking scumbag had a beloved office cat, that id loved, put down randomly one day.

When everyone asked where their favorite cat went, he said "I got rid of it".

Fucking worthless faggot. Mentally ill cock sucking bacteria.

It's a hand accessory, sorta like a glove.

Huh. I heard that a lot of the game was scrapped because of deadline limitations but the devs basically "stitched together" the worlds they had finished, is that true?

you sound awfully upset about something that has nothing to do with you

sociopaths affect us all

My sister dubbed that the
>eyes in the balls effect

that happens to a large amount of games

Probably. Most finished games have a lot of leftover stuff.
I thought you were asking about the open world stuff, because LoK didn't have many loadings. You could even force an error in the PSX version, and the debug would appear onscreen, with a message saying "streaming xxxx sector".

the magic of bit shifting for random numbers in super mario 64:

youtube.com/watch?v=MiuLeTE2MeQ

It's partly true. Kojima himself confirmed that Mother Base customization was removed, and the platforms have such gigantic bridges between them, because the 7th gen consoles needed to unload the previous platforms for performance reasons. That's also why vehicles and animals you fulton don't show up there, and weapon emplacements are pre-set.

Did these people actually just copy and pasted Scooby Doo game assets in Sponge bob?

I don't understand, built in string compare functions are more costly than creating your own? Isn't it just a compassion of char arrays?

You'd be surprised to know that only 30% of all games reach the retail phase. The rest are either totally scrapped or turned into something else.

Used the same engine didn't it? Doesn't the game have a ton of scooby doo assets left in it as well?

True. I appreciate the answer.

You could? How do you make the debug appear? I apologize for asking, I just love learning about these kinds of "things", you could say.

Are you actually asking if some generic code got reused for another game? What would be the point of rewriting it specifically for sponge bob?

Someone post yanderedev's code, I need a laugh

To be honest, I'm not all too surprised.

w-what?

new wheel > old wheel, duh

google it nigger

>or left models of other characters needed just slightly off screen and out of camera.
many, many, MANY games do this

Not only vidya, any kind of software. I remember some kind of malware that opened up your browser outside of your screen, hid it, loaded ads in it and clicked on them. Or maybe it was just a dream.

wait until he finds out what studio tv looks like off-screen

...

fukken saved
5'd subscribed

>Or maybe it was just a dream

i have dreams all the time of crazy viruses and malware fucking up my computer

Vib Ribbon: a game so small in filesize that it can be loaded into the Playstation's RAM, take the disc out and play just fine.
They used it to advantage by letting you make and play levels from audio CDs you put in.

they should give the terraria guy his code back

Is what's wrong that he didn't use a case statement?

I only barely know programming but isn't that the kind of shit you use switch case for?

I don't understand what's bad in this as a non-coding idiot. I do know that lots of ifs/ands in a row is bad though.

would be perfectly valid in python :^)
I don't know the context of the code, but why was Eyecolor a string in the first place?

I'm assuming it's an UI string visible to the player, and it's just checking directly against that (like what's currently being shown on a combobox or something).

>superfluous string comparisons
>magical values
>not using a loop
>H A R D C O D E D
modifying this piece of shit code would be prolix as fuck.
don't do this guys.
don't be a retard.

Then write down how you would fix it.

>>not using a loop
Why would a loop be helpful

>not using a loop

A loop for what?

...

A lot of things are wrong.
No switch. Doing comparisons (==) for every single frame.
He made EyeColor a string instead of just using an alias or having the stuff on the right in the first place (given that the player won't see the source code anyway).
He also nested a bunch of ifs/elsifs in another condition (EyeColor != "") that'll probably be always true.

>loop
>not just a dictionary
why waste time?

For each eye. Store the eyes in a list, then iterate through them. Then it won't break when he adds triclops and cyclops girls.

Its the classic. Some software engineers essentially put a bunch of 'waits' in their code for non-gaming programs. When the manager wants a speed increase or you want to upgrade it for the public, just delete some of them

If he attributed a color to a string in the first place, nothing will fix this. It needs to be recoded from the beginning.

Yes, that's one issue. A switch would be significantly more efficient and easier to read.

Also, you really shouldn't be using hardcoded values for a string comparison like that. If he were to ever make a typo and and set a characters EyeColor to "white" then this function would fail and he would never even know that it failed. Creating some string constants instead would avoid the typo issue (his compiler would point out his typos) and increase runtime efficiency, it's just all around safer to do something like
"EyeColor = WhiteColorString"
"if (EyeColor == WhiteColorString)"

And of course, the entire concept of using a string just to create a different object is completely absurd. Really, EyeColor should just be an object of type Color. If he did that, he could just be using constants instead so that he could just say "EyeColor = Color.White".
If he had done that, then he wouldn't have needed this block of code at all.

The storage and implementation is all irrelevant. Although, the assumption of the implementation should be return once false.

Anyhow an example of retarded use of it would be keep tracking of an object by name. It's called "BoxingtonMcGee," but the problem is you have dozens of objects also starting with "Boxington" What's the problem? A lot of comparisons are going on. If someone does it once, they're bound to do it again.

or see this Now this isn't a big deal if you're parsing data, aside from the ton of elseif. Considering I see "EyeColor" I can assume it's not happening every frame, but you see this also very common to do constantly at runtime for w/e reason. "Black" and "Blue" are the most common words with 2 "Bl" and when looking for Blue you just did 11 checks where worst case Brown at 14.

Overtime those innocent little comparisons will add up, but again for parsing data it really doesn't matter. You do it once in a while then w/e.

Also the Thermal Visor can see the gas emission of those invisible platforms. Just like how rain drops on top of it instead of through it

>Doing comparisons (==) for every single frame.
Was this actually in Update? I assumed it was in Start or Awake, since the renderers wouldn't need to be changed more than once.

>He also nested a bunch of ifs/elsifs in another condition (EyeColor != "") that'll probably be always true.

Kids, don't listen to this. It's good programming to always check for unexpected values instead of just shrugging and saying "meh, it'll probably always work" then having your shit unceremoniously crash without even as much as an error message.

Better way would be to define an object containing (among other things) an array of colour values with the string colour as the key so you could just do:

public function getRealEyeColours(eyecolor)
{
return this->eyeColours[eyecolor];
}

I'm discalculic, so I'm useless in answering actual numbers questions.

fuuug. true, I was thinking of parallel arrays (which is pretty much what a dictionary is but as a single data struct IIRC). I'm going to be honest, I haven't programmed in awhile because I'm a sack of shit.

>assuming he isn't as stupid, he would define a map, eyeColorDictionary, such that string -> color struct, and initialize it up with the appropriate values...
>RightEyeRenderer.material.color = eyeColorDictionary[EyeColor];
>LeftEyeRenderer.material.color = eyeColorDictionary[EyeColor];
I'm sure there's a better way to do it that's faster and cleaner, but I'm not that smart enough

Easier to maintain, but for the most part a loop is worse performance. Hard coded values.. yeah sure it's bad, but they're colors. Realistically I don't see red changing anytime soon.

What I mean is that he should have made two or more separate cases, not nest a bunch of ifs into the more likely case.

fuck that, make an Enum called Eyecolors, make a static extension for it that looks up a dictionary, bam.

public static Color getEyecolor(this Eyecolor color)
{
if(!dictEyecolors.contains(color)
{
//should never get in here, but better be safe than sorry eh?
return Color.white
}
return dictEyecolors[color];
}

the point is you shouldnt be comparing strings in the first place when you could be comparing integer constants

I assume he's just checking against GUI values, like what the player picked in a character selection screen. I mean, even if you're using a third party GUI solution that automagically sets your variables to the correct thing based on what the user selected, what it's doing behind doors is basically the same as that block of code, isn't it?

Someone explain to me wtf OP is talking about.

performance for this functionality that will be executed on modern PCs is negligible for the most part. better to have cleaner, more robust language than that shit in this instance.

Metroid Prime had an insanely good design document, it's why it ended up being so good.

Lots of care was put into shit like enforcing minimum size of platforms (generous so you wouldn't overcorrect and fall off the platform) and maximum jump length (well below what you were capable of). Some of the best platforming in an FPS there's ever been.

No one should ever learn C++ under any pretense

>amateur hour programmer trying to sound smart
there is nothing here to use a loop for, you should be using a switch statement or a dictionary, sequential elseifs are basically a switch statement anyway. the only complaint that has any weight is string comparsions

Well yeah the interesting bit isn't the equation, it's the magic constant that no-one really knew the source of but that was able to make for a nicely accurate result. I agree it's kinda blown out of proportion these days though, like unrolling the loop basically saved postscript at the reveal but no-one's rubbing their dick over Duff's Device today.

if it was written by a monkey, sure

An associative array is directly addressed though, why do a needless search?

Which part? The image, the topic, or the bunnies

The "Gandhi as Nuclear Terror" bug will never not be funny.

Other than the fact that it is one of the faster language since it doesn't assume you're a retard. Considering what board we're on, C++ is still very reasonable to learn. Almost everything else? I completely agree.

what if the pretense is maintaining bad but critical c++ programs for phat stax

By needless search, do you mean the if clause? In case you add another value to the enum but forgot to put the Color in the dict.

Being required to for class is also a valid pretense.

or you know, he could actually use data structures as abstractions of all that and not only would it be simpler to debug and change, but it would also be much less wordy at every step of the code past assignation ?

if you think that pile of shit is acceptable in any way you're not qualified to call people amateurs frankly speaking

Everything

.contains searches the elements.

Any of you fags have some no bullshit sources of easy to read comp sci shit?

Especially Big Oh and Recursive relations

>sequential elseifs are basically a switch statement anyway.
One is a binary search the other is a linear comparison. They're not the same.

>"data structures and abstractions and all that"
lol
a dictionary is a data structure, which I mentioned in my post, even then it's not strictly neccessary if your data is small and unimportant you can just use a switch statement

>dictionary
which I conceded to an earlier user, but you don't think hardcoded isn't a valid complaint? you must be a retarded to think that's not a terrible design decision

what's worse is you have myself and others who aren't making games pointing out how terribly flawed this moron's design is, even for a small part of the whole application.

Yeah, what else would it do?
But like I said, imagine he wants to do DLC that adds Pink and Orange eyecolors, but forgot to put their Color values in the array/dict. This way, something will always show up.

depends on the implementation, best case it's a binary search, worst case it's constant. that's why I said "basically"

>Big Oh
All you need to know for compsci
Big O = number of loops

A few weeks ago the player with the lowest rank in Overwatch managed to have his rank underflow and he ended up as the highest rank player for a few days

>The image
en.wikipedia.org/wiki/Fast_inverse_square_root

>the topic
Instances of developers using unconventional or seemingly odd methods to make things work. Also insulting yanderedev and other bugs in games.

>the bunnies
Blizzard uses bunnies to trigger stuff in WoW. Here's one that caused earthquakes during the cata pre-patch wowhead.com/npc=37543/dnd-shaker

In Vanilla there two ways for the game to mark a quest as complete
>Kill some target
>Turn some item in
For quests where your objective was just to talk to some dude, they spawned an invisible bunny then had the npc kill it to mark the quest as complete. At least that's my understanding of it

It would probably be better to catch the array index exception

Crazy how Ubisoft do dat

I used to have a snippet of Anachronox's dev tools saved on my computer. Can't be added to find it now, but it might be on Cred Forums's archive assuming the latest one goes back a few years.

One of the devs assigned ID's alone the lines of "CORRINE'S SMELLY CUNT" and "FUCK CORRINE."

Apparently Corrine Yu was not well-liked.

depends. if your data is small and local, there's actually nothing wrong with hardcoding it. We don't know if that's the case just from one snippet of code. In real life, you don't decouple every piece of data even though it may be considered theoretical "best practice"

Damn. I'd be destroyed during code review sessions if I had pulled shit like that.

You have a point, you could do a try/catch.

"so... About your pull request..."

I don't know anything about coding but I've always loooved shit like this, it's insanely interesting. Great thread.

fuck, i wish they went back to tricking us in the code and stopped fucking full-out jewing us right in the open

but why would you use that many comparison statements that wouldn't be flexible in the least if he wanted to add more colors (also it's funny that he has fixed colors anyway but that's not here nor there)? this whole code block just smells of laziness, which is funny because going the data struct route would be much less typing, and shortsightedness.

of course it depends, user. what I'm saying is that in this instance and from what we can deduce from looking at this snippet, the context in which we were discussing hardcoding and dictionaries, his design is poor.

Why does he only define like a dozen colors anyway? Why not just use a color picker and let the player choose his own rgb values? Unless he does something special with them, I guess, like characters with red eyes have an edgy multiplier or something.

The best solution is an enum for eye colors and a look-up table mapping enum values to color vectors.

Since that'd take 2 cache lines for the eye colors he has, if you wanted to go nuts you could compress each color down to a 6-bit (3x2-bit elements) vector, and store the whole table in a 64-bit integer.

...
...
...

"FUCK CORRINE WITH A CACTUS"

*shits pants and runs out*

because then you have to code a colour picker

3 sliders you mean? or even 3 text inputs? that's not a lot of work.

if he wanted to add more colors he'd just copy and paste the line, the same way you would modify a data structure. yes the guy is a shit coder, but if you want to analyze that block of code in a vacumn the only thing you can really complain about is he didn't use a switch statement. If this is the only place eye color is referenced in the whole program, there's not really anything wrong with it.

You'll want presets anyways. It makes it easier for people to choose.

He loves using strings in places they don't belong

Thats funny, Corrine Yu is practically Carmack tier programmer.

She also got a rockin pair o boobs too.

>talking about cache lines and bit compressions for a gui event in a unity application

Someone should really tell him that case statements exist already. Like there's a point where it stops being funny and starts being sad instead.

if she's also a carmack-tier asshole that'd explain the ids

At this point I'll just assume/hope he's fucking with people for a laugh.

he's not, he's the perfect example of a unity developer, cobbling together premade 3d assets with copied scripts and barely functional programming knowledge

youtube.com/watch?v=ny_sAqDPhi8

I once worked with a fairly talented programmer. Not Carmack-tier obviously, but still pretty solid.
And if your code wasn't up to snuff, he wasn't shy about letting you know it.

It was frustrating as fuck working with him, because I was just some dumbass schlub code monkey.

He definitely isn't.

So for string comparisons I should change the string to an number and do number comparison?

it wasnt it wasnt it wasnt

Actually the rooms that you see in reflections are not separate rooms that have been recreated. As you hinted in your second point, areas in the Build engine do not take place in 3D space, but are actually rooms that exist in their own space and are connected by portals. Mirrors are created by connecting one side of a room to the same side but from the opposite direction.

just throw in a == and save it as .php

You should use the number as an ID on an array or some similar sort of shortcut

no
if you have a limited number of values you use an enum/constant

like if you have a chess game, you could use the strings "Empty", "Black Pawn", "White Pawn", "White Bishop" etc.. or you could use const BLACK_PAWN = 1, WHITE_PAWN = 2, etc. comparing an integer is much faster than a string and you still have the ability to use the actual meaningful name of the piece, but most lazy/incompetent people will just use the literal string instead

Usually good programmers are proportionally lacking in human relations.

...

If you're doing something that involves string data, then a string comparison is fine.
e.g. a user's text input

However a string comparison is fairly inefficient, so you shouldn't be using it in the manner that YanDev does

Agreed.
Then there are guys like me who are jerkasses AND bad programmers.

Well that's true I don't usually constants. I'll keep this in mind

>not bitshifting the string to make it cool

Fake it till you make it.

If you code for Unity, enums are your friend. Never forget that.

I'm pretty sure I've seen a post worded exactly like it, with the exact same image like a year ago. Might be pasta.

Every day, buddy. Every day.

You still have to write down the strings in the enum tho. Literally only useful if you're going to do comparisons in more than one place, otherwise you're actually writing more to achieve the same.

>You still have to write down the strings in the enum tho
please leave

variable names are not strings

I don't get why everyone's freaking out. Almost none of you noticed and they saved time/ram so it was a very smart decision. Not lazy at all

yanderedev detected

>efficiency == number of lines written

Of course, hence "go nuts"; I just think the switch statement solution being proposed isn't much better than the if-else chain (not that it's as terrible as people are saying in the first place).

It's a simple map from one kind of data to another. A look-up table is the way to go. If you wanted to stick with strings, a dictionary (as one user suggested) is fine. If-else chains and switch statements indicate legitimately dynamic behavior, which isn't present here.

he probably has an app that goes off whenever his name is mentioned in a thread

I wish I was joking

The actual fucking string of text, autists. BLACK_PAWNS is a string of text that needs to be written regardless of whether it's treated as a string or a variable name in your code. If your goal is to write less, this is not one way to accomplish it.

>efficiency == number of lines written

I'm out, this thread is fucked, we had a good time lads

>months
Granted Bethesda are by far the most incompetent and poorly managed studio out there but months?
Most of the assets were already there it would take a few hours at most.

i see you've met my boss

the goal is not to write less, the goal is to make the program run faster. comparing an integer assigned to a variable name is faster than comparing a whole string at runtime

He does like string comparisons

>app that goes off whenever his name is mentioned in a thread

How many if statements would it contain?

kek

kek

he gets the entire content of the internet in one big string, splits it for ' ' and then has millions of if cases like
text[0] == "yanderedev"

Speed is one thing, but the greatest gain is that you can use the type system to prevent mistakes. Magic strings cause bugs.

>Completely working train system
>In a buggy messy shit of a game engine used in FO3
>Not taking up months of work

They'd have to re-write whole engine ground up

Stop it.

only if you're a shitty / corporate programmer

Some people don't want to waste time time writing shit.

Yeah I got that when I read your post the second time around but fuck it man, now I gotta stick to my argument in order to save face in an anonymous japanese imageboard.

HAHAHAHAHAHHAHAHAHAHHAAH *inhales* HAHAHAHAHAHAHHAHAHAHAH

I despise that shit. Valve games are the worst at it. Standing has the camera in your chest, and crouching shifts the camera all the way down to your ass, leaving your upper body still exposed while you can't see or shoot anything behind a wall.

A game that does it sort of right (in regards to the same kind of game) is Call of Duty which accurately shifts the camera to the top of your head in any stance. However it also causes bullets and projectiles to fly out of the top of your head as well.

The only game that does it right is ARMA which affixes the camera to your model's head, and uses vectorized aiming for weapons so bullets appear from the end of the gun rather than out of your face.

You're an idiot.

>he has a shitload of string arrays manually declared to be able to store every single word on the internet
>as the internet grows he has to add more and more arrays

>Some people don't want to waste time time writing shit
>posts on Cred Forums

Have you visited www.thelostworlds.net yet? For all I know, this site should have all the answers to LOK-related development questions.

IT

>trying to defend your shit coding
remember anons, this is the guy who got valid critique from a better programmer and then whined about it

for (int i = 0; i < post.length; i++)
if (post[i] == "Y")
if (post[i+1] == "a")
if (post[i+2] == "n")
if (post[i+3] == "d")
if (post[i+4] == "e")
if (post[i+5] == "r")
if (post[i+6] == "e")
if (post[i+7] == "D")
if (post[i+8] == "e")
if (post[i+9] == "v")
shitpost();

call myself a dumbass but why not just use 2 cameras? one for the player and the chesteyes one for the wepaons?

It's messy and hilariously lazy but it's doubtful it would have any real negative impact.
That said Bethesda's Gamebryo renders everything you're looking towards regardless of whether or not you can actually see it (so if there's a table on the other side of the wall and you're looking at said wall the table will be rendered despite not being visible) so it could potentially have a (negligible) impact on the frame rate.

>Using strings instead of integer flags
Its like he's never even looked at anything remotely technical. Not even messing around with the console in Source games.

>IT
?
Performance?

What about lowercase Y and D?

>remember anons, this is the guy who got valid critique from a better programmer and then whined about it

You honor me. I'm just some random nobody.

user, you forgot to account for capitals and variations. You need more if statements.

He has one similar block of code for every single possible combination of lowercase and uppercase chars, of course.

You say that but Bethesda literally do not know how to make ladders to the point where they're actually very self conscious about it.

>yanderedev
>for loops
oh come on user, you can do better than that. it should be a huge nested if

Not really weird but here is a really good article on how they did the AI for FEAR and how it works aigamedev.com/open/review/fear-ai/

it's not 'lazy'. it's bureaucratic. You have artists making the props, and level designers making the levels. the level designers make the best out of the props they're given. In some cases it means using them in ways they aren't intended to be used. Shit like that happens alot in games

if (post.length() == 1)... if (post.length() == 2)...

Oh god

>mfw working as a system programmer and reading Cred Forums programming threads

Ladders in first person games are invariably shit, the best ladders I've seen in a game were MGSV's ladders though that's more to do with the animation quality than anything.

Someone more dedicated than me can perfect this lpaste.net/4202149741313654784

>loops
he wishes

more like
>string wordOnInternet1 =
>string wordOnInternet2 =
>...
>string wordOnInternetN = ...
>if ("yanderedev" == wordOnInternet1) {goto SHITPOST;}
>if ("yanderedev" == wordOnInternet2) {goto SHITPOST;}
>...
>if ("yanderedev" == wordOnInternetN) {goto SHITPOST;}
seems more plausible now

this joke stopped being funny 10 posts ago

it will never stop being funny

if (post.position == "10 posts ago") post.funny = "funny";
else if (post.position < "10 posts ago") post.funny = "not funny";

Nah it's just lazy, takes ten minutes tops to cut the shelves into a table and tweak the textures accordingly if need be especially given the prevalence of quarter and half shelves in the game.

you missed the point of the post. if the level designers and artists are two different groups with no communication then shit like this happens. sometimes different departments are even forbidden from talking to each other except through managers

>with a better starting point with that hex shit.

Deriving that hex shit is damn impressive, retard. In the general form, you can derive it for any x^p where |p|

That would work just fine. In fact, both engines have existing examples, one unintended, the other deliberate.

In Left4Dead, players could use the command console to change to Third Person, and could adjust the angle and position of the camera for ideal placement. You get the view from this hovering camera, while the camera still stuck in the player character model serves only as where the bullet hitscan comes from.
However, this is unintended, and there is no code that automatically aligns the two cameras' focal points. No matter how you tweak the numbers, aiming in third person in L4D had an inaccurate offset. Too close and the shot was to the left of the crosshair. Too far and it would go off to the right.

Modern Warfare 2 had that Third Person game mode in which the camera had both an "over the head" and "over the shoulder" view depending on if you were running or aiming. Given that it was a fully fledged feature, the devs properly aligned the character model camera from where the shots came from and the third person camera you were looking through to the crosshair, accounting for environmental obstructions and distance.

ARMA has the same attention to detail, but you can also switch between first and third person on the fly, and both are perfectly accurate.

For the former two games, it would be perfectly possible to stick a camera on the end of the gun model and use the camera as the emitter for the bullet hitscans. In fact I think that's what the source engine game Insurgency does.

How the fuck are developers still making unsigned int errors?

Local man getting his sides obliterated.

I never thought i'd say this, but i got into programming a few months ago and love it.

if (posts > "funny";
} else if (posts > 10){
cout >> "unfunny";
}

a multitude of reasons

it's such an original and hilarious joke someone made it 5 posts ago

by typing int instead of uint32_t

oh shit it's the joke-police

Today's programmers don't even know what a fucking pointer is, let alone an unsigned

That's not really how Bethesda as a studio works though, granted management is fucking abysmal but because of that the environment is laid back enough that you can just walk up to whoever and ask them to make a thing or what have you.
At times this actually leads to some of the more interesting stuff in Bethesda games like the entirety of the Dunwich Building for example.

>stop having fun guys !

I understand you'd have that impression after going to a third rate java mill "school", you fucking pajeet

More like stop circlejerking over the fact you know what a fucking for loop is

hardly anyone uses c anymore
t employed c programmer

>simpsons and kevin smith reaction images
damn I didnt know I was dealing with the master of comedy

>What is embedded systems

do you lack affection in your life user
tell me where the booboo is

a field that has much less jobs available than everything else

>Everyone was making fun of Yandere dev
>Now they're at each others' throats
This just keeps getting better.

>You will never get to use the beauty of C in production to create clean, crisp, elegant code
>You will be forced to use the visual clusterfuck of Javascript and the hellish resource nightmare of Java and C#
I was born about 15 years too late.

yeah in 5 years all the electronics in the world are going to be running java and python vms

Remember the Skyrim mannequin bug? They would sometimes move. Turns out they are NPCs that are frozen, but sometimes the script that freezes them loads too late and they move around the room that's loading, and freeze once you get in.
It's super creepy desu.

You sure showed me user, I'm sorry that my taste in reaction images is not to your liking. Perhaps crying about it some more will help appease your frustration?

you can still write C programs right now dumbass it's not like the language isn't supported anymore

I blame arduino

Do you not have basic reading comprehension or something?
>C in production
>in production
>p r o d u c t i o n

C isn't clean, it's a namespace nightmare with zero memory safety and the hackiest error handling you'll ever see in your life

To my knowledge, Arduino still uses C?

Remember Fallout 3? The physic would sometimes glitch out when entering a new arena. Objects would roll around (sometimes even glitch through the wall or floor) and traps would be activated without anyone there.
That mannequin thing sounds creepy though, would make a good horror game.

WC3 DotA had a tonne of these workarounds.
One I remember was, to get flying vision, they spawned a flying unit above the camera level that was tied to your movement and provided the vision for you.

It's some sort of bastard child between c c++ and java
>The Processing language builds on the Java language, but uses a simplified syntax

>I don't know how to organize my code beforehand
>I want a bloated runtime environment to do garbage collection for me
>I don't know how to manage errors

yes it's used for production in many places aswell, just because it isn't used in web dev or whatever amateur field you're in doesn't mean its depriecated

also this

What the fuck was going through his head when he wrote this?

>C is used in production all over the place!
>hardly anyone uses c anymore
r e a d i n g

Wait, is he checking if the same thing is true twice?

that's programmers for you

he just wants to be sure, ok?

>>I don't know how to organize my code beforehand

What the fuck are you talking about? Are you literally 13? You've never had to use someone else's code? Name spaces are fucking important, you mongoloid. It's a big part in HOW you organize your code.

>>I want a bloated runtime environment to do garbage collection for me

Yup, you're 13. You don't even know the difference between memory safety and gc.

>>I don't know how to manage errors

Yes, I do. Hence why I know it is fucking hacky in C. It's a fucking global variable, you nigger.

just because he posted it doesn't mean he's right
>r e a d i n g
are you retarded

C is responsible for pretty much every security vulnerability in the last 30 years. And it set back compilers 20 years or so with its retarded "type system"

nerds

Alright Cred Forums, enlighten me: What's the best programming language in the world?

lua

javascript

>hacky in C. It's a fucking global variable, you nigger.
Wait, so there's no protected or private variables like in c++?

You would be surprised how big it really is, and how much doesn't use C.

Malbolge

your own

R

unrealscript

C isn't an OOP language.

>afk for a bit
>come back to see this
nigga. Surely he's just memeing us

C++ Son.

>lua

It is crazy what this can be used for now.

Python and Rust. Depends on what you're doing

there is no encapsulation in C

A variable can be private to a file or to a function. That's it.

Why do you people have this thread when I'm away? I wish these threads happened more often...

APL

because you weren't here to fag it up, cocknut

>7th gen consoles running next gen games
you guys don't even know how quality it gets
youtu.be/QLFRQNaoguY?t=1459

Make one?

this is like a Cred Forums thread except with way more shitposting

I wouldn't call a scoped variable the same thing

"The best language" is project dependent, but design patterns and good practices are more generalizable and more important for developing good code.

I don't. Just attracts shitposters. I'm glad we didn't have a 200 post discussion of unity vs unreal vs doing everything from scratch

Ask a professional C++ dev anything

english

i know basically nothing about coding, can that just be written as

if (x >=y)
value_to_return = true;
else
value_to_return = false

?

>Cat shits and pisses all over the place and lashes out at people
>Woooow how was I supposed to know I was going to get euthanized mewoooooww

Why is C++ so cute? I want to marry her!

I mean if that's the kind of shit you want you can always learn PHP user.

Kill yourself. You're not special and your work isn't important

return x>= y;

What does semen taste like?

What makes you more interesting than the hundreds of other professional C++ devs on Cred Forums?

it can be written as return x >= y

Piet.

tcrf is a good source for this thread. Fun development things in many articles. Classics include The New Tetris. There's others too. People on Cred Forums don't seem to care though.

there's no reason for it to be a function in the first place

"Best" doesn't exist. Depends on what you plan on using it for.

>your staff consists of drooling retards
java
>need shit to go fast
C
>fast but with class
C++
>reasonably fast, but semi retarded
C#
>making a website back end
NodeJS probably and I fucking hate NodeJS. It caught on and nobody bothered to question why use that garbage.

These threads die easily though. I'm surprised it is 400+ posts.

does your resume include "eats, dreams, and breathes code"

are you memeing me?

>fast but with class
I appreciate this pun

>13 year old detected

I bet you haven't even written 10k LOC in any of those

>space ship remains the same speed regardless of how many enemies there are

Unless the game used two CPUs, one for the invaders and one for the logic, I'd post "that's bullshit but I believe it".

...

Bullshit, i rarely see dev threads not go into bump limit.

This is fucking brilliant
They keep one model in memory, and they just keep pointer to that model in memory, changing just the scale and coordinate of the one single point in memory.
I mean this saves shitload of ram.

These programming language arguments are all great fun until you realize 110% of the world runs on absolutely-no-fun-allowed enterprise Java with abstractions and layers deeper than the Kola borehole. It sure brings in the money though...

t.cushy javadev

Fuck I forget this returns true or false, I'm dumb.

This can just be an or if statement?

To make smaller shelves in Skyrim, Bethesda would clip larger shelves through the floor so that only a small portion of the shelf is visible

but this is Cred Forums and java is no gud for games

except minecraft

To make smaller shelves in Skyrim, Bethesda would clip larger shelves through the floor so that only a small portion of the shelf is visible

...

>long hair graduate
this image triggers me
Wu never graduated university, furthermore she was a man during her time in univeristy

68k Assembly

that's probably a debug option for testing shit.

Ook!

fucked up if true

Yeah people ITT have no idea how flyweight pattern designs work so they think this is bad. A modular furniture system could be better but this is very good.

>mfw

how has this remained a secret so long? are you Todd?

have fun putting furniture on the second floor.

It's a videogames standard really. It's been brilliant once, not exactly anymore.

>This can just be an or if statement?
There's too many things wrong with that tweet to list in a single post.

(Tweeter = Gamergater) while always return true, it is an assignment not a comparison.
Same for (Tweet=Negative).
And all it would do is print "Block" to a terminal output. It wouldn't actually do any blocking.

Skyrim doesn't render draw floors at once, saves resources and prevents shit from sticking through the ceiling/floor.

I have except Java, that's why I listed them.

While Java itself isn't bad, it does assume you are retarded with a lot of behind the scenes checks. Which can be good or bad depending on the situation. C# does the same in debug, much like every other language, but still present in release just slightly less.

Yeah nothing wrong with Java. I didn't mean to imply that. For the most part probably 99% of use, it doesn't matter what language you use.

ah so it works perfectly then

Well Java is good for anything that can run the JVM. So PCs. Not so good for consoles.

*doesn't render multiple floors at once

Unless you can see them both at once, but in a house in Skyrim you'll need to walk up a (usually) closed staircase which acts as a sort of tiny loading zone.

I don't know anything about coding.

What's wrong with this?

...

pretty much everything

fucking kek, underrated post

pretty much nothing

tweets can't evaluate code

php

>(Tweeter = Gamergater) while always return true, it is an assignment not a comparison.
If gamegater is 0 or null then it's a false statement.

There is literally no reason to ever use C# over java.
C# is utter shit, and java got many performance enhancements lately. It's the comfiest language ever, and it's not so much of a speed loss anymore.

sounds like your sister has her eyes on the balls.
your sisters a whore :^)

Fuck off, java is garbage.

It's awful from top to bottom but the most glaring problems are

>she uses "=" instead of "==", the two are completely functionally different, her program won't work as intended at all
>both comparisons could be combined into one because they have the same output anyway
>her program only prints the words "Block" and doesn't actually do anything
>irritatingly inconsistent spacing
>various other retarded things

I honestly think she was drunk when she wrote it, I don't think there is any other explanation, you can not be an actual programmer and make all those ridiculous mistakes in such a simple program unless you are completely fucked out of your mind or you are trolling.