Human Fall Flat Workshop Resources Updated

August 7, 2019

HFF WS Resources

Links to Useful Information

I am getting back into some HFF WS editing for my thesis project, so I gathered a lot of resources together on how to work with it, how the updates change things, and a few tutorials for putting some objects together. I compiled this list of resources while I downloaded the updates, added the new WS package to the Unity project, and updated all the prefab icons in editor to make everything nice and easy to use once I finally started putting a scene together to test things out.

Steam HFF WS Help

[NEW] Human Workshop: Features, Multiplayer Support and Backward Compatibility to 1.2 Alpha2

[NEW] Human Workshop: Example Workshop Levels, Templates and Prefab Testbeds

[NEW] Human Workshop: Editor Improvements and Node Graph System

[NEW] Human Workshop: Post-Launch Fixes, Updates and Additions – v1003292

HFF Tutorials

By: Gotcha McFee

Rope tutorial in Unity for Human Fall Flat

Moving Platform Tutorial in Unity for Human Fall Flat

Learning the Node Graphs of Human Fall Flat Work Shop

May 8, 2019

Human Fall Flat Workshop – Node Graphs

Learning the Basics

General Notes

– Can modify button actions real time and they will adjust (press, hold, toggle)
– For Connections:
&nbsp&nbsp&nbsp&nbsp- Syntax
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- [GameObjectName : ScriptName]
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- InputType : NameOfInput
&nbsp&nbsp&nbsp&nbsp- InputType is either Input or Output
&nbsp&nbsp&nbsp&nbsp- Clumped GameObjectName and ScriptName means that script is attached as a component to that gameObject
– NG = NodeGraph
– Node outputs of “value”
&nbsp&nbsp&nbsp&nbsp- generally means it’s measuring some amount of something (usually normalized 0 – 1)
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- i.e. SignalAngularVelocity has an output of “value”, which is a normalized measure of the amount of angular velocity the object currently has (currentVelocity / targetVelocity)

Nodes

– SignalUnityEvent
&nbsp&nbsp&nbsp&nbsp- Call for something to happen, generally in another gameObject
&nbsp&nbsp&nbsp&nbsp- Usually found at the end of Node Graphs
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- because they take other actions in as inputs to determine when to do an event
– SignalMathCompare
&nbsp&nbsp&nbsp&nbsp- Has 2 inputs: in1, in2
&nbsp&nbsp&nbsp&nbsp- Output is 1 if both inputs are equal (the same); Output 0 otherwise
&nbsp&nbsp&nbsp&nbsp- also has an invertedOutput which is just the opposite out Output
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- 1 when Output is 0
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- 0 when Output is 1

Node Graph

– The Node Graph script itself creates entire Node Graph “shell”
&nbsp&nbsp&nbsp&nbsp- This creates two nodes within itself:
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- Input Node: Only holds number of elements in the Inputs array Size
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- Output Node: Only holds number of elements in the Outputs array Size
&nbsp&nbsp&nbsp&nbsp- At the higher level, it has both the inputs and outputs on its single node
– Other scripts can creates nodes within the Node Graph, but they will generally create a single node
&nbsp&nbsp&nbsp&nbsp- This is different from the Node Graph script, which creates two nodes
&nbsp&nbsp&nbsp&nbsp- These nodes hold their inputs and outputs in the same node
&nbsp&nbsp&nbsp&nbsp- Examples:
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- Button
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- Net Signal
– “Up” in the Node Graph will move to the Node Graph of the parent gameObject of the current Node Graph’s gameObject
– A Node’s output generally goes to:
&nbsp&nbsp&nbsp&nbsp- another node script within the same gameObject
&nbsp&nbsp&nbsp&nbsp- node script within a gameObject that is a child of the current gameObject
– Changing Node Graph connections may not update in real time
&nbsp&nbsp&nbsp&nbsp- It visually appears to be updating, but does not seem to actually take in change
&nbsp&nbsp&nbsp&nbsp- Need to stop playing, edit node connections, then start play again

Building a Node Graph

