the cutting room mirror

Development-Related Text

This is a sub-page of Hellboy Web of Wyrd.

MonoBehaviours#

Many of the game's MonoBehaviour strings contain notes from development, that are never seen in-game. MonoBehaviors themselves are basically just code for Unity games. The notes were added to them during development.

Sub-Pages#

UtilEditorNote#

These are MonoBehaviors whose sole purpose was to be notes during development. They all have the same name of "UtilEditorNote", but with varying notes.

UtilEditorNote

- Movement: ON\n- Running: ON\n- Attacking: OFF\n- Camera: ON

This parent object should recentre when updating scene to new Hub flow structure

The main Cinemachine Camera - BUT - has a 'fake' camera in this Game Object, the REAL one is called Real_Camera

The Effect Manager.\nThese are used Per Scene so that the created effects are not carried on throughout the project.

When enabled\n- Movement: ON\nWhen disabled\n- Movement: OFF

What does Switch look like in different biomes? Levers etc...

Have disabled obstacle because it carved into ALL navigation layers (we only want it to carve for the non floating one). \nUsing Modifier volume which allows us to specify the effected agents, but does NOT remove itself when destroyed.

The logic for dying to a boss is handled in the Logic_OnDeath FSM, but it requires the correct BossWin DialogueID to be in the Var_CurrentBossDialogueID StringVar SO to play correctly, so this is added here.

Placeholder gameobject with name \"Top\" to prevent the UATopSetActive playmaker action on the interactable throwing a null ref error

To stop player from interacting with hoists that may spawn in to level

Physical, world related stuff that exists between scenes (things we still want to see/use when loading between scenes

This is used to show the space where cameras are and should be kept clear so that the camera view is not blocked by geometry

Managers that we want to persist throughout the entire game\n\nTwo key differences:\n- Load on request (not auto load)\n- Asynchronous Audio Bank loading.

This is a class that can be asked to refresh the current act (gathered from the world data).

Managers that we want to persist throughout the entire game

A Trigger Volume that enables and disables World Rendering Data when entering and exiting.\nSet the World Rendering Data in each ON and OFF object.\nNote: It's good practice to have the Trigger Off Volume be bigger than the trigger on volume.

This parent object should recentre when updating scene to new Hub flow structure

On Enter:\n- Attack: ON\n\nOn Exit:\n- Attack: OFF

Remove FSM as there should be one exit only - Combo Run

Uses 2 Colliders to add and remove overrides.\nInside the Start Object, set the override name, priority and the target (or direction) transform you want to use.\nInside the End Object, set the SAME override name.\nIt's helpful to have the End Collider BIGGER than the Start

Final boss dialogue is handled in the finale encounter prefab

The logic for dying to a boss is handled in the Logic_OnDeath FSM, but it requires the correct BossWin DialogueID to be in the Var_CurrentBossDialogueID StringVar SO to play correctly, so this is added here

As both Contact and Contact End need to use the same collider, both exist on this object. However, because Raisers raise all AutoRaisables by default, the \"Advanced\" checkbox is ticked below. This allow AutoRaisables to be assigned as UnityEvents, so that the Contact event only does the things that should happen on contact, and Contact End event only does t he the things that should happen on contact end

Sets Bools on Level Load. Designed for masking action states (Hellboy's)\ne.g.\nVar_ActionStateValidAttacking\nVar_ActionStateValidDodgingAndRunning

Missing the enable disable?\nWe NEVER want to use the before combo run part so it's now REMOVED.\n\n- Ad

Uses 2 Raisables to add and remove overrides.\nInside the Start Object, set the override name, priority and the target (or direction) transform you want to use.\nInside the End Object, set the SAME override name.

It is important that the \"Boss\" transform starts off turned off or it will cause things to null ref

Have disabled obstacle because it carved into ALL navigation layers (we only want it to carve for the non floating one). \nUsing Modifier volume which allows us to specify the effected agents, but does NOT remove itself when destroyed.

Area to keep clear as the cameras of Hellboy and the Character could appear within this area

Managers that are fine to persist between scenes, but do not need critical main flow state.\nThes COULD be per scene, but it is more convenient to keep them here.

Defaults ON (by hub start resetting).\nAssumed that any level transition enables this.

This is a class that can be asked to refresh the current act (gathered from the world data).

More utility style stuff, perhaps things we may even want removed from the main game

The Layer of the PromptTrigger object is important. Do not change it.

Text Files#

Text files that were seemingly used for developers to explain, document, and communicate their processes.

ReadMe_DeferredRendering#

A "ReadMe" .txt file that provides an interesting insight into how the outlines for the game work. It goes over the materials and their RGBA channels, as well as how shader graphs are used.

The deferred rendering in this project has been HIJACKED.

UACustomGBuffer & UACustomLighting show how the new 'default' deferred lighting works.

Outline.hlsl shows how the outline code works.

//
//  Buffer Layout
//
Here is the Buffer Layout

                R               G               B                   A
_GBuffer0       Albedo R        Albedo G        Albedo B            Material Flags
_GBuffer1       Lighting Edge   OutlineIDA      OutlineIDB          UNUSED
_GBuffer2       Normal X        Normal Y        Normal Z            Smoothness (doubles as specular)

//
//  Shader Graphs
//
In shader graphs, use the following:

Specular Color R = Lighting Edge
Specular Color G = Outline ID
Specular Color B = 0

Smoothness = Specular amount & Smoothness combined

README_MaterialLayers#

Another .txt file that explains more about how outlines are rendered.

In order to acheive some of the weird effects in the URP (Deferred) we rely on material ordering.

Here is the convention (Higher values are rendered later).

1994 - Mask for VFX.

2000 - The world.

2004 - Mask for Window World. (Masks over the world).
2005 - Window World.

2009 - Fade to black world object (around main character).
2010 - Main character.