2014 GDC Talk – 50 Game Camera Mistakes

April 6, 2021

GDC 2014 Talk

Camera Controller


Title:
GDC 2014 Talk – 50 Game Camera Mistakes


Youtube – Link

Description:
A talk on common issues with camera controllers game developers make and how to avoid them.


Overview

As I was fixing some issues I had with my Unity camera for my architecture project, I came across this talk and thought it would be useful moving forward to understand camera controllers in games in general. It’s a bit older, but it should still be very useful for getting some tips for establishing a base understanding of some issues you may run into starting a camera controller.

via Blogger http://stevelilleyschool.blogspot.com/2021/04/2014-gdc-talk-50-game-camera-mistakes.html

GDC 2020 Talk – Cursed Problems in Game Design

February 6, 2020

Cursed Problems in Game Design

GDC 2020 Talk

GDC 2020: Cursed Problems in Game Design

Video – Link

By: GDC – Alex Jaffe (Riot Games)


Notes

Cursed Problem: an unsolvable design problem, rooted in a conflict between core player promises

Politics: competition through social negotiation, alliances, and manipulation

The main skill here is identifying cursed problems so you know to avoid them or navigate them so you do not waste time on “solving” them.

Examples from Talk: Hard or Cursed?

No Man’s Sky: Exploration game with millions of worlds
Hard: This was evidenced by the game becoming successful after significant time updating the game, but it easy to see this was just a hard problem and not an impossible one.

Diablo: Loot games with efficient trading
Cursed: Many loot experiences are just incompatible with efficient marketplace trading systems because the loot experience relies on the random drops themselves feeling unique or special to the player, but having a market to deal this loot for other loot just makes every type of loot “gold”, or currency, and the specialness of all drops is significantly hampered.
Commodified Reward Problem supports this idea.

Pokemon GO: always-on location-based games
Cursed: These games look to provide an augmented reality layer to real life for rewards, but the counteracting topic is just the general need for personal safety and convenience. The main core of it being cursed is that one is “play anywhere/any time” and the other to make them safe is to “only play when appropriate”.

4 Core Solution Techniques for Cursed Problems

The 4 techniques are: Barriers, Gates, Carrots, S’mores

Barriers

Cut affordances that break promises

This technique focuses on just preventing the player from performing actions that would break the design promise.

Exapmle: Free-For-All Politics (Fortnite, or any large battle royale game)
Approach: Limit player’s agency over one another
Sacrifce: Some of the PvP fantasy of control
The game is so large scale with so many players, high amount of missing information, and high lethality so the political game is not very feasible to develop. It is hard to create an alliance or single out a specific targeted player with all of these variables. This however removes the feeling of “I have outplayed you specifically” or the personal level of domination since the game is so large scale.

Gates

Hide bad states behind challenge

This technique aims to make it harder to find bad ways to play the game so that players will hopefully focus on the good ways intended.

Example: Free-For-All Politics (Playstation All Stars: Battle Royale (4 Player Brawler))
Approach: Limit visibility of players’ success
Sacrifce: Some of the tension of buzzer beaters
They hid the score of each player, and made the scoring system a bit convoluted (2 * kills – deaths) so it was harder to reason out in the middle of the high paced game. This was done to encourage every player playing their best with less fear of being targeted for being in the lead and reduce politics factors. Not being sure of the score however can reduce high tension moments near the end of the game sine no one is really sure who is in the lead and you do not even know who won until they game tells you.

Carrots

Incentivize avoiding the bad states

Provide incentives for players that do not go into the bad game states.

Example: Free-For-All Politics (Catan tournament)
Approach: Add meta-game effects
Sacrifice: Magic circle of an individual game
In a Catan tournament, players play many games and their standings are used to add to their total score for placement. This makes getting first less of a “be all, end all” scenario and incentivizes each player to just do as well as they can. They suggest this ends up reducing overall politics in the game since players are continually incentivized to do their individual best. The con however is that it just makes each individual game feel less special or “magical” to play.

S’mores

Make it fun

This technique leans into the bad states of the game and just make them fun to play as well.

Example: Free-For-All Politics (Diplomacy)
Approach: Give players tools for deep political play (e.g. secrecy)
Sacrifce: Emphasis on moment-to-moment action
The game of Diplomacy goes hard into the politics with secrets and deception along with the gameplay, which can make the political aspects more fun and interesting. This however generally makes the game itself feel like it is taking a backseat (in this case your plays with your units) and leaving players mostly focusing on the relationships they make or break along the way.

Summary

Do not think of these as solutions, but as a small design framework. These techniques were identified to help you approach difficult problems you find in the design process for making a game to help you navigate them more efficiently. It can also just be beneficial to understand some problems are not “solvable” and you will have to make sacrifices to accomplish some goals or mitigate some negative aspects.

