Friday, December 6, 2013

Practice 2013: Well-Made: Back to Black Mesa

(by Robert Yang)
·         Writes about the art of FPS levels on his blog
·         Luigi was cut from Mario 64 because of hardware limitations and they needed it for more elaborate landforms.
·         Most of teaching game development is about teaching attitude. It’s not about being a great coder or artist, but being a great thinker, connector of fields, etc.
·         Half-Life = a new frontier in interactive drama, interactive storytelling, innovative deep amazing art, but Robert doesn’t really care about this. 95% of the game is about shooting things and jumping into small spaces.
·         The narrative in Half-Life is really an afterthought. The game was rebooted in 1997, a year before it released. Before the reboot, it was filled with a bunch of random levels. Valve still works like this and did the same thing with Portal.
·         Footnote: mythologizing crunch is gross. Valve crunched for 6 months before the game released, working 16 hour days. Two developers stayed up for 48 hours straight to get a feature in. We praise these developers as heroes, but we should not be encouraging crunch.
·         Half-Life’s Legacy = depth and diversity in environmental storytelling and scripted sequences, you just watched a bunch of people die in scripted sequence, and writings on the wall are not very subtle, the narrative was not subtle at all.
·         Half-Life was considered the Myst of video games, but really it’s just a Stephen King novel mixed with some Outer Limits
·         It’s not a debate about ludology vs. narratology. Half-life is 100% schlup.
·         How to love a game’s guts and you can too. Read through Half-Life’s source code, it’s beautiful poetry, Robert’s programming style is based a lot onHalf-Life’s code, the way he names variables and files, are curly braces on the same line or new line? is art center-aligned or top-left aligned? File structure is absolutely important.
·         Should the next-gen dumpster get two 1024x1024 flats? There’s a hundred decisions that goes into making one dumpster art. Fetishizing this process is gross, it’s amazing that we are even able to make games when we are faced with so many decisions.
·         Art history to games = AAA sandbox / open world = large sweeping pastorals even with post-apocalypse or urban setting, function and values are the same, awe and manifest destiny, the landscape is big and beautiful and it is yours, almost everything looks like Thomas Kinkade paintings.
·         Game development = code + asset + content + concept + design + workflow + politics = transcendence.
·         Black Mesa Inbound (the first level) and its legacy = work commute, nothing happens, slow foreshadowing, mindblowing, revolutionary, brave, there’s no shooting. In the beginning, you are on a tram and you just witness the facility going on. It’s also meant to be a tech demo (color lighting, character animations, size of the space, color palettes per texture).
·         func_tracktrains = have a platform, you lay out the path track, you have to manually drag them all out and tell each one which the next one was. The level was also made up of many different levels strung together (due to texture limitations).
·         The object ontology was by far the worst component. Half-Life had two sorts of objects, static brushes and dynamic entities, and you could not parent one object to another one.
·         Magic in motion = how did they glue a moving door to the moving train without parenting objects? When the train reaches the end of the track, it loads a new level, swapping out the old train with a new train.
·         Rachet & Clank – an online game that shipped without a patching mechanism, they sent an oversized EULA, you grab an EULA from the server which held important stuff and handler pointers, it exploited code executes and unpacked main code, this is how they patched the game.
·         There’s a set piece in Half-Life where you are attacked by a giant shark. The game didn’t have physics simulation, so the cage is actually a “train” using the func_tracktains.
·         Shark Cage behavior and scripting = the shark was named Ichthyosaur, added a trigger point to tell the shark to come eat you, has another sensor to tell the shark to not eat you (the level design made up for the lack of AI), the shark was technically a flying monster (by code inheritance), the shark moved based on node paths (simple pathfinding)
·         Valve’s design philosophy is that you should be able to see what is about to kill you, then see it kill you, and see it after it kills you. Team Fortress 2popularized the kill-cam.
·         Shark Cage health, damage, and tuning workflow = these variables were externalized to skill.cfg (a text file), but some things were also hardcoded like how long you can hold your breath underwater and the number of crossbow ammo you get. It’s a good idea to hardcode some stuff and softcode others. Underwater time is a good thing to hardcode because tons of puzzles probably are designed around it and it shouldn’t be changed so easily.
·         Smells are a type of sound. Monsters can smell your sounds.
·         Furniture in Half-Life is a type of monster, just so it can react to the player attacking it.
·         Well Made (instead of Well Played) = learn from the code of games.
·         “The technical” is relevant to everyone and you are wrong if you disagree and here is why = game development killed Luigi, game development affects game design so much
·         QGcon, a lot of children’s animations were hand-animated, they kept the cast small so they didn’t have to draw as much, created a lot of “loopy narratives.” Now with new technology, we have so many characters, wars, accumulation, instancing, mobs, etc.
·         Dead Island was a painfully mediocre zombie game. Looked at scripting files and one of the skill abilities was named “FeministWhore”, developer released a response where they said it was just a private joke for an obscure debug function, but this is a lie
·         “a computer language is not just a way of getting a computer to perform operations… programs must be written for people to read, and only incidentally for machines to execute.”
·         Pay a lot of attention to the things you’re making. Don’t be a jerk.
·         10 Print and Criminal Code: Procedural Logic and Rhetorical Excess in Videogames.
·         “Screen Essentialism” – there’s so much of a game that’s invisible on the screen
·         There are apolitical games that are actually not apolitical when you look at the code.
·         This is game development – cultural, political, social, technical, scientific, artistic, creative, diverse, relevant
·         Press Select
·         The tension between “crunch is terrible” and the horrible workflow of Half-Life being beautiful. Crunch usually happens because the producer didn’t do a good job. Do not hold people as heroes just because they can work late and long hours. This is also a concern for indies, and we should all be concerned about our work-life balance.
·         The finished water towers were really boring compared to the untextured surreal ones.
·         Code is so proprietary now. Robert is interested in open-sourced game code.
·         Well Made should be really great engine overviews.

No comments: