Posted on Leave a comment

Don’t Miss: Color in games: An in-depth look at one of game design’s most useful tools

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


(This article has been co-written with my colleague Jonathan Bailey)

Knowledge about color spans across several disciplines: physics, biology, psychology, art, and design. It is a useful tool for the artist to create emotion, for the game designer to emphasize function, and for the marketer to set apart. In this article we look at color in games – its function, how technology has improved color display, and how our biology affect the perception of color.

The primary function of color vision is to make it easier to identify objects, and indeed, the use of color in games reflect this. We make apples red in games because they are also red in the real world, and so we can recognize them easier in the game. But color has many other functions in games, as it does in art, design, and film. This section describe some of those.

Emotion

Color is a powerful way to evoke emotion.

The following is an example of essentially the same scene, with different colors. Each has a distinct mood.

Color grading is a popular method used (adapted from film) to adjust the colors of games in one sweep; usually with the purpose of changing the mood. Here is an example of an image rendered with different color gradings:

Sometimes, a color change can also be useful to reduce emotional impact. For example, to look less violent, some games color their blood green to pass certification requirements (such as those in Germany).

Branding and Fashion

Color plays an important role in the branding of games and making them instantly recognizable: the blue and orange of Portal, the bright red of Mirror’s Edge, the meaty red of Super Meat Boy, the purply blue from Super Mario Bros, the hot pink of Hotline Miami.

In addition to making games recognizable, color can also help convey its intended audience: for example, brighter colors are used more in casual games, while more nuanced colors are used in core games.

(Casual Games)

(FPS Games)

The choice of colors in games are often influenced by the fashion of the time. Below are samples of colors from the most popular of four different years, spanning three decades.

The year 2012 shows clear shift toward dominant blues and browns/oranges. Xaphan attributes the reduction of vibrancy (making games more homogenous and monochrome) to the pushing of realism and the use of shadows and atmospheric lighting. Many other games have purposefully used desaturation and tinting to achieve realism.

Visual Hierarchy

The elements of a game scene forms a natural hierarchy of importance. For example, the player, followed by enemies, followed by interactive objects, followed by background elements. Color can help make this hierarchy visually clear. In visual works, such as painting and film, this principle is used to guide the viewer’s visual focus to what is important. In interactive works, this is even more important, because it helps the player figure out what to do: where to go, who to attack, what to pick up.

Value, saturation and hue can all be used to distinguish important elements.

(Focus with value)

(Focus with saturation)

(Focus with hue)

Check out this guide for game developers on visual hierarchy.

Progression

Color can help give the player a sense of progression: a feeling of change of time or space. In Journey, for example, the change in mood goes hand-in-hand with change in color.

In Geometry Dash the backgrounds are in rainbow order, and it serves an additional purpose of making the game levels more distinct (this idea is discussed further under the section Content Variation below).

Mechanics

Some games exploit colors for new mechanics.

Exit Palette is a puzzle game with a color mixing mechanic. The goal is to get to the exit of each level by painting objects with different colors. Different colors give objects different properties (such as making them fly upwards), and by mixing the right color you can give objects the particular property needed to solve the puzzle.

[embedded content]

Hue is a game where the player has to shift the hue of the world to make certain objects disappear.

[embedded content]

The game DayZ has a color dye mechanic, where cloth can be dyed with dyes made from berries in the primary colors. By mixing berries in different ratios, secondary and tertiary colors can be obtained.

Some games make use of the difficulties in distinguishing colors for their mechanics. The color! is a game that asks you to find the square on a grid that is a different color, progressively showing more squares and closer colors. Specimen asks you to identify from a few blobs in a black petri dish the one that has the same color as the background.

Blendoku asks you to arrange a number of color swatches in gradient order in a crossword-style grid. Huedoku is the same idea, but in a grid. These games are similar to the Online Color Challenge which scores your ability to arrange four sets of color swatches in gradient order.

Brandseen is a game that relies on color memory (or brand recognition): players are asked to match the colors of popular brands by memory, and are given a score on how well they do it.

Signifiers and Identifiers

Colors in games are used to identify different elements and alert the player to properties of elements.

Identifiers

Color identifiers (also known as glyphs) are used to group and separate game elements, such as differentiating players, in game characters and in game areas.

