[email protected]
Level Design Portfolio
  • HIGHLIGHTS:
    • Camera
    • Collaborations
  • The Long Dark
  • World Design

Telling stories through captivating gameplay.

Warning, this is a construction zone!

Flip through the tabs above to view Open Worlds and other Level Design works I've been crafting since 2014.

Or click the red button
to review my professional work as a Game Design generalist.

Fast Travel to Game Design

Camera Experiment 2B: Flexibility in Camera Behaviour Trees

15/3/2017

3 Comments

 
In the first post related to flexibility in behaviour trees I argued that behaviour trees and state machines can accomplish similar things, and that there were certain benefits to using each implementation method. I recently watched a GDC 2017 talk by Bobby Anguelov that redefined my perspective on these issues.
Bobby Anguelov at GDC 2017
The picture is a limited access link to video of "AI Arborist: Proper Cultivation and Care for Your Behavior Trees" Bobby starts at 20 min.
Much of what I proposed in previous camera experiments models cyclic behaviour on cameras with behaviour trees, and I did not know why that should not be done until watching this talk. In fact, he suggests state machines are clearly better than behaviour trees at high level decision making. He provides examples where the acyclic data structure of behaviour trees complicate implementation and make it inefficient. However, Bobby does not think behaviour trees are all bad.

The main takeaway from his talk is to use behaviour trees only after high level decisions have already been made, where their ability for parallel execution of tasks can supplement the cyclic logic of state machines. The rest of this post describes how his approach would integrate with previous camera implementations I have discussed, and applies this new knowledge to guidance of future experiments with behaviour trees on cameras.

Read More
3 Comments

Camera Mock-up 01 - Super Maria 64

18/12/2016

6 Comments

 
Super Mario 64 (1998)
This is the reference for the Super Maria 64 camera - starting with the close up Mario Mode as described in "Game Feel" by Steve Swink
One 1998 Nintendo title made a permanent mark on cameras long before the third person action genre really took off - and it is not The Legend of Zelda: Ocarina of Time. While games like GTA III (2001) and Demon's Souls (2009) both have similar targeting systems to Ocarina of Time, these features were also present in GTA III's precursor Body Harvest (1998) so neither camera can claim as much influence.

I am talking, of course, about Super Mario 64, whose success allowed other influential third person games like Resident Evil 4 (2005) and Gears of War (2006) to create their own revolutions.

Remember that the N64 controller only had one control stick! The follow camera was a vast improvement from its contemporaries, which were often limited to static cameras as seen in Resident Evil (1996) and rail cameras like in Star Fox (1993).

The revolutionary feature in this game is a camera that slowly rotates behind the player to adjust to their movements - notably causing avatars
to run in circles when running towards the camera. If you have ever seen this in a game, chances are that camera is a "follow camera" that was inspired by Super Mario 64.

There are two camera modes in Super Mario 64: Mario Mode and Lakitu Mode. My project, Super Maria 64, will focus on implementation of Mario Mode. See reference of a player completing the game in Mario Mode here. Lakitu Mode is preferred by many players and aged better with time, but it is basically another layer of features on top of the features in Mario Mode... so we will avoid that complexity.


Goal: Go from a blank UE4 level to a prototype quality camera

This post documents the first step towards the goal of the Super Maria 64 project, and provides readers with a quick mock-up of the camera lag seen in our reference. I will show video of the final result taken with Sequencer, as well as the blueprints.

Read More
6 Comments

Real Time Cameras in Unreal Editor 4 - Part 13

3/10/2016

15 Comments

 
Reference: Mark Haigh-Hutchinson. 2009. "Real-Time Cameras: A Guide for Game Designers and Developers." Elsevier.
PictureScaling down the responsiveness in Editor Preferences.
This post is the conclusion to a series intended to share knowledge I found in the resource John Nesky called the "only textbook" in the field of cameras for game design. The final nuggets of wisdom discuss fundamental aspects of any camera. Conveniently, I am beginning to build a new third person camera based on learnings from the Camera Experiments series, and these fundamentals are an excellent place to start - especially as I have neglected sharing them. or even thinking about them. for so long!