– Start with an empty gameObject that just has a NodeGraph script
&nbsp&nbsp&nbsp&nbsp- NodeGraph can have 0 inputs and outputs
– Create children gameObjects that will hold main NodeGraphs for this overall object
&nbsp&nbsp&nbsp&nbsp- The NodeGraphs for these objects cannot have 0 inputs AND 0 outputs
&nbsp&nbsp&nbsp&nbsp- They must contaion AT LEAST 1 input or output
&nbsp&nbsp&nbsp&nbsp- Adding an input or output to them will make the node appear in the overall NodeGraph in the parent object
&nbsp&nbsp&nbsp&nbsp- The internal NodeGraph (the NodeGraph of this specific child gameObject) will have separate input and output nodes
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp- It will remove the corresponding node if you specify 0 inputs or 0 outputs

Human Fall Flat Workshop – Getting Started

April 18, 2019

Human Fall Flat Steam Workshop

Original Human Fall Flat Workhop Steam Group Page

Steam – Human Fall Flat Workshop

Setting Up Human Fall Flat Workshop in Unity

Steam – Human Workshop: Getting Started – Configuring Unity, Making your First Level, Publishing and Subscribing to Levels

This documentation gets you through the process of initially setting up Human Fall Flat Workshop to work in Unity. It starts with the proper version of Unity, which is 2017.4.13f1. You create a new 3D project and import the workshop Unity package that is part of the Human Fall Flat game files you get from Steam. Then, close out of Unity and copy over the “Project Settings” folder from the HFF game files into your Unity project, overwriting the existing “Projece Settings”.

That’s the gist of getting it all setup in Unity. The rest of the documentation gets into setting up your first level and getting a basic understanding of the core objects such as the Spawn Points and Pass Triggers.


Editor Improvements and Node Graph System

Steam – Human Workshop: Editor Improvements and Node Graph System

This write up talks about overall Editor improvements for the workshop, such as being able to teleport the player anywhere in the scene to help with testing and a lot about the signal event references and node graphs.

This documentation has a Node List with simple descriptions of what all the different nodes do in the node graphs, as well as a lot of helpful hints and functions for organizing and utilizing the node graphs. This covers topics such as color coding nodes, using nodes and their inspectors in general, and how to properly use the cheat nodes to efficiently debug/test. This is a very useful resource for getting started with the node graphs for HFFWS specifically.


HFFWS Discord

There is also a discord community for the HFFWS that can be a useful resource for getting help figuring out different aspects of this tool as well as getting player feedback for creations.

More Thesis Physics Game Concepts

February 14, 2019

Thesis Physics Game Concepts

Prototypes

Angular Speed and Momentum

So far this prototype has a simple concept where the angular speed is kept constant, but the player can move the center point to change the center of rotation as well as the radius of rotation. This altering of the radius lets the player influence the local velocity of the object significantly. They can also change the direction of rotation.

  • Left Mouse Click: moves center of rotation
  • Space: changes direction of rotation


Magnetic Force with Rail Gun

This is a very basic replication of how a rail gun works with currents creating magnetic forces through the Lorentz Force. The player can alter the amount of current in the rails, as well as the rail length to change the distance the projectile is fired.

  • Q, W: Raise, Lower current in rails
  • E, R: Increase, Reduce length of rails
  • Space: Fires projectile
  • P: Resets game


Coulomb’s Law

This concept emulates the basic Coulomb’s Law, producing forces between charged particles. Opposite charged particles will attract, while same charged particles will repel. The player can also add horizontal force to move the object.

A game concept using this foundation might be that a player moves along a certain axis automatically, but this “track” has charges on each side that the player can either increase/decrease to influence the position of their charged particle within the track (horizontally).

  • Left/Right(A/D): Add left/right force to object


Buoyancy

This system focuses on emulating buoyancy forces. The main player object has mass and weight, so it only floats when the buoyancy force is greater than the gravitational force (otherwise the object will still sink, as seen when it hits the top liquid, butane). This system also uses Unity’s drag so the velocity of the object does not get out of control.

The game concept for this is the most fleshed out. This would go with a physics puzzle game where there are separated containers that initialize as empty. Before the player traverses through the level, they can see the level and attempt to fill the various containers with different liquids to travel through the level. Having different liquids will change your speed in that section, as well as what direction you are going (floating/sinking), so the player must set the level up in a way they can successfully navigate through various obstacles.

  • Left/Right (A/D): Move object left/right

