[HN Gopher] Why video game doors are so hard to get right [video]
       ___________________________________________________________________
        
       Why video game doors are so hard to get right [video]
        
       Author : throw0101a
       Score  : 162 points
       Date   : 2021-09-04 14:04 UTC (2 days ago)
        
 (HTM) web link (www.youtube.com)
 (TXT) w3m dump (www.youtube.com)
        
       | daenz wrote:
       | They don't cover the network relevancy in this video, but that's
       | another issue. In a network game, if player 1 opens a door, you
       | want player 2 to see the door opening IFF they are within the
       | "network relevancy" radius of the door. If they aren't within
       | that radius, the door state shouldn't be replicated. However, if
       | later they do come within the radius, that network state of an
       | opened door should propagate to player 2, minus the "opening"
       | animation.
       | 
       | In UE4, this is handled with 2 different network synchronization
       | mechanisms: 1) multicast events (for animations) and 2)
       | replicated state (for authoritative state). When player 1 opens
       | the door, the server fires a multicast event to all clients
       | within the network relevancy radius that says "play door
       | animation." Multicast events only play once, and only to clients
       | who were listening at the time of it firing. At the end of the
       | door animation, the server sets the authoritative state to
       | "opened." This authoritative state propagates to all clients,
       | current and future clients. This allows player 2, who was outside
       | the radius when the door was opened, to see the door as opened as
       | they get closer, without seeing the animation playing.
        
         | tus89 wrote:
         | > In a network game, if player 1 opens a door, you want player
         | 2 to see the door opening IFF they are within the "network
         | relevancy" radius of the door.
         | 
         | This is all kind of wrong. You _want_ players to see the door
         | opening IFF they can see the door at all. If incompetent
         | developers can 't achieve that and come up with some other
         | solution and a lame excuse to go with it, that does not change
         | the desire from a player perspective.
        
           | Waterluvian wrote:
           | What about hearing the door? What about any effects the door
           | interaction might have?
           | 
           | I think narrowing it to "seeing" the door might produce a
           | limited result that closes a lot of doors on proper
           | multiplayer handling of other game mechanics.
        
           | crescentfresh wrote:
           | > IFF they can see the door at all
           | 
           | That is typically one of the conditions encompassed by
           | "network relevancy".
        
         | omegalulw wrote:
         | How is network relevancy calculated? For example, if I'm AWPing
         | the A-site door on Cache from mid, presumably, figuring out
         | that the animation is relevant for me id non trivial.
        
           | zeta0134 wrote:
           | In many games I would expect this to be the same as the
           | clientside render distance for the door object, which isn't
           | especially expensive to compute. The server has at least a
           | rough approximation of this distance at all times, affected
           | by lag.
        
             | Out_of_Characte wrote:
             | For CS:GO, they do exactly this with player characters, to
             | prevent simple wall hacks. Though near corners the models
             | are always visible as the player could peek faster than the
             | network can respond.
        
           | MichaelEstes wrote:
           | I'd imagine most first person games use their occlusion
           | culling as their base for network visibility, but I could be
           | wrong.
        
           | [deleted]
        
         | notafraudster wrote:
         | Is there a concern about a race condition in this sort of
         | model? Granted a time quanta is probably quite low. Like, I go
         | from just outside the listening boundary to just inside after
         | my client has ignored the animation cue and before my client
         | gets the state cue. Absent clever visual occlusion checks it
         | seems like this could be a concern. How is this kind of thing
         | resolved? It's true that skipping an animation and having a
         | door pop open is better than having the door stay closed and a
         | desync, but it seems like there's gotta be more corner cases
         | here?
        
           | ajkjk wrote:
           | Fortunately video games don't require non-raciness to the
           | degree that regular applications do. I imagine that in most
           | cases it's just imperfect.
        
           | daenz wrote:
           | My understanding is that the network relevancy radius is
           | usually pretty large, so you're unlikely to notice a lot of
           | edge cases. Also, by using events for relatively unimportant
           | things (animation playing, effects, sounds, etc) and
           | replicated state for the important stuff, then everything
           | mostly works out correctly, since the server makes a strong
           | effort to ensure _eventual_ consistency of replicated state.
           | 
           | Where network replication matters a lot more though is on
           | things like movement and shooting in competitive games. There
           | is a great short series of blog posts by Gabriel Gambetta
           | that covers different problems and solutions, but everything
           | is a tradeoff https://www.gabrielgambetta.com/client-server-
           | game-architect...
        
           | anthony_r wrote:
           | That moment when you realize that a multiplayer game is
           | actually also a distributed database :)
        
       | grumbel wrote:
       | I always liked the doors in Splinter Cell Chaos Theory
       | (https://youtu.be/ajlONBnhLkE?t=81), as they give you numerous
       | ways to open them, including a sneaky way where you get full
       | control to slowly open it in an analog fashion.
        
       | dleslie wrote:
       | The comments about the challenges, specifically walking into door
       | frames and general access accuracy challenges, speaks less to the
       | door than to the mode of movement. The same concerns can be
       | applied to picking up small objects and navigating narrow and
       | treacherous paths; both concepts which are a consistent challenge
       | for game developers as well.
       | 
       | These concerns are less pronounced on PC because fine adjustments
       | are simplified by the input method. With gamepads, precise
       | movements are possible but more challenging than with a mouse,
       | and any player momentum amplifies the challenge.
        
       | olivierestsage wrote:
       | I always thought the first Quake had it right: doors slide open
       | automatically upon the approach of the player character, and are
       | always fully open by the time you reach them, so the player is
       | never blocked (as long as they have the key). But obviously that
       | would not work for a game set in a realistic setting.
        
         | Gravityloss wrote:
         | You don't usually realize this when playing but the scale in
         | Quake is weird. Everything is big and bulky. There's just no
         | budget for a lot of triangles. That makes navigating it a lot
         | easier. It's closer to a driving game in some sense.
         | 
         | Stylistically it works when in a fantasy setting, or in some
         | science fiction "tech base". But it wouldn't, if you had
         | ordinary everyday objects like doors, beds or kitchens around.
         | 
         | If you've made Quake maps, you also notice that to make it
         | playable, you should avoid things like protruding door frames,
         | or the player easily and annoyingly gets stuck on the wrong
         | side of it. The mapper must place clip brushes so the player
         | smoothly flows over these obstacles. The player never notices
         | these "nudges".
        
       | dharmab wrote:
       | A related article: A survey of gamedevs answering "What is a
       | thing in video games that seems simple but is actually extremely
       | hard for game developers to make?"
       | 
       | https://www.ign.com/articles/turns-out-hardest-part-making-g...
        
         | Legogris wrote:
         | > For instance, I worked on a game where if you reloaded
         | immediately after defeating a particular boss, you would get
         | locked into the boss room, because the door leading out of it
         | was not keeping its open state correctly.
         | 
         | Reminds me of Zelda: OoT. At the final boss fight, Ganon knocks
         | the sword out of your hand, the only point in the game where
         | you're without a sword equipped as an adult. In early versions
         | of the game, if you saved and reloaded at that point, you would
         | end up with the sword unequipped, resulting in some glitchy
         | behavior. For example you could now use any equipped item on
         | horseback. The hookshot could be abused to allow you to move
         | Link pretty much freely in 3D space.
         | 
         | Even in later versions, you can get to this behavior by never
         | picking up the first sword and lifting the left side of the
         | cartridge ever so slightly when Mido blocks the way to the
         | first dungeon until you have a sword, allowing you to pass
         | through him. The no-sword OoT challenge is just challenging
         | enough to be fun.
        
           | mucle6 wrote:
           | IIRC the glitch speedruns relied on the fact that you didn't
           | have to get the master sword since you could pick it up if
           | you were able to "warp" to that cutscene.
           | 
           | https://youtu.be/OKSWkpC_SC4?t=946 Link starts at where the
           | master sword gets knocked off but the premise of the speedrun
           | is interesting on its own.
        
         | faanghacker wrote:
         | So basically, everything is difficult, including doors.
         | 
         | That makes the OP article sound like clickbait, making doors
         | out to be the most difficult thing about game design.
         | 
         | Also, I wonder how much of it is due to the disconnect between
         | design and software implementation. From a software
         | perspective, it doesn't seem that difficult to define doors as
         | a separate class or type of game object behavior, and hard code
         | that behavior into sequences.
         | 
         | It seems like the difficulty is mostly on the design/animation
         | side. Controversial opinion: Maybe the problem is that
         | designers and animators are just not as good at solving these
         | logic problems as the software engineers.
        
           | egypturnash wrote:
           | Watch the video, it goes into detail about why doors are
           | hard, especially as you start moving from "press space when
           | near the door to make it slide into the wall" to "the door is
           | a physics-simulated object that interacts with all the other
           | physics-simulated objects in the game, and which players and
           | NPCs will open in a realistic fashion that involves blending
           | pre-fab animation with the location of the handle/knob
           | relative to the character instead of vaguely waving a canned
           | animation in the direction of the door as it magically
           | opens".
           | 
           | Never mind a door simulated at the level of "I am opening it
           | _just_ wide enough for me to get outside with some food and
           | water for the semi-feral cats who live under my house, with
           | minimum opportunity for them to run inside before they 're
           | distracted with that food, also I have to kick it to get it
           | open now because this is New Orleans and the house just
           | settled a little more after Ida and now the frame's a little
           | less square". Which is an interaction I have with a door
           | _every morning_ without ever thinking about the door.
           | 
           | There's also a quote from a lead developer at an AAA team
           | saying that doors are _the_ hardest thing to get right.
           | Everything in a video game is a thin veneer of illusion, and
           | doors are surprisingly complex in how they have to interact
           | with _every_ level of that illusion.
        
             | faanghacker wrote:
             | I suppose if you're going for that level of realism, then
             | you have more complexity like the person reaching for the
             | doorknob and opening it. That's certainly more complex.
             | 
             | Maybe the problem is trying to simulate it as a generic
             | physics engine object, as opposed to a specific object type
             | that has its own hard-coded rules of motion. Again, there's
             | complexity involved, and I can see how it makes the job
             | more difficult when you have to integrate with the rest of
             | the game engine.
             | 
             | Still, I would think that by now game devs should know that
             | doors are difficult, and thus take them into account from
             | the beginning when designing a game engine (maybe that's
             | what they do) rather than trying to integrate them into the
             | engine that's already been designed.
        
               | short_sells_poo wrote:
               | There are some things that generalize in game
               | development, mamy don't. How you implement a door can
               | very much depend on the sort of game you are building.
               | And it can absolutely get complicated simply by the fact
               | that you'll likely need to hand roll your solutions.
               | 
               | I haven't worked in game dev in decades, but I remember
               | that just network synchronization could be tricky because
               | the degree to which a door is open could lead to very
               | different outcomes in a game. Eg take a shooter game:
               | 
               | Does the door block/deflect bullets?
               | 
               | Yes? Well now you need to make sure to synchronize
               | clients really cleverly because each player will see a
               | different state of the door depending on their latency.
               | Whether they can shoot through the opening is relative to
               | each clients' reference frame.
               | 
               | Oh, just make the server decide you say? Well, now all
               | your inputs have a perceptible delay because your client
               | has to wait for confirmation from the server, or you'll
               | often see jarring prediction error correction when the
               | thing you predicted is wrong.
               | 
               | A huge amount of research and work has gone into this and
               | yet there's still no silver bullet.
               | 
               | That you think this is all solved just says that you know
               | very little of the problem area - which is ok - but then
               | you should not be making broad and confident statements
               | about it. A touch of humility doesn't hurt.
        
               | faanghacker wrote:
               | Except network issues were not mentioned in the video.
               | Moving the goalposts.
        
               | short_sells_poo wrote:
               | It was just an example of conceptually simple things that
               | are hard in games. Are you disagreeing with what I wrote?
        
               | faanghacker wrote:
               | Not at all. Network issues make everything in games more
               | complicated, not just bullets going through doors.
               | 
               | Everything in games can be complicated: physics, doors,
               | AI, network. Even the first line of that video
               | description.
               | 
               | I think that just proves my original point: it's
               | clickbait to single out doors as being exceptionally hard
               | versus everything else in game design.
        
               | short_sells_poo wrote:
               | > I think that just proves my original point: it's
               | clickbait to single out doors as being exceptionally hard
               | versus everything else in game design.
               | 
               | That's a fair point, but I think the charitable reading
               | of the title is that amongst all the complicated things,
               | a conceptually simple object like a door can still be
               | very deceptively complex.
               | 
               | I sometimes get an urge to work on the myriad of game
               | ideas I've written down over the years. And every time I
               | remind myself that what I really like is the "idea" of
               | making a game, not the actual process. Because the actual
               | process is a draining, thankless and often rage inducing
               | process. The actual building of a game is 95% of the time
               | spent on stupid little details like making a door work
               | properly.
               | 
               | And it is for that reason that I really admire game
               | developers, particularly indie ones. It takes an insane
               | amount of willpower, mental fortitude and wits to take a
               | game from idea to playable product. And you then have to
               | contend with one of the most toxic and volatile consumer
               | groups in existence.
        
               | faanghacker wrote:
               | > I sometimes get an urge to work on the myriad of game
               | ideas I've written down over the years. And every time I
               | remind myself that what I really like is the "idea" of
               | making a game, not the actual process. Because the actual
               | process is a draining, thankless and often rage inducing
               | process. The actual building of a game is 95% of the time
               | spent on stupid little details like making a door work
               | properly.
               | 
               | Yeah, I agree. I actually started out learning
               | programming as a pre-teen by making my own games. It can
               | be a lot of fun at times, but a lot of frustration too,
               | and I can see how the latter eclipses the former as as
               | you scale into a more complex game and with a bigger
               | team.
               | 
               | It's not an easy job that's for sure.
        
           | faanghacker wrote:
           | I watched the video again. Still don't see what the big deal
           | is. For example...
           | 
           | NPCs blocking doors? Don't put NPCs there, and tell AI to
           | avoid door zones rather than trying to make them know how to
           | move out of the way when doors open.
           | 
           | Car on the other side of the door? Don't let the door open
           | all the way.
           | 
           | In the elevator example in the IGN article: Implement an
           | elevator door like in modern elevators, or if it's more
           | primitive, don't let players or NPCs walk under the elevator,
           | or worst case, kill the character -- can't call the AI dumb
           | if they avoid being under the elevator that can kill them.
           | 
           | This isn't an unsolved problem. Halo did this with
           | telefragging someone who is blocking a teleporter, and
           | StarCraft did this by destroying the siege tank under a
           | landed building.
        
             | short_sells_poo wrote:
             | Everything you describe is an ugly hack that ruins
             | immersion and suspense of disbelief. Are you proposing the
             | AI shouldn't be able to use doors? What if an NPC wants to
             | open a door at the same time as a player? Are you
             | suggesting that gamedevs should add an entire myriad of
             | these exceptions to all the interactive aspects of the
             | game? That's wholly infeasible. Players can and will break
             | sort of game design in wild abandon.
             | 
             | You are trying to build a believable world, or at least one
             | with as few uncanny valleys as possible.
             | 
             | Doors are hard, as is everything interactive. That doesn't
             | mean people shouldn't try to make these things better. And
             | at the same time, we need to acknowledge that doing this is
             | bloody hard.
        
             | gus_massa wrote:
             | > _StarCraft did this by destroying the siege tank under a
             | landed building_
             | 
             | If this in StarCraft I? In StarCraft II even a burrowed
             | zergling can prevent the landing of a Command Center. (That
             | makes no sense from a realistic point of view.)
        
               | faanghacker wrote:
               | Yes, StarCraft I. The issue wasn't physical realism. The
               | problem was that a player could move a tank under a
               | building during mid-landing, siege it up, and the
               | boundaries of the building protected the siege tank from
               | melee attacks.
               | 
               | Killing the tank was the "creative" solution, instead of
               | a "brute force" solution to change the game dynamics to
               | prevent the tank from sieging up under the building in
               | the first place.
               | 
               | In SC2 the tanks will be forced to move out from under
               | the building when it lands, but SC2 also has a much
               | improved unit movement system over SC1 that allows this
               | to be done more easily.
        
               | sgarman wrote:
               | I've never seen this in any of the BW games I watched. I
               | wonder if they fixed it. You just can't land a building
               | where a unit is. There was a crazy bug where you could
               | load units into a flying CC and use it as a mobile
               | fortress but that too is patched.
        
               | faanghacker wrote:
               | That was the whole point -- it was fixed early on by
               | killing the tank, rendering the exploit useless, which is
               | why you never see it in games anymore.
               | 
               | Search on YT for the tank glitch.
        
               | duskwuff wrote:
               | Yes. And it only became relevant if you exploited a race
               | condition by ordering the building to land, then ordering
               | a siege tank to move under that landing point while the
               | landing animation was in progress. You couldn't order a
               | building to land on top of a unit, and a queued order to
               | land would fail if any units were in the way, but once
               | the building _started_ to land, it wouldn 't stop, and
               | any units under it would be trapped. The bug fix added a
               | second check which would kill any units under the
               | building when it finished landing.
               | 
               | In principle, you could do this with any unit, but it was
               | mostly useful for siege tanks, since those were the only
               | Terran ground unit which really benefited from sitting in
               | place.
        
           | burnished wrote:
           | Sounds like you'd benefit from giving it a try. I'm going to
           | go out on a limb here; you're at that stage of your life
           | where everything you haven't tried sounds simple and you
           | don't understand why other people struggle so much. I'm
           | guessing this because on hearing that something is difficult
           | your first suggestion is to.. simply design a class, and then
           | suggest that the problem resides in the kinds of people
           | approaching the problem.
           | 
           | Its a sort of arrogance that I think will be familiar to many
           | people. But it sort of assumes that other people are too
           | stupid or incompetent to try <insert obvious easy solution>.
           | You might do better by trying to figure out what went wrong
           | with the 'obvious' solution, or what you are missing in your
           | own understanding that makes the problem appear so much
           | simpler. If you figure out novel solutions, great! That's
           | real genius. I think mostly you'll find out how tough most
           | problems are.
        
             | faanghacker wrote:
             | I didn't say it was simple, I'm sure it's a complex
             | problem. But maybe not disproportionately difficult to
             | model if you can handle the complexity. That's why I gave
             | the benefit of the doubt to the software engineers.
             | 
             | IME Most people can't handle complexity in their own fields
             | of work, whether it comes to tax accountants making
             | mistakes on my tax return that I caught later; or real
             | estate agents telling me my queen-sized bed won't fit in
             | the apartment, when I already knew from analyzing the
             | floorplan that it would, and I was correct when we measured
             | the room; or international flight attendants overcharging
             | me because they can't do currency conversions properly.
             | I've worked in the software industry including FAANG and
             | dealt with a wide range of people, some of whom I've had to
             | explain basic problem solving concepts or do things for
             | them that they should have done themselves.
             | 
             | Believe me, I'm at the stage of my life where I've tried a
             | lot of things, succeeded at some, and failed at others.
             | I've lived in different cities in different countries. More
             | importantly, having been exposed to a wide range of people,
             | I am less inclined to overestimate most people's ability to
             | do things.
             | 
             | Is that arrogant? Maybe. But I started out assuming that
             | everyone has some latent untapped
             | talent/creativity/curiosity/potential and over the years
             | I'm less inclined to give people so much benefit of the
             | doubt.
        
               | scrollaway wrote:
               | Ah, you're one of those people.
               | 
               | Sounds to me like the person you're replying to had you
               | perfectly figured out. If you're lucky one day you'll get
               | to look back on this comment in regret. If not, you'll
               | keep living in ignorance.
        
               | faanghacker wrote:
               | Good thing I had the foresight not to "follow my
               | passions" and work in big tech instead of game dev or
               | academia, which is why I'm retired and don't need to
               | worry about either regret or ignorance.
        
               | jcelerier wrote:
               | for someone without regrets your comments sound awfully
               | bitter
        
               | faanghacker wrote:
               | It's called becoming a curmudgeon once you have dealt
               | with enough bullshit in your life. I think much of the HN
               | community can relate to that.
        
             | dharmab wrote:
             | Thank you for writing up a clear headed response. I had
             | started to write a response to the comment, but decided I
             | didn't know a way to phrase it in a way that would be
             | constructive and decided not to submit.
        
           | 5faulker wrote:
           | Doors are one of those things that seem simple but actually
           | is not, due to it being an interaction point between players
           | and the game.
        
           | Animats wrote:
           | Move, shoot, and drive are easy, or at least well worked out,
           | and everything else is hard. Doors are just a common case of
           | "everything else" Sitting down realistically is hard.
           | Standing up realistically is hard. Picking up stuff
           | realistically is hard. Interacting with any object via
           | contact is hard. Interacting with moving avatars is really
           | hard.
           | 
           | The hard problems come up when you actually have to do motion
           | planning, in the robotic sense. Few games do that. In most
           | games, you're just moving the avatar while running canned
           | animations. UE5 has a new dynamic animation system which is
           | supposed to help with this. In the UE5 demo video, you see
           | the character walk through an open doorway, and she reaches
           | out and touches the doorframe. That's some kind of IK-driven
           | animation triggered by proximity. Not clear if the mechanism
           | behind that is general enough to handle door opening. Anyone
           | know?
           | 
           | In virtual worlds, where you don't have pre-planned gameplay,
           | it's a big problem. Second Life has hundreds of thousands of
           | doors, and at least three vendors of door control software.
           | Usually, doors have to be clicked on to open them, although
           | stores often have automatic sliding doors.
        
       | djmips wrote:
       | And ladders. ;-)
        
       | Kinrany wrote:
       | An essay about game development professions that uses doors as
       | the main example: https://lizengland.com/blog/2014/04/the-door-
       | problem/
       | 
       | Edit: mentioned in the end of the video, of course :)
        
         | faanghacker wrote:
         | I noticed that most if not all of these questions are
         | applicable to doors in even simple 2D games.
         | 
         | Whereas the physics engine and real-world realism aspects are
         | what the video talks about.
         | 
         | If the problem is that doors are inherently difficult to
         | design, the counterpoint is that these questions have already
         | been answered in multiple ways over the past 30+ years of video
         | game history. It's easier today than ever to answer these
         | questions by drawing on previous games.
        
       | sluggosaurus wrote:
       | While I'm duly impressed by the achievement of hyper-realistic
       | door physicals, the effort:payoff ratio seems completely wack. I
       | think these game developers are overthinking it. Minecraft does
       | doors right in comparably simple way, and I think few if any
       | players have a problem with it; it's a more popular game than any
       | game with fancy doors. The most realistic doors in the world
       | won't make a bad game any better, while simplistic doors won't
       | make a good game any worse.
        
         | lazugod wrote:
         | > Minecraft does doors right in comparably simple way, and I
         | think few if any players have a problem with it
         | 
         | Ha. This is an amusing claim given that redstone, the whole
         | complicated circuitry used in advanced Minecraft machines, was
         | arguably added for the purpose of powering doors. Years of work
         | have gone into all of the community-made piston doors of
         | various sizes and features. And all interactive components like
         | buttons and pressure plates have to have their signal duration
         | balanced against how long it takes to walk through a door.
         | 
         | Even ignoring redstone, though, doors are complicated to design
         | in the exact same ways. Which way do they swing open? Depends
         | how you're facing when you place them... unless the game
         | detects double doors, and reverses the second one to match. And
         | each door has to have a corresponding vertical trap door, which
         | can either be flush with a floor or with a ceiling. Which way
         | do trap doors open? Well, whichever way works best with the
         | ladder below them. Oh, which means trap doors must also act
         | like ladders. In fact, you can climb a wall of nothing but trap
         | doors in the game.
         | 
         | What about water? Trap doors can be waterlogged, and that's a
         | common way to hide irrigation. But normal doors intentionally
         | aren't. Why? Because doors are the most common early-game tool
         | for scuba diving - a placed door becomes a free pocket of air.
         | Does it seem realistic? No, and maybe they could fix it, but
         | then that would affect anyone who uses doors as entrances to
         | underwater houses, as well as make scuba diving more difficult.
         | 
         | Players argue about the use of doors for diving; they argue
         | about whether they should be able to shoot arrows through the
         | windows in doors; they argue about whether every new tree
         | should bring a new type of wood, and thus a new type of door.
         | 
         | Doors are hard, no matter how simple the game.
        
           | sluggosaurus wrote:
           | I'm utterly unconvinced. Point by point:
           | 
           | Redstone: The surprising complexity of a redstone torch does
           | not confer complexity to a minecraft door, even though you
           | could use that torch to open or close a door. A minecraft
           | door has one binary state relating to redstone, powered or
           | unpowered. That's it. The redstone functionality a minecraft
           | door has is very simple by the standards of many other
           | redstone-capable blocks in the game.
           | 
           | Piston doors: Can be arbitrarily complex, but these do not
           | confer complexity to regular minecraft doors.
           | 
           | Placement: Minecraft doors are not the simplest block in this
           | regard, but they are far from the most complex. Just compare
           | them to stairs. Stairs have four attributes:
           | facing[east,west,north,south], half[bottom,top], shape[inner_
           | left,inner_right,outer_left,outer_right,straight]. There are
           | 80 ways any stair block can be configured. There are only 64
           | configurations of a door block in minecraft (as far as the
           | player need be concerned, it's only half of that since half a
           | door implies the other half, similar to an extended piston.)
           | Incidentally, there are 9 materials a door can be made out
           | of, but _48_ materials stairs can be made out of. And 8 of
           | those 48 stairs have the special behavior of turning into
           | other material, while only one of the 9 door materials has
           | special behavior.
           | 
           | Waterlogging: Regular minecraft doors have never waterlogged.
           | Waterlogging is complexity added to other blocks in the
           | aquatic update, but doors were not changed. There was no
           | complexity added here. And doors are not the only blocks
           | which weren't updated for waterlogging; there are dozens of
           | other blocks like this.
           | 
           | Trapdoors: Are more complex than regular minecraft doors.
           | Trapdoors being complex does not mean that regular minecraft
           | doors complex.
           | 
           | Players wishing doors had more complexity: Is not doors being
           | complex.
           | 
           | > _Doors are hard, no matter how simple the game._
           | 
           | Doors are extremely complex in some games, and significantly
           | less complex in others. Complexity is not a binary trait. I
           | claimed that minecraft doors are _comparably_ simple,
           | particularly when compared to the doors in TLOU2. I stand by
           | that.
        
         | williamdclt wrote:
         | Minecraft-style door animations (ie, no animation) would
         | absolutely break immersion in a game with a realistic style.
         | You can make a game that does not look realistic, but that's a
         | completely different art direction, we can't just wave away
         | complexity
        
           | sluggosaurus wrote:
           | Okay, comparisons within a particular artistic style then:
           | Splinter Cell vs Metal Gear Solid V. MGSV has somewhat
           | realistic doors, but much simpler than the door system SC:CT
           | has. I've heard quite a few player complaints about MGSV, but
           | never that the doors are less complex than the doors in a
           | stylistically similar game ten years older. Splinter Cell
           | gets some praise for doors, but Metal Gear doesn't get
           | criticized for for falling short of that high bar.
           | 
           | Another example from _beenBoutIT_ : The Last of Us and its
           | sequel have the same sort of style. The sequel has superior
           | doors but is generally considered an inferior game. The
           | quality of the doors really doesn't seem to be a major factor
           | in how these games were received.
           | 
           | Minecraft itself: minecraft doors having no animation was not
           | a foregone conclusion derived from the broader style of the
           | game. Minecraft pistons _do_ have animations when extending
           | or retracting. I 've never heard a player complain that
           | minecraft doors are lack what minecraft pistons have.
           | 
           | I think that most video game players are accepting of doors
           | behaving in unrealistic ways. Simple doors don't actually
           | bother most players, and complex doors _usually_ go
           | unappreciated by most players. Contrary to what the video
           | claims, doors _can_ 'just magically fly open', and players
           | don't care.
        
         | beenBoutIT wrote:
         | Managers need to be able to spot OCD spirals and keep things on
         | track. Having perfectly realistic doors isn't that important -
         | the end user only notices them when they break. TLOU2 is
         | remembered most for being less great than TLOU and not for its
         | superior door mechanics.
        
         | Anon_troll wrote:
         | > Minecraft does doors right in comparably simple way, and I
         | think few if any players have a problem with it
         | 
         | See https://bugs.mojang.com/browse/MC-149060 "Villagers "spam"
         | doors by opening and closing them really fast"
         | 
         | Or
         | https://bugs.mojang.com/browse/MC-69281?jql=text%20~%20%22do...
         | to see the 6000+ bug reports related to doors.
         | 
         | Or watch https://www.youtube.com/watch?v=aiEq0bJcAz0 "Villager
         | door spam"
        
         | adnzzzzZ wrote:
         | There's value in getting things right no matter how long they
         | take and no matter if people will notice it or not. I
         | personally don't hold this view too strongly but I can
         | understand other gamedevs who do.
        
           | sluggosaurus wrote:
           | I understand how artists would think that way. Obviously they
           | have passions and care about details few except other artists
           | would notice. But on a commercial project, shouldn't managers
           | reign in on this sort of thing and redirect the efforts of
           | artists in a more productive direction?
        
       | robbrown451 wrote:
       | It's funny how, right at the beginning (20 seconds in), he is
       | saying he is impressed with the doors in Last of Us Part II,
       | while showing a door that closes in one direction, then opens in
       | the other. This would be especially impossible given the closer
       | mechanism at the top of the door, but then you notice that both
       | parts of the mechanism are attached to the door itself (rather
       | than one being attached to the door frame) and just swings with
       | it, so it is worthless as a closer mechanism.
       | 
       | I can't blame the devs for taking shortcuts like that, but still
       | a bit weird to call that one out as an impressive example.
        
         | Trasmatta wrote:
         | > but still a bit weird to call that one out as an impressive
         | example
         | 
         | Everything else about the doors in TLOU2 _is_ impressive,
         | though. I don 't think there's any game that exists that has
         | doors that are as well engineered as TLOU2 that also properly
         | swing in only one direction.
        
       | sparker72678 wrote:
       | This is a great video.
       | 
       | Next I'd love to see, "Why online checkout forms are so hard to
       | get right."
       | 
       | Software is hard.
        
         | ehnto wrote:
         | Part of the reason is that the state can be extremely complex.
         | It looks like some simple forms, but if you were to write out
         | all the state combinations for tax, location, shipping, product
         | combinations, configurations, logged in/out, guest/account,
         | pricing rules, payments, inventory, warehousing,
         | internationalization, so on and so fourth, you get a pretty
         | complex state machine.
        
           | fsckboy wrote:
           | yes, the state machine can be complex, but there's no excuse
           | for throwing away the state that represents everything the
           | user has gone to the trouble to enter in, that is not complex
           | and should be preserved.
        
           | falcor84 wrote:
           | I'm not quite following you there, other than possibly the
           | authentication piece, all of the other variables seem to me
           | to be recalculable from scratch every time - where else would
           | you need state transitions? (i.e. where is there Path
           | Dependency?)
        
             | matsemann wrote:
             | Validation. A field is incorrect, but only because it
             | hasn't been touched yet so don't show an error. Or it's
             | incorrect because the value isn't allowed based on another
             | change you made in the form.
        
       | bladedtoys wrote:
       | For the curious, one extremely useful tool used for things like
       | this is "inverse kinematics"[0] In this case you need the wrist,
       | elbow, shoulder, hip, etc joints to bend such that the hand
       | exactly reaches the door knob and stays on the knob as the door
       | swings open possibly stepping the legs forward or backwards.
       | Coding inverse kinematics from scratch is definitely non-trivial,
       | luckily that is rarely necessary.
       | 
       | https://en.wikipedia.org/wiki/Inverse_kinematics#Inverse_kin...
        
         | wincy wrote:
         | Isn't Star Citizen expending a great amount of effort in coding
         | reverse kinematics for their entire game?
        
       | simion314 wrote:
       | I am wondering why floors also are hard, the falling though the
       | world is a bug I see too often, especially on the indie games I
       | tried.
        
         | fxtentacle wrote:
         | For keeping things from falling through, you need to project
         | the movement vector onto the plane. That means sqrt of
         | magnitude and dot product. If you keep doing that every frame,
         | a lot of tiny and otherwise insignificant floating point errors
         | are going to sum up.
         | 
         | The correct approach is to not model the floor as thin sheet
         | geometry but instead to model it as solid objects, e.g. the CSG
         | approach used in Quake, Half-Life 1 and Unreal 1 & 2. I believe
         | those games didn't have any falling through bugs.
        
           | foxfluff wrote:
           | https://wiki.beyondunreal.com/Legacy:BSP_Hole
        
             | fxtentacle wrote:
             | Also there, I believe the underlying issue is lack of
             | floating point precision. That's why the fix is to nudge
             | the brush a bit and/or move it back onto the integer grid.
        
           | thaumasiotes wrote:
           | > The correct approach is to not model the floor as thin
           | sheet geometry but instead to model it as solid objects, e.g.
           | the CSG approach used in Quake, Half-Life 1 and Unreal 1 & 2.
           | 
           | While I never actually did any level editing, I did read a
           | guide to the Unreal Tournament level editor, which said that
           | UT was unusual in that a blank level was filled with mass and
           | the level creation process involved subtracting that away to
           | create empty space, rather than adding objects to an empty
           | void.
           | 
           | Related?
        
         | Animats wrote:
         | This is why people buy physics engines or use game engines with
         | physics engines built in. It's a solved problem, but the heavy
         | machinery is non-trivial.
         | 
         | (I used to work on ragdoll physics.)
        
         | tinus_hn wrote:
         | It's not hard, Quake did it right many years ago. It just
         | requires you to limit yourself in ways that aren't acceptable
         | these days.
        
           | bruce343434 wrote:
           | As someone outside of this field, could you elaborate on how
           | quake "did it right" and how it requires you to limit
           | yourself?
        
             | tinus_hn wrote:
             | Quake, for optimization reasons, did a lot of preprocessing
             | on the geometry that makes up the world. This made it
             | possible to render it on slow hardware. The process for one
             | required the designer to make sure there were no cracks
             | anywhere to fall through, because if you had one the
             | preprocessing would fail.
             | 
             | The preprocessor divides the entire inside of the level
             | into convex areas and builds a graph that expresses where
             | they touch. So for movement, if you just make sure that you
             | can only go from one area into another that according to
             | the graph touches it, there simply is no way to move out of
             | bounds because the out of bounds area is not in the graph
             | at all.
             | 
             | This does mean though that you have a world that is mostly
             | static, that consists only of indoor spaces and has a
             | limited amount of complexity because otherwise the
             | preprocessing results in an unmanageable amount of data.
             | There is just no way you can preprocess the whole world
             | like that in a modern open world game.
        
             | [deleted]
        
         | djmips wrote:
         | I think it's because floors are often modelled infinitely thin,
         | a plane with no thickness. It's all to easy to get on the wrong
         | side of that plane for any number of reasons.
        
           | simion314 wrote:
           | But why not model it with 1m thinness and put some trigger
           | code if you touch the other side to reset you, same for
           | objects.
           | 
           | I am not a game dev, so at first look a level editor that is
           | mostly drag and drop should solve this for the level
           | designers, but for some reason you can still fall through
           | floors.
        
             | umvi wrote:
             | Scenario:
             | 
             | - you have a 1m thick floor in your video game.
             | 
             | - your video game has physics in it (like gravity,
             | collisions, etc).
             | 
             | - your game runs at 60 fps
             | 
             | Given these assumptions, if any in-game object ever exceeds
             | a velocity 60 m/s then on one frame it will be above the
             | floor and on the next frame it will be below the floor
             | without ever triggering a collision. Oops.
             | 
             | Let me guess: "Just make the floor infinitely thick". Sure
             | that would work but it sort of limits the kinds of maps and
             | terrain you can make if the floor is always infinitely
             | thick.
             | 
             | One way to solve it without infinitely thick floors is to
             | draw an imaginary line between your current position and
             | previous position every frame and check if the line would
             | have collided with anything . If it does - do something
             | (make the player die, move them back above the floor,
             | etc.). It gets more complex when it's not just the floor
             | you have to worry about clipping through but the wall and
             | the ceiling and all other objects.
        
             | adanto6840 wrote:
             | Oh we definitely try "simple" approaches like that,
             | whenever we can. And if the entire 'level' is, well, level
             | & there are no elevation changes (or elevation changes are
             | restricted to '1 elevation per floor of a structure, for
             | instance) then sure, that type of solution works.
             | 
             | Otherwise though, the 'trigger' code you suggest ends up
             | generally being some kind of math (ie physics, regardless
             | of whether it's via a physics engine layer or a game/state
             | layer); you essentially have to figure out "where" on the
             | plane the object is, convert that to the proper coordinate
             | system for your overall level, and then 'sample' the
             | underlying terrain/mesh/ground covering to figure out if
             | you're in a legal position.
             | 
             | Typically this ends up being implemented as a "clamp" of
             | sorts; you will pretty rapidly end up with oddities,
             | floating point precision quirks, and the like.
             | 
             | The "best solution" will vary, often drastically, from game
             | to game.
             | 
             | FWIW, I've been doing game-dev for almost 10 years now &
             | have almost exclusively done "AI/NPC" agents. We've faced
             | what I would classify as pretty much the same issue with AI
             | agents, especially when you want them to follow nice,
             | smooth paths while also realistically 'bumping into' each-
             | other -- yet ensuring that they will _never, ever, ever_ go
             | through a wall. It sounds so stupidly-simple but, I can
             | assure you, it is not! If you had unlimited resources
             | (read: CPU), then it 's not so bad, you can calculate for
             | "optimal" every frame -- in reality, you never have
             | unlimited resources, and seemingly-simple calculations like
             | this have to run extremely fast and they cannot be allowed
             | to fail (there's nothing more frustrating & game-breaking
             | than NPCs that get 'stuck' behind a wall or in an area that
             | they cannot vacate, etc). You can write code for agents to
             | "detect stuck + get un-stuck" but, similarly, doing that
             | fast is non-trivial; and ideally you don't want them stuck
             | to begin with!!
             | 
             | It's a massive can of worms. ;)
        
       | wcarss wrote:
       | Related, here[1] is an excellent ~hour long talk by Kerry Davis
       | of Valve about how much thought they had to put into doors for VR
       | while working on Half Life: Alyx.
       | 
       | 1 - https://www.youtube.com/watch?v=9kzu2Y33yKM
       | 
       | (edit: it looks like digipen also posted that talk themselves,
       | and theirs doesn't have the ~10-15 minute gap the VNN one has,
       | but theirs seems to not have the slides. Take your pick!
       | https://www.youtube.com/watch?v=8OWjxGL8PDM0)
        
         | TOMDM wrote:
         | The doors in Alyx feel so good.
         | 
         | Poking a gun through, or quickly tossing a grenade and then
         | closing the door again felt so natural.
        
           | usrusr wrote:
           | Proud second place on the list of best doors in video games,
           | after the XCom door that is only ever correctly opened by
           | carefully arranging six soldiers in descending order of
           | disposability before touching that right mouse button.
        
       | mensetmanusman wrote:
       | I still occasionally laugh at recalling how doors worked in Quake
       | 2; if you made your own doors in the map editor it was possible
       | to design some that would open up like normal doors but they
       | would turn you to gibs if you were unfortunate to stand in their
       | turning path.
       | 
       | Great way to play tricks on friends.
        
       | [deleted]
        
       ___________________________________________________________________
       (page generated 2021-09-06 23:00 UTC)