(Age of Empires

A color glyph should be easy to label or mutually exclusive from other identifiers and neutral colors in the scene. Identifiers are commonly used in versus games like Kill Zone and territorial combat such as Rise of Nations.

(Kill Zone)

(Rise of Nations)

Signifiers

Signifiers are used to communicate properties of an element (such as an item or a section of terrain) to the player. The color of an item or area communicates whether or not it can be interacted with and how it can be used.

In Mirrors Edges runner mode, objects that can help you progress are highlighted in red.

(Mirrors Edge)

In the upcoming game Witness, special areas will be graded differently to mark their significance.

The excursion funnel in Portal 2 creates a blue portal for objects to be pushed through and an orange portal for objects to be pulled through.

(Portal 2)

Color is used to categorize different potion ingredients in the Pirates of the Caribbean Online (and many other games) depending on what they are made from.

(Pirates of the Caribbean Online)

Content Variation

Color variation is a cheap way to increase the content of the game.

In games with abstract art, levels have a tendency to look very similar, and it is easy for the depth of the game to be undervalued as a result. Changing the background color between levels is used to make levels more distinct visually, and give the player a better sense of the variety and depth in the game. Splice is one game that does this.

Some games, such as Tiny Wings and Blowfish Rescue, uses algorithms to generate endless color schemes. Here is an article that explains some basic techniques of generating palettes procedurally.

(Tiny Wings)

(Blowfish Rescue)

We have also built a Unity plugin, Colors to do this:

Color changes can also be used to get more content. Palette swapping (explained below) was a popular way to increase enemies and game items when space was still an issue. Today, changing colors is still a popular way to increase content. This technique is often used when the color also serves as a identifier.

Since the introduction of games on black screens with white and green graphics, the range of color displayed on devices has increased dramatically. This has allowed games to look more and more realistic.

Galaxian (1978) was the first game to use RGB colors. Up until then the only colors seen in games were produced using cellophane sheets and cardboard backgrounds.

Edit: It seems we were mistaken about the first color game! There were quite a few color games before this time. The exact history is a bit murky, but Wimbledon (1974?) and Color Gotcha (1973) are candidates. Galaxian may have been the first game that used multicolored sprites. In What Was The First “True” Color Arcade Video Game? Keith Smiths look at some of the first games that used color. (Thanks for Nicholas Ralabate who shared the link in the comments).

(Galaxian)

Edit The following paragraph was rewritten to fix some inacuracies. (Thanks to Mikie Simons for pointing those out.)

Some early devices that featured more than 256 colors were the PC Engine (1987) with 482 simultaneous colors (of a possible 512) and the Neo Geo (1990) with 4096 simultaneous colors (of a possible 65536. In 1994 Play Station set a new benchmark with 16.7 million colors.

Colour Lovers have a nice infogrpahic of the history of color in video games; a piece of it is shown below:

http://www.colourlovers.com/blog/2011/11/03/the-colorful-history-of-video-games-infographic-2

The color gamut of a device (such as a printer, television or LCD screen) is the portion of the color space that can be reproduced by that device. Most display devices render a scene using the three primary colors, red, green, and blue. The combination of these three colors allows one to display any color that is within the triangular region bounded by those three colors.

Advancements in technology have allowed devices to have larger and larger color gamuts, thus allowing games to display more and more color. A device that is able to reproduce the entire visible color space is an unrealized goal; but devices are getting closer. Some projectors uses more primary colors to increase the color gamut; for example, the Brilliant Color projector. The laser video projector uses 3 lasers to produce the broadest gamut available in practical display equipment today (about 90% of colors most humans can see), derived from the fact that lasers produce truly monochromatic primaries.

Old Techniques to Increase the Number of Perceptual Colors

Pallete swapping was used to increase art content in 8-bit and 16-bit color games, and to reduce the intense task of creating multiple 2D sprites. A simple method of increasing the variety of game characters and items is to reuse the same sprite, but use a different color palette.

Palette swapping was also used between different scenes in the game to increase the number of colors available. Before 3D rendering and full 32-bit true color games, palette cycling was used to animate water, fire and other environmental effects in games such as S.P.Y. Special Project Y. Color cycling involved using a single flat image and a 256 color palette (which was all video cards could render at the time). Visual effects (or animations) were produced by cycling between the colors of the palette, giving the illusion that pixels are moving.  

[embedded content]

Dithering is a technique used to increase the apparent number of colors by interleaving pixels of different colors. For example, to get a yellow-green, a checker board pattern of green and yellow pixels could be used.  You can see the dithering in the screenshot from Aladdin below in the dunes and clouds.

Color is perceived by the brain as a result of light rays reflecting off objects and hitting the retina of the eye. However, different colors can have different biological effects and not all people see color the same. This can affect the player experience in many games.

One example of biological effects is how we see red. Red light focuses behind the retina which forces the lens to grow more convex to pull it forward. Therefore, we perceive that red areas are moving forward. This may explain why red captures attention and is exploited in games such as Mirror’s Edge, or why warm colors give the impression of advancing when put next to cool colors. 

Color Blindness in Games

Color blindness, or color vision deficiency, is the inability or decreased ability to see color, or perceive color differences, under normal lighting conditions.

Color blindness affects about one in 12 men, and one in 200 women. The most common type of color blindness is Red-Green color blindness, which results in a difficulty in discriminating red and green hue. The below image shows colors seen with normal vision (left) and colors seen with Red-Green color deficiency. 

Although the majority of games don’t cater for color blind players, many are beginning to consider color blindness in the design process, by providing visual cues (shapes, text, patterns) other than color.

A common problem in first person shooter games are red and green indicators, which are used to distinguish opposing teams. A popular solution (implemented in Call of Duty: Black Ops) is to provide blue and orange indicators as an alternative. Treyarch went as far as having a color blind lead game tester.

This article gives some examples of what it is like to play games when you are color blind.

Impossible Colors

Impossible colors (or forbidden colors) are colors that, due to the functionality of the retina, are biologically impossible to be seen simultaneously. Impossible colors are not a mix of colors, but rather a hue that is similar to both, such as a hue that looks “redgreen” or “yellowblue”.

Red light stimulates cone cells in the retina allowing us to see red, while green light inhibits cone cells causing us to see green. While most colors induce a mixture of effects from these neurons, red and green light cancel each other out, meaning we cannot perceive to see them from the same place. The equivalent happens for blue and yellow.

A number of experiments have been done to prove that impossible colors can indeed be seen. These experiments include using an eye tracker device or performing exercises to cause the cone cells to become fatigued. More recently the Oculus Rift has been used for games such as Diatomic Number to see impossible colors.

(Diatomic Number)

Posted on Leave a comment

The Steam Awards 2017 Winners!

The Steam Winter Sale continues today, through January 4th!* Save big on thousands of games for Windows, Mac and Linux in the final day of the sale!

Thanks to all that voted in The Steam Awards!

The “Choices Matter” Award:
The Witcher® 3: Wild Hunt

The “Mom’s Spaghetti” Award:
PLAYERUNKNOWN’S BATTLEGROUNDS

The “Labor of Love” Award:
Warframe

The “Suspension of Disbelief” Award:
Rocket League®

The “The World Is Grim Enough Let’s Just All Get Along” Award:
Stardew Valley

The “No Apologies” Award:
The Witcher: Enhanced Edition Director’s Cut

The “Defies Description” Award:
Garry’s Mod

The “Cry Havoc And Let Slip The Dogs Of War” Award:
Just Cause™ 3

The “Haunts My Dreams” Award:
Counter-Strike: Global Offensive

The “Soul Of Vitruvius” Award:
Rise of the Tomb Raider™

The “Whoooaaaaaaa, Dude! 2.0” Award:
The Evil Within 2

The “Best Soundtrack” Award:
Cuphead

The “Even Better Than I Expected” Award:
Cuphead

Check out the winners in all their glory here!

*Discounts end January 4th at 10am Pacific, unless otherwise indicated.

Posted on Leave a comment

Video: The dos and don’ts of putting together a creative portfolio

A portfolio is one of the most important things to perfect for those working in a creative industry. Trying to decide what to include can be daunting. How many pieces? How many different mediums, and in what format? With the Internet acting as a potential first impression for employers, should artists tweak their social medias accordingly? 

In this GDC 2017 session industry artists Greg Foertsch, Alison Kelly, Wyeth Johnson, Lisette Titre-Montgomery, Shawn Robertson and Gavin Goulden discuss what can make or break a creative portfolio. They offer advice on what artists should include in order to catch the attention of future employers, as well as how to present themselves online in-between posting their creations. 

The talk goes over crucial topics every artist should consider when putting together their portfolio. For example, Foertsch guides the conversation and asks artists to consider quality over quantity when picking out work. “Your portfolio is only as strong as the weakest piece in it,” adds Johnson. 

Artists interested in learning about what they can do to improve their portfolio can watch the talk completely free via the official GDC YouTube channel!

In addition to this presentation, the GDC Vault and its accompanying YouTube channel offers numerous other free videos, audio recordings, and slides from many of the recent Game Developers Conference events, and the service offers even more members-only content for GDC Vault subscribers.

Those who purchased All Access passes to recent events like GDC or VRDC already have full access to GDC Vault, and interested parties can apply for the individual subscription via a GDC Vault subscription page. Group subscriptions are also available: game-related schools and development studios who sign up for GDC Vault Studio Subscriptions can receive access for their entire office or company by contacting staff via the GDC Vault group subscription page. Finally, current subscribers with access issues can contact GDC Vault technical support.

Gamasutra and GDC are sibling organizations under parent UBM Americas

Posted on Leave a comment

How Warframe built a collaborative free to play economy

– Studio Manager of Digital Extremes Sheldon Carter on fostering a relationship with the Warframe community 

In an interview with Polygon, art director of the free-to-play game Warframe Geoff Crooks was joined by studio manager of Digital Extremes Sheldon Carter to discuss the development Warframe after its initial launch, which was met with mild success.

Once the game was released, the studio relied heavily on word of mouth from fans in order to survive. “I think that the real narrative is that the community and use worked hand-in-hand right from the start to build the game together,” Explained Carter. 

Digital Extremes took what small fanbase existed around Warframe and used it to cultivate a relationship that relied heavily on feedback from its users in order to grow and reach a wider audience. Crooks admits that expectations were low at first.

But engaging with players eventually blossomed into the collaborative relationship the team shares with players now. “That weird relationship at the start naturally built this collaborative development relationship that we still have to this day with our community,” Said Crooks. 

Through this community engagement came the monetization system Warframe uses today. The game is cooperative, and players can enjoy the game without spending money. However if they choose to, its because the gear will help the team. 

“You want to work with other players to advance, you’re not against someone. So the feeling that someone has something that looks different than you, there’s no sting to that,” Carter pointed out. “Our community turns into people who want to help each other achieve those goals. It really lends itself well to the type of monetization we do.” 

According to Carter, feedback from the community is what allows Digital Extremes to be able to monetize without alienating its players. “Our community loves the feeling of being able to get that super rare thing by playing the game, but first you have to have the game they love to play and you have to have those loops set up to get the feedback from the community.”

Check out the full interview available at Polygon. 

Posted on Leave a comment

Get a job: Sucker Punch is hiring a Gameplay Programmer

The Gamasutra Job Board is the most diverse, active and established board of its kind for the video game industry!

Here is just one of the many, many positions being advertised right now.

Location: Bellevue, Washington​

Sucker Punch Productions is looking for focused, collaborative, professional engineers to implement gameplay features for our upcoming project. We’re looking for bright, energetic, and talented individuals who share our love of video games and our passion for creating innovative and fun experiences.

Work for this position will be done primarily in C++, with some work done in our proprietary Scheme-based scripting language. This is a highly collaborative position. You’ll be working closely with our game design team during iteration on gameplay features.

Job requirements:

  • 3+ years commercial programming experience is a plus. Game industry experience is not strictly required, but is strongly preferred.
  • Must be fluent in C++. Experience with Lisp or Scheme is a plus.
  • BS or higher in Computer Science or a related discipline.
  • Must be legally able to work in the United States.

Interested? Apply now.

Whether you’re just starting out, looking for something new, or just seeing what’s out there, the Gamasutra Job Board is the place where game developers move ahead in their careers.

Gamasutra’s Job Board is the most diverse, most active, and most established board of its kind in the video game industry, serving companies of all sizes, from indie to triple-A.

Looking for a new job? Get started here. Are you a recruiter looking for talent? Post jobs here.

Posted on Leave a comment

Steam Winter Sale 2017 Continues! Plus, Final Day of Voting for The Steam Awards!

The Steam Winter Sale continues today, through January 4th!* Save big on thousands of games for Windows, Mac and Linux!

Today is the final day to vote in The Steam Awards! Find out the winners on January 3rd.

Voting for The Steam Awards 2017 ends with The “Even Better Than I Expected” Award. Here are the finalists:

Assassin’s Creed Origins

Call of Duty: WWII

Cuphead

Hollow Knight

Sonic Mania

Remember to check back every day to see the new category and cast your vote!

*Discounts end January 4th at 10pm Pacific, unless otherwise indicated.

Posted on Leave a comment

Video Game Deep Cuts: The Best Wolpaw Of The Year

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


[Video Game Deep Cuts is a weekly newsletter from curator/video game industry veteran Simon Carless, rounding up the best longread & standout articles & videos about games, every weekend.

This week’s highlights include innumerable ‘best of the year’ countdowns – from VR games to mobile titles to, uh, Eric Wolpaw’s vegan juice cuts, and loads more besides.

Well, we made it to the end, folks. The end of the year, that is. I’m reliably informed there’s another one starting soon, though – and may have even got here by the time you read this, depending on how good you’re being about staying away from email.

Anyhow, this was my first full year of Video Game Deep Cuts, and I wanted to thank all of you for opening, reading, and recommending. The newsletter is a great clarifying of the week’s ‘cool things about video games’ for me, and hopefully it does a similar groovy number on your textual-visual cortex, like. Om….

Happy New Year!
– Simon, curator.]

——————

Yoko Taro’s Top 10 Games of 2017 (Yoko Taro / GiantBomb – ARTICLE)
“NieR:Automata’s creator has a few thoughts about the games he loved most in 2017. [SIMON’S NOTE: This is part of a GIGANTIC set of Top 10s from the GiantBomb crew & guests that I highly recommend you check out – I may feature one or two others below.]”

Replay All: #105 At World’s End (Reply All / Gimlet Media – PODCAST)
“Well okay. So three months ago, I got an email from one of our listeners. And she was writing because she’d lost something on the internet and she really wanted help finding it…  And there’s this one Flash game that Kris remembers playing that she says was the best game that they played. It’s called, “Bunni: How We First Met.””

‘PUBG’ Creator Talks Game Launch, eSports, IP Protection (Steve T. Wright / Glixel – ARTICLE)
““It has absolutely nothing to do with PUBG or my work. I just feel that games don’t have the same IP protection as literature or music or movies, and I think that’s a shame. It makes it very difficult for developers to protect their intellectual property, and they have to act a certain way because of that.””

Open Production With Sunless Sea: Kickstarter, Early Access and After (Alexis Kennedy / GDC / YouTube – VIDEO)
“In this 2016 GDC session, Failbetter Studios’ Alexis Kennedy explains how the company used open publishing techniques to bootstrap from being a moribund studio months from bankruptcy to a successful, cash-flow positive company with their first Unity game.”

Nintendo’s Switch Brings Some Magic Back (Simon Parkin / New York Times – ARTICLE)
“Jake Kazdal, an American video game developer who lives in Kyoto, Japan, spent a night in early March refreshing the website of GameStop, the video game retail chain in the United States. He wanted to buy Nintendo’s just-released console, the Switch. But the device had already sold out in Japan, forcing him to look elsewhere.”

Virtual reality’s best experiences and biggest (teleportation) steps in 2017 (Sam Machkovech / Ars Technica – ARTICLE)
“In the end, the best VR content stands out for delivering experiences that are altogether impossible on flat screens, and that rule guides my picks for the best VR content in 2017. Games dominate this year’s list, if only because last year saw so many incredible applications that have yet to be topped. But this list contains a couple of exceptions. [SIMON’S NOTE: rare to see someone with multiplatform VR knowledge, so this article is very useful for ‘the state of the art’.]”

Akira Nishitani / Katsuhiro Harada Interview (Ikko / Denfaminicogamer / #JPFGC – ARTICLE)
“For Nishitani, who is returning to world of fighting games, what thought process gave birth to [Street Fighter 2], and how does he view the fighting games that came after? What kind of thoughts and ideas is he putting into the game he is currently developing? Along with Harada, who asserts that Nishitani is a “genius,” we decided to ask about the circumstances surrounding SF2 as well as his new game from Nishitani himself.”

Erik Wolpaw’s Top 10 Games of 2017 (Erik Wolpaw / GiantBomb – ARTICLE)
“Former Valve writer and current vegan juice salesman Erik Wolpaw would like you to know that he enjoyed these ten video games in 2017. [SIMON’S NOTE: please read this. No really, please do.]”

A life in game journalism (Dean Takahashi / VentureBeat – ARTICLE)
“Merry Christmas and happy holidays. I thought I would do something different for a holiday message this year. It’s based on a talk I gave to a game journalism class at Stanford University recently. It’s about my life in game journalism, and how I got to where I am today. I hope you enjoy it.”

TouchArcade Game of the Year 2017: ‘Death Road to Canada’ (Eli Hodapp / TouchArcade – ARTICLE)
“This has been a truly incredible year for iOS gaming. We started with a list of hundreds of fantastic titles, whittled that down to a Top 100 Best Games list, and then started the day off with a short list of eight games in consideration for TouchArcade Game of the Year…  [SIMON’S NOTE: TouchArcade picks up a LOT of mobile titles that others miss – also see: Jared’s 10 Best Games of 2017 – Some of the Biggest Releases of the Year and a Few Hidden GemsEli’s 10 Best Games of 2017 – These Games Need to Be Listed SOMEWHEREMikhail’s 10 Best Games of 2017 – Best iOS Gaming Year EverShaun’s 10 Best Games of 2017 – A Year Full of Truly Unique Mobile GamesRob’s 10 Best Games of 2017 – A Purrfect Year for Mobile GamingTasos’ 10 Best Games of 2017 – ‘Arena of Valor’, ‘Gorogoa’, and More Made the List.]”

Made in Brazil: A Game Development Snapshot (Cloth Map / YouTube – VIDEO)
“Brazil’s 200 million people love video games, so why haven’t we heard more about games FROM Brazil? [SIMON’S NOTE: also see Pumped To Be Here: Brazil’s Game Fans from the same video series.]”

Top 2017 Games That Waste Your Time Properly (Paolo Pedercini / Molleindustria – ARTICLE)
“This best-of-the-year list is devoted to the idealists who organize the players’ time according to their expressive goals, and not to the perceived market demand. If games are machines for wasting time, they may as well waste it in an artful way.”

Kansas Man Killed In ‘SWATting’ Attack (Brian Krebs / Krebs On Security – ARTICLE)
“A 28-year-old Kansas man was shot and killed by police officers on the evening of Dec. 28 after someone fraudulently reported a hostage situation ongoing at his home… This particular swatting reportedly originated over a $1.50 wagered match in the online game Call of Duty. Compounding the tragedy is that the man killed was an innocent party who had no part in the dispute. [SIMON’S NOTE: don’t generally link straight news, but this is notable.]”

Chasing Innovation Inside the Company Behind D&D, Magic and Avalon Hill (Brian Crecente / Glixel – ARTICLE)
“Dungeons & Dragons, Axis & Allies, Magic: The Gathering, Duel Masters and, soon, Transformers: Chances are that if you’ve played a board game, a card game, a tabletop game, you’ve played a Wizards of the Coast game. With a 27 year history of success under its belt and a back-library that spans nearly 50 years, Wizards of the Coast is in many ways the face of tabletop gaming.”

Game Over (Emily Short & voice cast / BBC – RADIO PLAY)
“Building a video game that works, where the player understands the goals and enjoys the experience is one thing, but Chelsea wants her new game to change the world. She’s calling it Glacier and it will tell the story of an Alaskan village eroded by global warming. [SIMON’S NOTE: Insider-ish in scarily accurate ways, kicks off with IGF-aping, mucho recommendo.]”

How Bomber Crew‘s devs found outsized success with a permadeath flight crew sim (Joel Couture / Gamasutra – ARTICLE)
“That unexpected success was something the developers wanted to capitalize on, both financially and to reward all of the players who had so kindly supported them. Still, what were they to do for all of these players who were enjoying their game, and how to do it?”

The most surprising games of 2017 (Tom Chick / Quarter To Three – ARTICLE)
“So if the most disappointing category is a list of games that should have been better, the most surprising category is the opposite. These are games that were better than they should have been. Just as disappointing is about falling short of expectations, these surprising games exceeded expectations and, in some cases, were among the best games of the year. [SIMON’S NOTE: always controversial but with lots of depth – Tom Chick plays a LOT of games – also see most overrated for special controversy, haha.]”

That Game on Your Phone May Be Tracking What You’re Watching on TV (Sapna Maheshwari / New York Times – ARTICLE)
“At first glance, the gaming apps — with names like “Pool 3D,” “Beer Pong: Trickshot” and “Real Bowling Strike 10 Pin” — seem innocuous. One called “Honey Quest” features Jumbo, an animated bear. Yet these apps, once downloaded onto a smartphone, have the ability to keep tabs on the viewing habits of their users — some of whom may be children — even when the games aren’t being played.”

How ScummVM is keeping adventure games alive, one old game at a time (Richard Cobbett / PC Gamer – ARTICLE)
“There are many revival projects out there, from DOSBox to single-game engines like Exult for Ultima VII. One of the biggest and oldest is ScummVM, launched in 2001 and named for the classic SCUMM engine—Script Creation Utility For Maniac Mansion—which gave us all of Lucasarts’ classic adventure games.”

The Best Video Games Of 2017 (Simon Parkin / The New Yorker – ARTICLE)
“These are tough times for the thoughtful fan of video games. Adult play, typically viewed with suspicion away from the golf course (where it’s justified by networking), the sports arena (where it’s justified by money), or the bedroom (where it’s justified by, uh, wine?) seems especially frivolous in our put-upon world.”

Brandon Sheffield’s all-time top 10 games hidden in other games (Brandon Sheffield / Gamasutra – ARTICLE)
“Hidden games are among my favorite things. I’m talking about games tucked away within published games. Specifically I’m interested in games that have little to nothing to do with the games they’re hidden in, and as a result cause the player to speculate. How did these games get in here?”

Alice Maz on Minecraft (Alice Maz – ARTICLE)
“After sinking 10-20k hours into a single MMO and accomplishing a lot of unbelievable things within the confines of its gargantuan ruleset, it is generally pretty easy for me to pick up another game and figure out what makes it tick. I’ll tell the story about that whole experience sometime, but it’s a long tale to tell. This is about one of those other games: Minecraft. [SIMON’S NOTE: This is an excellent/weird story.]”

——————

[REMINDER: you can sign up to receive this newsletter every weekend at tinyletter.com/vgdeepcuts – we crosspost to Gamasutra later on Sunday, but get it first via newsletter! Story tips and comments can be emailed to vgdeepcuts@simoncarless.com. MINI-DISCLOSURE: Simon is one of the organizers of GDC and Gamasutra & an advisor to indie publisher No More Robots, so you may sometimes see links from those entities in his picks. Or not!]

Posted on Leave a comment

Level Design Deep Dive: Making an I Expect You To Die VR puzzle level on a budget

The Gamasutra Deep Dives are an ongoing series that aim to shed light on how specific design, art, or technical features within a video game come to be, in order to show how seemingly simple, fundamental design decisions aren’t really that simple at all.

Check out earlier installments, including creating drama through a multitude of simple tasks in Bomber Crew, or maintaining player tension levels in Nex Machina, and achieving seamless branching in Watch Dogs 2’s Invasion of Privacy missions.

Hello, I am Shawn Patton, the Design Director on I Expect You To Die (IEYTD) and a Principal Designer at Schell Games. In our 15 year history, Schell Games has developed everything from theme park attractions to educational experiences to mobile games.

Most recently, we have been exploring VR and AR. Personally, I’ve developed for the PSVR, Vive, Oculus, Microsoft MR headsets, Daydream, Gear, and the Virtuality system (but that was back in 2001). As a studio, we are very excited at the possibilities mainstream VR/AR has brought to our industry and we are exploring them in earnest.

IEYTD has been a great project to work on (and off of) over the last three+ years. Looking through my email history, I found that it grew from a prototype phase in 2014 to some pitch docs late in 2014 to my full-time involvement as Design Director in January 2015. We made the “car level” and put it on Oculus Share in June 2015 where it became the highest rated app until Oculus Share was taken down in May 2016. In October 2015, we started making three new levels, connective tissue, achievements, Touch and PSVR support and all the other things that make a game so we could release it in December 2016. 

Players were super positive about how the game felt and played, but there were two distinct types of reviews we were getting:

“Amazing game, great VR, perfect to show new people – worth the cost!”

or

“Amazing game, great VR, perfect to show new people – not long enough to be worth the cost!”

Clearly we had something, but could we make more levels in a cost-effective way?

Dev time is of the essence, Agent.

So we set about making another level. If we leveraged all the lessons learned (see the VRDC talk I gave with Jesse Schell for more info there), could we do it with a smaller team on a tighter timeline? The most expensive part of creating past levels was iteration time. Finding the puzzle difficulty balance while keeping things interesting for the player requires lots of testing and tweaking. 

Massive spoilers for the vacation level “First Class” follow. No, really, our game is primarily a puzzle escape the room game, so if you ever want to play the new level, please stop reading now. If playing the level simply isn’t in the cards but you’d still like to read the article, may I suggest watching a playthrough video first. You’ve been warned, Agents.

[embedded content]

Brainstorming and Prototyping : Still Important on a Budget

We started by having a wide-open brainstorming meeting that anyone in the company was welcome to attend. It generated a bunch of ideas in categories such as locations, characters, features, interactions, and narrative. Time travel, Dr. Zor’s mother, and making a clay bowl all made appearances. Is Demi Moore Zor’s mother?

Then the core team responsible for the new level met and we talked in more realistic terms. The idea of having the level on a train had come up, and it matched an idea we had during the creation of the original game.

However we hadn’t had a chance to explore different methods of moving the train without making people sick. Now, as luck would have it, just around that time there was a bit of a staffing delay and we were able to sneak a week or so’s worth of prototyping in with a couple people. We did tests with cabin size, window size, player placement, straight vs. curved track, tunnels, outdoor element placement, and smoothness. In the end, there were a few people in the office who still felt twinges of sickness so we decided to abort. Our game is a very comfortable experience when it comes to motion sickness and we didn’t want to jeopardize that aspect in any way.

While we did spend time on something we ultimately didn’t use, we learned just being in a train car can be fun and the environment size was good. Also, the story that grew out of those early tests translated fairly well to our new, stationary train. 


One of the window sizes and tree distances we tried.

What story you ask? Well, Matt Mahon, our VP of engineering, had mentioned in an email that a vacation level might be fun. The idea that it would be a vacation in name only tickled us and we set about crafting a story where the Agency basically sends you on a mission under the guise of the much teased, but never delivered, vacation.

Creating Character on the Cheap

Which brings me to the design challenge we wanted to conquer most with this new level. We really wanted to make our world feel more alive, like there were more people in the world than just you and your ear-piece handler.

In past levels, we had a couple robotic voices to mix it up, but you never really got to interact with anyone. Being on a train could lend itself to solving that challenge, but we didn’t have a character modeler, rigger, or animator on our smaller team. Even if we did, we feared getting the interactions to feel good. With the freedom players have in VR, giving good reactions to everything a player could do would be a scope explosion. We needed a better solution. As a result of the testing described above, we also needed a way to stop the train. 

What if we killed two birds with one stone? What if the emergency situation that stopped the train also locked you in your cabin so you wouldn’t expect to move around or see other people?

That looks fine. This is fine.

We still want character interaction though, that’s the point. But how were we going to do that? Well, listening to VO can be fun and VO is certainly less expensive to create than fully rigged characters, but wouldn’t you want to talk back to them? Could we get some voice recognition cloud solution working? No, too clunky. Then it hit us: the player is a spy. When do spies listen but not talk? When they’re gathering intel, that’s when!  We decided on a phone that you could hack into because eavesdropping on other conversations felt like something cool a spy would do while being quiet.

Then the question became, how to hack in. Is “hack in” even the right wording? We originally planned on a separate phone panel on the wall, to the side of a wall mounted phone.

However, when we laid out the level in cardboard in the real world (something we call “brownboxing”), it quickly became evident that we needed our wall real estate for other things and we didn’t have enough meaningful interactions in front of the player, you know, in the easiest place to interact with things. So operating still in cardboard, we designed a phone with a base you could unscrew and move plugs around in. Not only did this solution put a really meaningful interaction right in front of the player, but it was a fun and surprisingly intuitive interaction.

Direct comparison between brownbox phone and final phone.

Moving the physical brownbox interaction to VR was fairly easy. We just had to get the scale and collisions of the plug and sockets correct so that you could accurately pick it up and place it. We iterated on whether we showed the room numbers on the panel or whether we had players hear and remember them from the voicemail interface. We iterated on how fast you could press the buttons and on where the labels were. The voicemail light was a lot of iteration in itself. First the color (we moved from green to yellow), then its behavior. Should it blink from the start, stay solid, or go off after you listened?

All of these questions we answered with constant playtesting. For the light, we went with blinking if you hadn’t heard the message and moved to solid after listening. It was only off if that room never had a message.

Quests Without Movement

Even if we have a budget solution for creating characters, we need a budget way to have the player give and receive items. In past levels there was no interactions with other characters, so we needed a new solution here too. Well, I’ve always been a fan of pneumatic tubes. Trips to the bank drive-through growing up always made use of this magical tube transport system and many big box stores still use them today for sending messages and money around. It stands to reason that a luxury train that prized privacy would have such a system in place right? Nope, not really… I mean, in real life, how would the tube go from train car to train car? But that doesn’t matter in VR! It’s a cool interaction and it solves our problem. Now the player can send things to NPCs and receive them in return.

Choosing Our Characters

So we know we can have these audio-driven characters, but who are they? We wanted to have allies, villains, and civilians. Civilians were easiest. We added some structure with the conductor and some comedic relief with a room service guy and a random passenger. We added two men speaking Polish in a vaguely ominous way to serve as a bit of a red herring (and because we have a couple native speaker coworkers to record dialogue in house inexpensively).

An ally would be great, but who would the player be meeting on a train? Another spy? How about a defector! Having a defector in the mix is exciting and provides a reason for the player to use the aforementioned tube system. The defector could demand proof of who you are, provide mission critical info, and give you equipment or puzzles to solve. If we did it right, we might be able to get some emotional responses, too. Having the defector “die” was in our original story and it ended up working way better than we thought it would. Players who had only listened to a couple phrases felt connected to her and were visibly and verbally surprised at her death. A few even “killed” themselves right then to start over, playing again to try to alter her fate by sending her a stun grenade to protect herself! (Those people get an alternate audio at the end.) I also think the sleuthing, including reading about her in a newspaper article, helped to have the player form a quick bond with this character.

“Ah, The Delhi Chronicle. A fount of knowledge to be sure.”

How about villains and villainous plots? Unlike other levels where you were in a Zor vehicle or a Zor-controlled location, in the new level you are on a civilian train. This drastically reduces our ability to create crazy Zor-like contraptions and traps. It was a problem because we needed to figure out different and exciting ways to kill the player.

As a result, we had to design the level with more external threats than the traditional “room turns against you” plots we’d used before. We could have assassins on the train trying to kill the defector, and then transition them into killing you. That said, we thought the assassins in the other rooms would not turn on you until after killing the defector, because it created two distinct moods to the level: a bit of search around detective work followed by the more linear but high intensity assassination attempts.

This method combined the best aspects of past levels. In the hunting lodge and car level the player spends a lot of time searching and piecing together how to accomplish the mission. The submarine escape level is more frenzied. Our train level would combine the two feelings. We did want the transition from slow to fast action to be controlled by the player though. Switching when the player puts the tape in the transmitter does just that.

We came up with “gun through the mail slot” guy first, then someone mentioned the “spear” guy idea, attacking from above, and we all really loved it. From an interaction standpoint, that meant we had left and upper-center, so we needed a right side interaction to round it out. Thus the armored car (or “tank”) was born. When the formidable vehicle you’ve seen from the start rolls up next to your window and opens fire, it’s an awesome moment. Then you get a bit of a one on one moment when you play hot potato (grenade) with the villain inside the tank.

It’s also worth noting that each of the three assassins can have their own attacks turned against them: cloche ricochets bullet, spear thrusts back up, and grenade tossed back in. That feeling of beating someone with their own tools is always one we’ve found players enjoy. After thwarting the tank, you get another great surprise character moment: the defector violinist is alive!

“No one ever expects the spear through the ceiling.”

But wait, there’s still one more new character to meet: the dogged pilot of an enemy plane. Admittedly you don’t see or hear much from this character, but if you fall victim to their bullets, you feel really good when you blow them out of the sky.

In case you haven’t played, there’s a hint line where the defector says something about “needing a bigger gun” that we added for two reasons. First, people were not used to interacting with things outside their immediate area, so the tank, which is outside the window, was not popping into people’s heads as a solution to the plane as much as we’d like. Second, it was a nice final moment of teamwork between you and the defector.

We contemplated a version where you aim and she fires somehow, or she shines a laser and you fire a rocket launcher you’ve assembled, but you gotta cut scope somewhere, right? We are on a budget after all.

Quality VO Is Worth the Cost – But Be Smart

Before we leave our player to enjoy their vacation with all their new friends, I’d like to say one last thing concerning characters. Earlier I mentioned how “just VO” is less expensive than a fully modeled and animated character, and it certainly is, but you also have to have quality VO to sell it. We are fortunate that our Agent Handler works locally here in the office, is excellent, and happens to be our writer. (Thanks, Jared!) Thus we can bring him in for pickups whenever.

For the defector character Anna, we worked remotely with the talented Fryda Wolff. She brought immediate life to the character, and even with only a few lines, it really came across well. To best use her time, and our money, we planned the lines out early and had them in the game with temp delivery from a coworker for testing. That let us get all the lines we needed with Fryda in just one recording session.

Another job well done.

With the “First Class” level we embraced our constraints but still drove for the dream of interacting with more characters. By leveraging some smart design decisions and a whole lot of iteration, we managed to make a level with eleven characters while maintaining our strict timeline and budget.

Granted, you never see any of the characters, but what I have seen is players having real emotional reactions to them, from mourning Anna to hating “spear guy”. What does the future hold for I Expect You To Die? Well, it is a world we love to play in and we hope you will continue to as well. Thanks for listening!
 

Posted on Leave a comment

Best of 2017: Game Design Deep Dive: Creating believable crowds in Planet Coaster

Deep Dive is an ongoing Gamasutra series with the goal of shedding light on specific design, art, or technical features within a video game, in order to show how seemingly simple, fundamental design decisions aren’t really that simple at all.

Check out earlier installments, including  using a real human skull for the audio of Inside, and the challenge of creating a VR FPS in Space Pirate Trainer

My name is Owen Mc Carthy. I am a principal programmer for Frontier. I studied Computer Science and Theoretical Physics at University and did an MSc in Game Development at the University of Hull before joining Frontier nine years ago. I usually end up working on something physics or simulation related. 

I worked on reactive water simulation and the physics in Kinectimals. I’ve worked with some really fun signal processing on Kinect Disneyland Adventures so we could map the player’s movements to their in-game avatar with as little jitter and lag as possible. I then worked on building destruction and ragdolls for Screamride. 

Most recently I worked on the crowd simulation in Planet Coaster. I really love building believable worlds, and game development is definitely the place to be to make that happen.

For Planet Coaster, we wanted to make the best-ever crowds in the SIM genre. That meant huge numbers, few intersections, and novel approaches to sound, art and animation.

In Planet Coaster’s voxel-based sandbox we wanted to simulate 10,000 park guests at once and we wanted them to look like a real crowd. We also wanted them to be able to handle curved paths, which had proven a challenging task in crowd simulations from our previous games but something we considered essential to Planet Coaster.

Traditional pathfinding methods aren’t suitable for simulating huge numbers of characters in real time. Usually each agent would compute a path separately and then move along it, but this tends to be very expensive and doesn’t scale well. Trying to add collision avoidance afterward becomes a mess of edge case handling. 

We use potential/flow fields to simulate the crowd in Planet Coaster. We have parallelized the computation across CPU cores and frame boundaries to minimize impact on the frame rate. We also had to implement non-standard approaches for sound, art and animation systems.

At the beginning of Planet Coaster’s development we knew we wanted to move the genre forward. One thing I was particularly invested in was bringing the atmosphere of a real crowd into our virtual world, and in making each park guest aware of their surroundings. I wanted to capture little moments like walking by an entertainer doing silly things and seeing other guests watching and reacting.

We reviewed the state of the art in relation to crowd simulation and navigation. That involved reading lots of research papers, studying techniques and analyzing the feasibility of each one, taking into account scalability, memory usage and CPU performance. We watched hours of footage of crowds moving around theme parks, and we captured footage of our own.

10,000 guests was the number that we targeted right from the beginning, and simulating each one individually seemed like a real challenge, so we focused on a smaller number. There are fewer goals in a theme park than guests; rides, coasters, shops and facilities are all goals. This was where the technique of using flow/potential fields became very appealing. 

Instead of computing a path from A to B for each person, a path from each goal to all possible positions is computed. The question was, ‘can we simulate a few hundred goals in a flow simulation more cheaply than we could simulate 10,000 individual paths with something like the A* algorithm?’ 

Crowd flow

We had prototypes of several different Planet Coaster technologies in development in parallel. We started development on a voxel based landscape system, and we really wanted to break out of the traditional grid-based path system. Ultimately the crowd system would need to be integrated with the voxel terrain and path systems, but early in development they were still unknowns so the crowd system had to be robust enough to fit whatever these systems became. It was easier to develop this crowd prototype in isolation, but to be constantly aware of making it amenable to changes elsewhere. 

The crowd system was much more robust as a result of this separation. Requests for changes to the path system throughout development were little to no work to integrate with the crowd system. The crowd system just deals with shapes to add to its flow simulation and it doesn’t really can about the source of them. For example: During the first alpha we could only have straight elevating paths. It would have been possible to exploit this fact for ease of implementation of overlapping paths, but later on the designers wanted to have curving elevating paths and they implemented them they just worked fine with the crowd system and became a feature for the second alpha release!

I started creating a flow simulation on a flat grid-based system to begin with, but flow fields for each goal don’t interact with each other directly. The interaction happens indirectly by resolving around a density and velocity field generated from all of the guests in the simulation. These flow fields exhibit many of the properties found in high density real crowds. They interact with each other and flow around each other and form emergent structures like lanes and congestion, and they allow agents to flow around congestion.

I think the best way to imagine how a flow simulation works is to picture a table with raised edges. Inside this table is your park and its network of paths, and each goal point has a different water tap connected to it. Scattered across the table are marbles which will flow with the water. When you want to solve a particular goal, you turn on that tap and watch the water flow through the path network and push the marbles around. Each tap can only move its set of marbles and other taps’ marbles are frozen in place as obstacles. 

We record the velocity of the ‘water’ every time it flows into a new cell on the table. Once the entire table is filled with water, you’ve effectively ‘solved’ the flow field away from that goal. Now you can reverse the direction of the flow, pick any point on that table and inspect the velocity of it, and it is now directing the particle to the goal!

You can now put as many agents as you like anywhere on that grid and you instantly know which way they need to move to get to that goal. You can keep this velocity field in memory until a new one is computed and continue to flow agents on the existing data.


Figure 1: In essence, you’re propagating a wave through a grid and recording the velocity of a wave the first time it enters every cell.

When this prototype was up and running with really simple debug rendering and spheres for each guest, we needed to test the CPU and memory performance to see if this technique was viable at the scale we were aiming for. We built a stress test map with the same dimensions as the target map size. This map had a few hundred goals and about 10,000 agents on it. While memory usage was a little bit over budget, we were confident that eventually we could drastically reduce it. The CPU usage was heavy but the system was single-threaded at this point. We already had a vision to parallelize the simulation so that it wouldn’t be a limiting factor.

Figure 2

[embedded content]

Animation

It was now time to get rid of the debug rendering. The art team had already started taking the concept art and turning it into models we could use. Each guest was planned to have interchangeable body parts with lots of texture and skintone variation. We have a great animation team at Frontier, with lots of experience making quality animations, but due to the number of guests we needed to limit the animation blending that could take place.

Front-facing characters in game animations typically use bone space blending with many layered animations, which makes it expensive to compute the non linear final bone transformation. Instead of this we store the bone transformations from every frame (not keyframe) of the animation in memory and use a simple linear interpolation of the nearest two frames. This leads to simpler-looking animations, but we felt we could do better and still be efficient with clever authoring and cross-fading. 

Crossfading is a much cheaper model-space linear blend between two different transforms, but can cause skeleton constraints to be broken, so we have to be very careful when we cross fade. We authored a lot of the animations with the legs in lockstep with each other so the upper body was free to do other things, and we could crossfade at any point in the walk cycle animation to another reaction animation without the legs crossing, losing momentum or sliding. This allowed us to benefit from bone-space blending quality transitions, without all the computation expense that goes with it. 

We also wanted to have lots of variation in the animations and didn’t want the guests to look repetitive, which is harder to do when blending is limited. The animators were already busy recording footage of how people move as individuals and in groups, so we analyzed this footage and were able to break down the animation cycle into a very modular system. We settled for four or five variants of the base walk cycle, each under two seconds long. Every time one of these animations was finished, we were able to transition to another without blending, and build up a very dynamic and long walk cycle. 

We also had a suite of animations for awareness, needs and feelings – tired, fed up, pointing, laughing, needing the toilet etcetera – that we could plug into the animation timeline when the guests are reacting to things in the park. By the time Planet Coaster shipped I think we had upwards of eight minutes of animations per skeleton type we could plug into this system.

Figure 3:

[embedded content]

We also spent some time looking at how the guests would behave in a group or family. Due to the nature of flow fields, you can’t easily ensure different particles will stay together even if they are going to the same goal, as the flow dictates where each individual particle moves. The solution was to put groups into a single particle in the simulation and move them as one unit. Each group has a radius within which members can move without affecting the flow simulation. Originally the family members were locked in formation but this looked very odd, especially when they turned corners, so we programmed in more freedom so they could rotate individually inside the particle so the relative positions of family members would move and shift over time for a more convincing look.

For more details on animation, take a look at https://www.google.com/url?q=https://medium.com/@nicholasRodgers/applied-matrix-maths-for-complex-locomotion-scenarios-in-planet-coaster-9b5743bd805c%23.b7oebz2ju&source=gmail&ust=1483618494398000&usg=AFQjCNEVPEOn_0XnJN7B11uU-BhHqNowHw” href=”https://medium.com/@nicholasRodgers/applied-matrix-maths-for-complex-locomotion-scenarios-in-planet-coaster-9b5743bd805c#.b7oebz2ju”; target=”_blank”>this blog post by Frontier’s Head of Animation, Nick Rodgers.

Audio

At this point we could see our prototype was going to be the way forward. The large number of guests was becoming a reality so we had to think about how things were going to sound. Traditionally with video game sounds, you usually put a sound emitter on each object/guest that would make a sound, but with 10,000 guests it would sound chaotic and would be prohibitively expensive. 

We wanted to get a very accurate representation of the crowd ambience, and Frontier’s sound designers were already thinking of building a coarse representation of the density of a crowd and their emotions for this purpose. With the flow simulation we already had crowd density data available for the general crowd ambiance. We could then layer ‘fine detail’ audio on top of the crowd ambience so the members of the crowd nearest to the camera would have distinct sounds and conversations, which really brought the guests to life.

Further challenges

By this time the path system prototype’s development had finished and we had chosen a crowd system to go with. The next big challenge was how this crowd prototype would work with the voxel-based terrain and the curved/elevated paths instead of a traditional heightmap. With Planet Coaster’s voxel terrain and free path system, you can overlap paths and terrain on top of one another, making it more complicated than the simple ‘table’ prototype. 

To combat this we decided to break up the grids into much smaller chunks and connect them with virtual connections. The large grid in the prototype image in Figure 2 would be broken up into smaller 4m x 4m grids. To make the entire terrain traversable would require enormous amounts of memory as each distinct goal needs a persistent record of the velocities of each cell, but by only allowing guests to navigate paths we only need smaller grid segments to exist when there is a path in that area, keeping memory usage down.

Each path section would be rasterized to these smaller grid segments, activating cells in them and creating new segments when necessary. When a cell is activated the height of the path is also computed at that point, so each grid also has a heightmap. This meant that when we needed to set the height of the particles it was a quick lookup into the heightmap, instead of raycasting into the voxel terrain. Doing 10,000 raycasts every frame into the voxel terrain to determine the height of each guest was something we wanted to avoid! 

The connections between grid segments were very hard to visualize when dealing with overlapping paths, but hopefully you can understand it after looking at the picture below which shows the debug rendering of the grid segments and virtual connections.

Figure 4: The red lines are connections between cells, and the inactive cells in the grid segments have slashes through them. Each grid segment is a 4×4 block of cells

The connections were probably the most difficult part of the simulation to get right as it adds a lot of overhead to the data structures that has to be precisely maintained when paths are added and removed. The ‘Undo’ and ‘Redo’ feature of Planet Coaster is something often taken for granted, but in this game it was something we really thought would improve the user experience. This most intuitive feature for players required a massive development effort to implement into Planet Coaster’s freeform sandbox. All the game systems had to work with Undo / Redo from the beginning. The crowd system’s add/remove path operations had to be well defined and processed so that adding and removing the same piece of path would leave the crowd system’s data structures in the same state as before, adding further complexity to the maintenance of the virtual connections between the grids.

Scaling up

Now we were at the point where we could build path networks in the game, it was time to scale up the simulation. We needed to optimize! Usually optimization happens near the end of a project, but with a system as intensive as ours we needed to tackle it much earlier. The three important points about flow fields that enabled us to optimize them for very little impact on the framerate are:

  1. Flow fields don’t need to be updated every frame. Particles continue to flow on the front buffer of the velocity field until a new flow field is generated on the back buffer, and when it is finished computing the buffers are swapped.
  2. Each flow field update is independent of the other updates. This means we can run different ones at the same time, and we don’t rely on locking any data structures or complicated synchronization behavior.
  3. The updates are not tied to the frame boundaries and can run across them. The tasks can also yield and let higher priority work execute.

This created some confusion in the player community during our Alpha period, as players would see their CPU usage get close to 100 percent on all cores in task manager and think that the game demanded a better CPU, but the reality was that the crowd system was scaling to take full advantage of idle CPU time to update the flow fields faster, which leads to higher fidelity for collisions between particles. On a slower system it would just take a few more frames to do a full update of all the goals. We even discovered that some users were using systems where their CPU cooling wasn’t actually sufficient to run the CPU under a constant full load.

Figure 5:

[embedded content]

Some of the major technical difficulties we overcame were caused by gridlock. When you have thousands of guests walking on paths and they want to go in opposite directions, lanes will usually form. Unfortunately, lanes sometimes won’t have enough time to form and gridlock will develop. When this happens during events in major cities, nobody is able to move until a police officer or another influencer directs some people to move and others to stay still. It’s realistic but it’s not fun, so we implemented a novel solution to combat gridlock. The longer guests are in head-on collisions with other guests, the smaller their collision radius would become until they could fit through the gaps. This meant that the guests would clip more often, but it stopped the gridlock problem and limited clipping only to areas of very high congestion. 

Even now, there are still areas for improvement – for example ‘dead zones’. It’s possible with potential fields to have areas of the field where the velocity is precisely zero. This manifested as a problem with Janitors cleaning up trash. All of the trash pieces would be part of the same goal and were only one flow computation, but this easily led to situations where a janitor could be caught between two pieces of trash. To work around this, each janitor would only activate the nearest piece of trash to them, and only the active pieces of trash were part of the goal in the flow computation.

Entertainers simply create goals when they are entertaining so guests can go towards and watch them. Bins create goals when they are empty and remove them when they are full. For incidental goals like this as an optimization we were able to limit how far the wave can propagate. This limitation saved lots of memory as we only needed to store a much smaller velocity field.

We were now at the point where we could have hundreds of goals and thousands of guests walking around, all avoiding each other and moving in a manner close to the final fluid and dynamic result you can see in the game. 

There are several other systems and techniques we used that are beyond the scope of this article and I could probably write a full feature on each of them but I really hope this article gives you a good insight as to how we went about designing and implementing this system at Frontier for Planet Coaster. More than anything, I really hope it makes people smile when they play the game at home and realize that their park guests are having as much fun in the park as the player has making it, and I hope players enjoy all the new gameplay opportunities that realistic crowd flow and congestion play in the design of their parks.
 

Posted on Leave a comment

Get a job: Insomniac Games is hiring Engine Programmers

The Gamasutra Job Board is the most diverse, active and established board of its kind for the video game industry!

Here is just one of the many, many positions being advertised right now.

Location: Burbank, California

Insomniac Games is looking for Mid to Senior level Engine programmers for our Core Team. In this role, one would get to work with the team to design, add and modify features of both runtime and tools components of the engine. Other duties include designing, writing and modifying data and code with a heavy focus on real-time performance and usability. You would be expected to provide and help guide features which can be used in practice to create best-in-class contributions to our games. Read on if this is of interest!

Essential Duties and Responsibilities include the following:

  • Design and develop new engine technology for current and future games based on prioritized list of what other departments require
  • Contribute innovative and original ideas towards all aspects of game production and development
  • Collaborate with others on the team to design and build architectures for new systems, and maintain and improve those of current systems
  • Work proactively with Engine Director to identify technical and developmental risks and obstacles and helps generate solutions
  • Work independently to complete assigned projects with limited supervision
  • Implement new functionality in engine.
  • Design and implement efficient low-level systems to support higher-level programmers and pipelines
  • Rewrite existing systems as directed for increased functionality, reduced memory usage, and increased performance
  • Respond to bugs and feature requests related to engine code as directed
  • Keep current with the technological developments and advancements in the computer game industry
  • Revise program for corrections, enhancements, or system environment changes
  • Provide technical assistance by responding to inquiries regarding errors, problems, or questions with programs
  • Complete processor-specific optimization tasks
  • Develop familiarity with hardware details of specific game platforms, their capabilities and performance bottlenecks
  • Analyze code performance
  • Work with debugging software on specific game platforms
  • Document technology implementation details
  • Potentially advise and mentor other programmers, and provide technical leadership in areas of specialization and assist other engineers with technical questions (both inside and outside the Engine department)
  • Other duties may be assigned

This position is required to advise and mentor other programmers (both inside and outside the Engine department) within their specific areas of expertise if at a senior programmer level.

Education and/or Experience:

  • Master’s degree or equivalent; or seven plus years related experience and/or training; or equivalent combination of education and experience.
  • Advanced C, C++, and assembly/microcode programming (various CPU cores).
  • Additional languages such as HTML, JavaScript and Perl as needed.
  • Strong grasp of mathematical concepts, graphics, collision detection, data transformation, database management and advanced programming techniques.
  • Working knowledge of Microsoft Word and Powerpoint.
  • Ability to work with various content creation and analytical tools such as Microsoft PIX and RAD Telemetry.

If this sounds like the opportunity for you, please apply directly to the role. We are looking for both mid and senior level candidates and we look forward to hearing from you. Thanks.

Interested? Apply now.

Whether you’re just starting out, looking for something new, or just seeing what’s out there, the Gamasutra Job Board is the place where game developers move ahead in their careers.

Gamasutra’s Job Board is the most diverse, most active, and most established board of its kind in the video game industry, serving companies of all sizes, from indie to triple-A.

Looking for a new job? Get started here. Are you a recruiter looking for talent? Post jobs here.