Thesis Game Concept – Buoyancy

February 6, 2019

Buoyancy Game Concept

Thesis Physics Game Concept

This concept focuses on creating a physics-based game with a lot of variable parameters using buoyancy to guide the main mechanics.

The first focus is just setting up a script that handles adding buoyancy force to an object. This script was named BuoyancyApplicator. It has a section of variables dedicated to determining the buoyancy force (all the variables in the basic buoyancy force equation), a section dedicated to different geometry dimensions (to determine volume for the previous equation), and then other Unity specific variables (such as RigidBody component). The standard buoyancy force equation used is:

(buoyancy force) = ((liquid density) * (acceleration due to gravity) * (volume of displaced liquid))

All of these are variables we can alter to provide a different experience, but for the simplest version in a given scenario, we can keep gravity constant, the volume displaced will be a constant (from the shape of the object) as it will be fully submerged the entire game, and liquid density just changes when the object goes from one liquid to another.

The game will involve the player controlling an object going through different liquids, so we needed a way to account for this transition. Since we just need to change it upon entering a new liquid, I placed the update for the liquid density variable in the OnTriggerEnter, and just have the “liquids” has trigger collider areas.

In an attempt to make it more physically accurate, I implemented Unity’s own rigidbody drag factor. Fluid drag is a fairly complex calculation, so in an attempt to just mimic it simply, I set the drag equal to liquid density times an arbitrarily defined drag coefficient that is manually assigned. I am not entirely sure how Unity’s rigid body drag works, but this approach seemed to give the desired result for the most part. It was especially helpful for cases where I had the object speed up a lot going through a very dense liquid, and then slowing down when entering a less dense liquid. All of this together even worked to have the object sink when it entered a very low density liquid.

Concept for System for Generative Approach for Physics Based Games

January 31, 2019

Thesis – Generative System for Physics Based Games Concept

Text Book Problem Generator

My current thought on a system for developing generative processes for these games is somewhat like making a framework for problems in a physics text book. With the new system I’ve setup for directly tying physics concepts to these physics games (those lists of physics topics), I think I can relate a game’s parameters (those systematic game mechanic values) to the variables of the foundational equations corresponding to that same game’s potential learning concepts. Again, using Angry Birds as an example, let’s say “Impulse and Momentum” is a potential learning concept. A basic equation for momentum is (momentum) = (mass) * (velocity). Using this information, we can see that varying any parameters equivalent to or pertaining to the variables in this equation will require the player to “solve” the new “problem” presented to them by similarly varying their responses to the system.

So for example (an example within an example), varying the bird’s mass parameter directly correlates to varying the mass in the momentum equation. If the player is still trying to meet a similar/certain momentum result, they basically have to “solve” this equation by determining the correct velocity.