Challenges

These were some challenges given as examples of problems so cursed that they really have not been approached very much.

These are the challenges:

  • Balanced player-generated content in multiplayer games
  • PvP games in which all players feel there was a just outcome
  • Mystery and discovery in the age of the internet

The last challenge really resonated with me as something I have investigated, specifically through the concept of procedural content generation.

As an avid Pokemon player I would always go into the new games knowing every new pokemon from information released before hand, whether it was from strategy guides back in the Johto days to the games in the Alola region. I however stumbled upon player made rom games and played them mostly blind and enjoyed them much more. The sense of discovery and figuring things out was so much more interesting and refreshing.

I then got into Pokemon randomizers where you can randomize as much or as little as you want, and that game fresh new life to old games I had played. This gave me the idea for using procedural generation, something akin to the rogue likes of today, but in a more exploratory or experimental way. I think you could look into procedural generation of the rules of the game as opposed to just specific content, and the player could have consistent ways to discover these rules playing the game each time. This way the player’s skill of discovery is really what is emphasized and rewarded as they get better, and they use this core skill to get better at whatever world they are put into.

GDC 2019 Talks – Into the Breach and Dead Cells

April 11, 2019

2019 GDC Vault

Talks

GDC 2019 – Into the Breach’ Design Postmortem

By: Matthew Davis
From: Subset Games

GDC 2019 – ‘Dead Cells’: What the F*n!?

By: Sebastien Benard
From: Motion Twin

Into the Breach Design Postmortem

Constraint Focused Design: This basically has them set constraints as early in the game design process as possible that help direct and restrict future design choices. This can be something like a genre, or a game mechanic like health.

Gameplay focused design: They approach making games by starting the the main gameplay they want to create, and then building everything else to fit around that. Everything such as narrative or theme ends up following the gameplay.

They used a very board game inspired design for “Into the Breach”. They like to keep numbers small, easy to understand, and meaningful. The difference from 1 to 2 should be impactful. This also leads into how they designed enemies. There is a “chess-like” feel to enemies, and the overall gameplay in general, in that the player should have a good understanding of how a piece operates and its zone of danger it creates and be able to play around that.

Randomness was something to be kept to a minimum. This went very well with the idea of having the enemies forecast their attacks. Again, this also ties in with making as much information available to the player as possible. Even though they wanted to reduce randomness to a minimum, they still implemented it when they deemed it a much better option.

As most game designers do, they wanted a strong focus on interesting decisions. This led to keeping out a lot of complex systems that were too difficult to use for what they really brought to the game. This was also done a bit differently on their team since they only have two people, so they could iterate quickly and often and scrap ideas and designs much more easily.

‘Dead Cells’: What the F*n!?

They really wanted to focus on “permadeath” as a game mechanic. Focusing on this led them to some core mecahnics to “make death fun”. The core of this was death being a way to progress in the game. It gave you a way to improve your character’s abilities, as well as access previous areas again (since the game does not allow back tracking).

They wanted to focus the design on combat, NOT platforming. Even though it is still a 2D platformer, they really wanted the player to use their skills for fighting and limit or even remove punishments for platforming. To achieve this, they used many small mechanics such as allowing players to jump a few frames after leaving a platform, teleporting the player onto a platform if they missed a jump by a few pixels, and implementing an edge grabbing mechanic.

This player helping system in platforming got carried over into over mechanics as well, such as helping aim attacks. If the player is facing the wrong direction when going for an attack, the game can actually assist them and switch them around the other direction. I initially was very against this concept, but I appreciated their take on it and was much more accepting after their explanations. This helped reduce the mechanical demands for the game, rewarding the player much more for strategic combat gameplay. Then in this way, this actually allowed them to make the game more difficult in some respects since the player wouldn’t be punished for these less important game aspects.

Just a small note, since they use a lot of community feedback to update their game, they will leave comments in the patch notes stating who inspired the change. This is just a good way to let the community know how impactful they are and make them more willing to help in the future.

2019 GDC Vault Opening

April 9, 2019

2019 GDC Vault

Talks

GDC 2019 – Into the Breach’ Design Postmortem

By: Matthew Davis
From: Subset Games

GDC 2019 – Cursed Problems in Game Design

By: Alex Jaffe
From: Riot Games

GDC 2019 – How to Teach 5 Semesters of Game Design in 1 Class

By: Jason Wiser
From: Yaya Play Games, Tufts and Harvard University

GDC 2019 – Creating Customized Game Events with Machine Learning (Presented by Amazon)

By: Africa Perianez
From: Yokozuna Data