For the purpose of keeping this discussion quick and to the point, I have chosen to focus on mouse control schemes only. This is a quick primer on how to start your own camera. Here are the final camera design guidelines from Haigh-Hutchinson's textbook, see the previous articles in this series for more of this wisdom.
  • "Limit the reorientation speed of the camera. Unless it is under direct player control, rapid or discontinuous reorientation of the camera is disorienting and confusing. Reorientation of the camera causes the entire rendered view of the world to be redrawn; since the direction in which the camera is facing (through the lens as it is often called) determines the part of the world to be drawn. By limiting the velocity of this reorientation, this effect can be minimized. In third person cameras, this may be at a cost of losing sight of the target object for a short period. Instantaneous reorientation is permissible when the cut is made in an obvious fashion such as in combination with a repositioning of the camera, but only when the new orientation is retained for a sufficient period to allow the player to understand the new situation. Retention of the player control reference frame... can assist in this regard. Still, instant reorientation should occur infrequently, and preferably not in quick succession. Reorientation to a new desired heading should usually prefer the shortest angular direction...
  • Retain control reference frames after rapid or instantaneous camera motion. With third person camera systems using a camera-relative control reference frame, instant or rapid camera motion will potentially disorient the player. This often results in unintended player character motion, possibly resulting in the demise of the player character. At best, this is merely frustrating; at worst it can induce a desire on the player to throw the controller across the room in annoyance. If the control change occurs at the threshold of a game area, it may in fact cause the player character to cross back into the previous area, possible forcing a load delay and yet another control reference change."


Read More
15 Comments

Camera Experiment 2A: Flexibility in Camera Behaviour Trees

12/6/2016

7 Comments

 
Picture
This example of a state machine for animations is copied from the Unreal Editor 4 documentation. Click the picture to open that website.
Animators who use Unreal Editor 4 are already familiar with state machines. Why can't those be used for cameras too? State machines' other benefits include:
  • The player avatar actions are most likely controlled by state machines as well, allowing straightforward communication between camera logic and avatar logic
  • The animation state machine systems are intended for seamless transitions unlike Behavior Tree which is intended for discrete and immediate AI changes
  • The implementation of state machines in Unreal Editor 4 has high usability, with many user interface features that provide relevant information at a glance
  • Unlike Behavior Tree's which either go to the Root or the next sibling in a Sequence, State Machines are capable of transitioning between any two states
Picture
A BlendTree-style state machine defining avatar movement (not animations) in Battlefield: Bad Company. Click to see original context.
When it comes to gameplay cameras, the quick answer to why to choose behaviour trees over state machines is flexibility. Flexibility, in turn, allows the underlying systems to be reusable across multiple projects - and therefore provides more sustainable development practices.

There are practical limitations to using the animation state machines for any camera system that allows real time control by the player. While it would be possible to rip apart the state machine graphical display elements and make their code work with camera behaviours, vanilla Unreal Editor 4 state machines are only compatible with skeletal meshes. This is a common limitation of state machine visual scripting modules because they are often streamlined for animation. As a result, we see similar limitations when using Unity's Mecanim: it is built for blending and transitions between animations that have exact definitions where cameras require adaptive behaviours to address their "fuzzy" constraints.

Let's put the implementation of state machine modules aside and look for proof that  behaviour trees bestow more flexibility for camera behaviours than any ideal state machines. The purpose of this experiment is to use nonfunctional examples to compare Unreal's implementation of Behavior Trees and State Machines for similar camera behaviours. The "Sense" and "Act" aspects of behaviours were not created.

Our starting point for this experiment is any project with Animation Starter Pack, which can be added to your project for free from Epic Games in the Marketplace.

Read More
7 Comments
<<Previous

    James Dodge

    Level Designer

    View my profile on LinkedIn

    Categories

    All
    CameraAnalysis
    CameraDevelopment
    GlobalGameJam
    Photoshop
    TombRaider


    Archives

    October 2021
    December 2017
    November 2017
    October 2017
    September 2017
    August 2017
    July 2017
    June 2017
    May 2017
    April 2017
    March 2017
    February 2017
    January 2017
    December 2016
    October 2016
    September 2016
    June 2016
    May 2016
    March 2016
    February 2016
    August 2015
    July 2015
    March 2015
    February 2015
    December 2014
    September 2014
    August 2014
    July 2014
    April 2014
    January 2014
    December 2013
    November 2013
    October 2013
    August 2013


    RSS Feed

Site powered by Weebly. Managed by Bluehost