I know this might seem a bit obvious, but I’m hoping it’s one of those situations where it just works out so nicely because it’s actually a good solution. This system also presents a fairly basic way of ensuring different in-game scenarios feel differently. You could keep track of the values for the “problems” presented to the player, and just check if a produced “problem” has values that are “too close” to these archived values. Back to the Angry Bird example, a game scenario presented to the player that they needed momentum in the range of (10 kg*m/s – 15 kg*m/s) with a bird of mass 5 kg (so solution range velocity is (2 m/s – 3 m/s)). The next produced scenario is a momentum range of (11 kg * m/s – 16 kg * m/s) with a bird of mass 5 kg (solution range velocity is (2.2 m/s – 3.2 m/s); maybe the system throws this out and generates a new scenario because it sees the momentum range, mass, and solution velocity are all very similar to something produced before.

The needed “distance away” from an archived problem could also be a weighted, combined distance of all the variables that could be tweaked depending on how you want to setup the system. This way, maybe you have another problem with a similar solution value (like the (2 m/s – 3m/s)), but the momentum and mass involved in the scenario are so different that it still feels like a different, interesting experience.

Thesis Terms: Game Mechanics and MDA

January 13, 2019

Defining Terms for Thesis Research

Focus on MDA Terms

Game – “Type of play activity, conducted in the context of a pretended reality, in which the participants try to achieve at least one arbitrary, nontrivial goal by acting in accordance with the rules” [4] p.1 Mechanics – describes the particular components of the game, at the level of data representation and algorithms [1] – various actions, behaviors, and control mechanisms afforded to the player within a game context [1] – the rules and procedures of the game [2] p. 40 – elements of the game; “rules of the game” [2] p. 138 – methods invoked by agents for interacting with the game world [3] p.1 – “the rules, processes, and data at the heart of a game” [4] p. 1 Dynamics – describes the run-time behavior of the mechanics acting on the player inputs and each others’ outputs over time [1] – “runtime behavior(s) of the game; when players interact with the rules, what happens?” [2] p. 138 Aesthetics – describes the desirable emotional responses evoked in the player, when she interacts with the game system [1] – emotional results generated from the game [2] p.138

References – [1] R. Hunicke, M. LeBlanc, and R. Zubek, “MDA: A Formal Approach to Game Design and Game Research,” p. 5. – [2] Z. Hiwiller, Players making decisions: game design essentials and the art of understanding your players. New York? New Riders/NRG, 2016. – [3] M. Sicart, “Defining Game Mechanics”, The International Journal of Computer Game Research, vol. 8, no. 2, pp. 15, December 2008. – [4] E. Adams and J. Dormans, Game mechanics: advanced game design. Berkeley, CA: New Riders, 2012.

Compiling List of Physical Phenomena for Game Analysis

January 10, 2019

Physical Properties to Observe in Games for Thesis

List of Physical Properties/Phenomena/Measures

I am compiling a list of physical factors that could be considered as the system or parameters to control/set for my thesis project. This will help me determine what factors I should be looking for in the games I am analyzing, as well as helping me develop a concept for the game to showcase the thesis design.

What are physical properties that could be coded as systems in games? Look for equations for general physical properties:

  • Force: Wikipedia – Force
    • F = dp/dt = d(mv)/dt
    • If mass remains constant (which it generally does in most normal physical instances), this can be changed to the more well known F = ma (because dv/dt = a) [1]
    • F = ma
    • Gravity
    • Magnetism
    • Thrust – increases velocity of object
    • Torque – produces changes in rotational speed
    • Mechanical Stress – distribution of forces through extended body where each part applies force to adjacent parts
      • Causes no acceleration of body because forces within body balance each other
      • i.e. Polybridge games
    • Friction
    • Equilibrium
    • Continuum Mechanics
      • Pressure – distribution of many small forces applied over an area of a body
      • Stress(?) – usually causes deformation of solid materials or flow in fluids
      • Drag – decreases velocity of objects
    • Elastic Force
      • Elasticity
      • Hooke’s Law = F = kx
    • Four fundamental Forces of Natures:
      • Gravitation
      • Electromagnetic
      • Strong Nuclear
      • Weak Nuclear

Energy: Wikipedia – Energy

  • “In physics, energy is the quantitative property that must be transferred to an object in order to perform work on, or to heat, the object”
  • Work = Force * Distance
  • W= ∫_C▒〖F∙ds〗(Equation from Word is a bit messed up)
    • Work is equal to the line integral of the force along a path C
  • Potential energy – stored by an object’s position in a force field
    • Potential gravitational energy
    • Electrical
    • Magnetic
  • Kinetic Energy – for moving objects
  • Elastic Energy
  • Chemical energy – caused by fuel burning
  • Radiant Energy – carried by light
  • Thermal energy – due to object’s temperature

Defining Game Mechanic

January 9, 2019

Resources for Defining Game Mechanics

Thesis Related

Citations
  • R. Hunicke, M. LeBlanc, and R. Zubek, “MDA: A Formal Approach to Game Design and Game Research,” p. 5.
  • E. Adams and J. Dormans, Game mechanics: advanced game design. Berkeley, CA: New Riders, 2012.
  • M. Sicart, “Defining Game Mechanics”, The International Journal of Computer Game Research, vol. 8, no. 2, pp. 15, December 2008.
  • Z. Hiwiller, Players making decisions: game design essentials and the art of understanding your players. New York? New Riders/NRG, 2016.

These are a few various resources that provide in depth descriptions of what makes a game mechanic. Defining this properly will be important for developing my game design methodology for my thesis.