The 2019 GDC vault has finally opened! I just wanted to take a quick peak and see if I could find any interesting talks to watch in the near future. I really loved playing Into the Breach, so I’m excited to check out their Postmortem. Riot Games always has interesting talks with League of Legends size and popularity. The other two just seemed like interesting sounding titles that I’d like to hear more about.

Physics for Game Programmers: Understanding Constraints

January 5, 2019

Physics for Game Programmers: Understanding Constraints

Constraints in Game Physics

Youtube – GDC – Physics for Game Programmers: Understanding Constraints

By: Erin Catto

EDIT: Updated to correct “resolute” constraint to “revolute” (Jan 5, 2019)

Erin goes over the importance of physics constraints in physics game programming and how to implement them to add diversity and creativity when designing physics for games.

Erin explains that physics constraints are to physics programmers as shaders are to graphics programming. You can use the already existing recipes that will get the job done, but designing your own will allow you more flexibility and creativity.

Shaders – lighting, shadows; Physics constraints – revolute, prismatic

Position constraint: in example, it is a particle that is restricted to a surface. Appears the equation should be 0 if particle is on surface, than < 0 or > 0 depending on what side of the surface it is on if it moves away from surface.

Contact constraint: the contact points on the contacting bodies do not move relative to each other along the contact normal

Global solvers vs Local solvers: Global solvers would solve everything somewhat simultaneously by having everything in a single large matrix equation setup. Local solvers are used to do computations linearly and solve one thing at a time.

Physics solver will need to iterate multiple times to solve impulses, but cannot run enough times to get everything completely accurate which leads to some overlap.

Iterations allow for convergence of the system’s solution and the actual determined solution. The iterations and time for this convergence to occur vary based on the complexity of the physical system. In the examples, circle stacks with assigned mass values were used. It turns out heavier masses on top of smaller masses leads to much slower convergence, and it gets slower as the mass ratio increases. This occurs because the solver needs to bring the top circle to rest, but each iteration it does on the contact occurring between the two circles only removes a small amount of the large circle’s velocity because it does it relative to the size of the lower circle.

Warm Starting – since a lot of things in games aren’t moving all the time, you can “save” impulses to try initially later so that it will have a saved solution if it hasn’t moved and if it starts moving, it may be closer to the next solution already This does not do well with quick load changes.

Inequality constraints – only want impulses to be able to push, not pull (lamba > 0); For accumulated impulses, you actually don’t want each incremental impulse to be restricted by > 0, you just want to apply that to entire accumulated impulse. Sometimes you need negative incremental impulses to solve cases of overshooting. This is when impulse applied at a step is actually too great and you need to bring it back down.

Global solvers are great but too expensive.

Don’t use acceleration constraints because it leads to cases where you need an infinite force to truly stop an object instantaneously, which is theoretically what should occur in rigid body collision.

Link to Erin Catto’s box2d.org

References from the talk:
  • David Baraff: Coping with Friction for Non-penetrating Rigid Body Simulation
  • Metthias Muller: Position Based Dynamics

GDC Talks – GDC 2018 – Math for Programmers by Squirrel Eiserloh

September 26th, 2018

Math for Programmers: 6 Courses on Procedural Content Generation for Games – GDC 2018

by: Squirrel Eiserloh

There are 6 talks about techniques and implementations of procedural content generation in games. The order is as follows:

  1. The Power of Procedural Recipes – Procedural Recipes
  2. Semi-Procedural Content Pipelines – Semi-Procedural Methods
  3. Staged Parametric Map Generation – Staged Parametric Generation
  4. Digging with Perlin Worms – Perlin Worms (for rivers/roads/caves)
  5. Discrete Constructs in Endless Worlds – Infinite Worlds
  6. Juicing World Generation with Metadata Feedback – Juicing PCG with Metadata

Procedural Generation – Far Cry 5 GDC Content Generation

July 30th, 2018

Procedural Generation – GDC 2018 Talk – Procedural World Generation of ‘Far Cry 5’

By: Etienne Carrier

GDC 2018 – Procedural World Generation of ‘Far Cry 5’ – GDC Vault Link

GDC talk where Etienne details a large scale tool they created using procedural generation techniques to help build the world of Far Cry 5. It covers both the user end (world editors/designers) and the behind the scenes processes that make everything possible. They use Dunia and Houdini together to create these tools.

May 19th, 2018

Math for Game Programmers – Talks from GDC – Notes

GDC 2015 – Math for Game Programmers: Fast and Funky 1D Nonlinear Transformations

Presenter: Squirrel Eiserloh

Youtube link to presentation

Notes:

  • Other names used for these concepts in other fields:
    • Easing functions
    • Filter functions
    • Lerping functions
    • Tweening functions
  • Implicit vs. Parametric Equations
    • Implicit: Ex. x^2 + y^2 = R^2
    • Parametric: Ex. Px = R * cos(2*pi*t); Py = R * sin(2*pi*t)
  • Parametric Equations use a single variable (usually a float) as input
  • Opportunities to Use Parametric Transformations
    • Anywhere you have a single float to change
    • Anywhere that could be expressed as a single float
    • Anytime you use time
  • The two most important number ranges in mathematics and computer science are:
    • 0 to 1: Good for fractions and percentages
    • -1 to 1: Good for deviations from some original value
  • These functions are normalized
    • Input of 0 has output of 0, and input of 1 has output of 1
    • The in-between values are those that vary function to function
  • Types of functions
    • Smooth Start: exponential functions with various orders
    • Ex: t^2
    • Smooth Stop: gives opposite feel of smooth start
    • Ex: 1 – (1-t)^2
    • Mix functions
    • Crossfade: mix but “blend weight” is the t parameter itself
    • Scale: multiply something by t; can also multiply functions together
    • Bezier Curves
Other suggested talks:

Juice it or Lose it – by: Martin Jonasson and Petri Purho
The art of screen shake – by: jan willem Nijman vlambeer

Math for Game Programmers – Talks from GDC – Notes

GDC 2013 – Math for Game Programmers: Interaction With 3D Geometry

Presenter: Stan Melax

Youtube link to presentation

Notes:

  • Basic Vector Math
    • Dot product
    • Cross product
    • Outer product
    • Jacobian
    • Determinants
  • Geometry Building Blocks
    • Traingles and planes
    • In games, triangles and planes need to know above and below
    • Triangles use normals
    • Planes use Ax + By + Cz + D == 0
  • Ray-Triangle Intersections
  • Ray-Mesh Intersection
    • Could check against all triangles, but there are ways to remove some for efficiency
    • Need to check if you’ve hit the nearest triangle
    • Mesh must be intact, can have issues if there are holes
  • Convex Mesh
    • Neighboring face normals tilt away
    • Volume bounded by number of planes
    • Every vertex lies at/below every other face
    • Convex used because it makes a lot of tests/calculations simpler
    • If point lies under every plane, it is inside
    • Can move rays as they intersect triangles
  • Convex Hulls
    • Techniques for converting meshes into convex meshes
    • There are two main techniques:
    • Expand Outward – start with small mesh and expand out until all vertices are accounted for
    • Reduce Inward – start with a large mesh and shrink it down to fit all vertices
  • Convex Decomposition: breaking down complex shapes into separate convex meshes
  • Objects in Motion – Spatial Properties
    • Find the center of triangles, then the center of tetrahedrons
    • Find the area of triangles and the volumes of tetrahedrons
    • These properties can be used for basic accurate physics simulations of objects
  • Time Integration without Numerical Drift
    • Forward Euler update versus Runge Kutta update
    • Forward Euler applies derivative at every step, which can give inaccurate results in too large of time steps
    • Runge Kutta looks at multiple time steps and their derivatives and takes a weighted average to make steps more consistent
  • Soft Body Meshes
    • Connect points/vertices of mesh with spring-like connections
    • Two main techniques:
    • Kinematic: can have issues with stressed state oscillating as it will not come to rest, forces continue to act
    • Dynamic: has better resting stressed states that will settle down
  • How to learn more
    • Practice tinkering with your own physics engine code
    • Write gjk algorithm
    • Help understand physics engines and their limitations
May 7th, 2018

AI Wish List from GDC

AI Wish List: What Do Designers Want out of AI? – GDC Vault

GDC Talk with Raph Koster, Dave Mark, Richard Lemarchand, Laralyn McWilliams, Noah Falstein, and Robin Hunicke. They go over what directions they would like AI to move in in the future to further good game development.

Some Topics Discussed:
  • Content Creation: Don’t focus on procedurally generating a tree, or a forest of trees. Generate interestingly varied trees that have other interactive elements within/about them to create a much more detail-rich environment that could not be created by human hands in any practical way. Create a world, with a forest, with a pond, with tadpoles that you can interact with.
  • Feelings to Invoke: Feeling Proud for something. Have the player feel proud that they were able to guide something else to perform an action on its own.
  • Create systems of interactivity that decentralize the player. Make the player understand that their actions are upsetting a balance. Make the player see that their actions affect other lives, even NPC lives.
    Example: A player arrives at a procedurally generated world with procedurally generated pink moles that have built up an entire ecosystem and have a history. These moles will then react to the player arriving and their actions/decisions, but also carry on with their own lives, which they would have done regardless of whether a player ever arrived or not.