Jump to content

Resources/DvScene: Difference between revisions

From HEModdingWiki
Ashrindy (talk | contribs)
Ashrindy (talk | contribs)
Line 1: Line 1:
'''DvScene''' ''(also known as DiEvent)'' is a file format that's been used in Hedgehog Engine 2 since [[Games/Sonic Frontiers|Sonic Frontiers]], it's a collection of nodes and resources that are easily editable so it's simple to modify or create new cutscene/cinematic.
'''DvScene''' ''(also known as DiEvent)'' is a file format that's been used in Hedgehog Engine 2 since [[Games/Sonic Frontiers|Sonic Frontiers]], it's a collection of nodes and resources that are easily editable for simple modification or creation of new cutscenes/cinematics.


The format and sub-system originates from the [[wikipedia:Yakuza_(franchise)|Yakuza game series]] in which they were known as '''DiEvent'''.
The format and sub-system originates from the [[wikipedia:Yakuza_(franchise)|Yakuza game series]] in which it was known as '''DiEvent'''.


There are no proper ways currently to edit .dvscene except for an [[Tools/010 Editor Binary Template|010 Editor Binary Template]].
There are no proper ways currently to edit '''.dvscene''' except for an [[Tools/010 Editor Binary Template|010 Editor Binary Template]].


== Basic information ==
== Basic information ==
Each DvScene consists of 2 parts, DvCommon and DvResource.
Each '''DvScene''' consists of 2 parts, '''DvCommon''' and '''DvResource'''.


=== DvCommon ===
=== DvCommon ===
DvCommon consists of:  
'''DvCommon''' consists of:  


* Frame start and end.
* '''Frame start and end'''.
* Number of visual nodes (not confirmed).
* '''Number of visual nodes''' (not confirmed).
* The timestamps of every camera cut in the cinematic.
* '''Cuts''', the timestamps of every camera cut in the cinematic.
* So called pages for skipping frames in the cutscene, based on a set condition. Used for QTEs.
* '''Pages''', for skipping frames in the cutscene, based on a set condition. Used for QTEs.
* Timestamps when the Resources should deload (all of the time it's a single item, obviously).
* '''Resource Cuts''', timestamps when the Resources should deload (all of the time it's a single item, obviously).
* The main Path DvNode.
* '''Node''', the main Path DvNode.


The main path DvNode is the base node of the entire dvscene. Path standing for its Node Category.
The main path DvNode is the base node of the entire dvscene. Path standing for its Node Category.
Line 22: Line 22:
'''Every DvNode contains:'''
'''Every DvNode contains:'''


* GUID, used to connect the node to resources or just to easily tell them apart. Every node has a unique GUID.
* '''GUID''', used to connect the node to resources or just to easily tell them apart. Every node has a unique GUID.
* Name, to easily organize the nodes.
* '''Name''', to easily organize the nodes.
* Node Category, changes the nodes type, each node type does something else.
* '''Node Category''', changes the nodes type, each node type does something else.
* Node Flags
* '''Node Flags'''
* Priority
* '''Priority'''
* Child Nodes, the child nodes of the node.
* '''Child Nodes''', the child nodes of the node.
* Node Data, the parameters and values that change based on the Node Category.
* '''Node Data''', the parameters and values that change based on the Node Category.


The node data is dependant on the Node Category, every category has its own set of parameters.
The node data is dependant on the Node Category, every category has its own set of parameters.
 
{| class="wikitable"
==== Node Categories in Sonic Frontiers ====
|+Node Categories in Sonic Frontiers
'''1. Path''' - contains a Matrix4x4 which is used to rotate, scale and move the Child Nodes
!Name
 
!Description
'''2. Camera''' - the node that creates the Camera Object in the cinematic. Usually empty, but it has support for a list of Frame Progressions, used to skip frames in the camera animation.
!In-Engine Name
 
!Basic structure
'''3. Camera Motion''' - usually the child node of the Camera to add in the animation of the camera, the GUID connects the node to a Resource to set the camera animation file. Contains the frame start and end of the camera animation.
|-
 
|Path
'''4. Character''' - node that creates the Character model object in the cinematic, the GUID connects the node to a Resource to set the Animation State Machine file. Contains the Model Name, Skeleton Name and sometimes a so called Internal Name is used; mostly used for characters that are very common, such as Sonic, Tails etc. These have a special shortcut for each, i.e. '''sh - Shadow, snc - Sonic, kn - Knuckles'''
|Transforms the child nodes of this node
 
|DvNodePath
'''5. Character Motion''' - usually the child node of the Character node to add in the animation of the Character model, the GUID connects the node to a Resource to set the animation file. Contains the frame start and end of the animation, Animation State Machine state name and animation speed.
|Contains a Matrix4x4 which is then used to do transforms.
 
|-
'''6. Model''' - the same as '''Character'''
|Camera
 
|Creates a Camera Object in to the cinematic
'''7. Model Motion''' - the exact same as '''Character Motion'''
|DvNodeCamera
 
|Usually empty, but it has support for a list of Frame Progressions, used to skip frames in the camera animation.
'''8. Model Node''' - used to parent nodes to a bone on a Model with an armature. Contains the bones name.
|-
 
|Camera Motion
'''9. Element''' - a subcategory for nodes, it's contains mostly game specific elements for different aspects of said game. Contains the Element ID, frame start and end, play type of the element and update timing of the element.
|Adds animation to the parent node Camera
 
|DvNodeCameraMotion
|Contains the frame start and end of the camera animation. The GUID connects the node to a Resource to set the [[Resources/Camera Animation|Camera Animation]] file.  
|-
|Character
|Creates a Character Model Object in to the cinematic
|DvNodeCharacter
|Contains the Model Name, Skeleton Name and sometimes a so called Internal Name is used; mostly used for characters that are very common, such as Sonic, Tails etc. These have a special shortcut for each, i.e. '''sh - Shadow, snc - Sonic, kn - Knuckles'''. The GUID connects the node to a Resource to set the [[Resources/Animation State Machine|Animation State Machine]] file.  
|-
|Character Motion
|Adds animation to the parent node Character
|DvNodeCharacterMotion
|Contains the frame start and end of the animation, [[Resources/Animation State Machine|Animation State Machine]] state name and animation speed. The GUID connects the node to a Resource to set the animation file.
|-
|Model
|Adds a Model Object in to the cinematic
|DvNodeModel
|The exact same as Character.
|-
|Model Motion
|Adds animation to the parent node Model
|DvNodeModelMotion
|The exact same as Character Motion
|-
|Model Node
|Creates a node to which other nodes can be attached as if it was the bone of the parent Character node
|DvNodeModelNode
|Contains the bones name.
|-
|Element
|Subcategory for nodes, contains mostly game specific elements such as DvElementTheEndCableObject from
[[Games/Sonic Frontiers|Sonic Frontiers]]
|DvElement
|Contains the Element ID, frame start and end, play type of the element and update timing of the element.
There's only 3 Element Play Types and they're very straight forward, Normal - plays the element normally; OneShot - plays only once; Always - plays always.
There's only 3 Element Play Types and they're very straight forward, Normal - plays the element normally; OneShot - plays only once; Always - plays always.


Update timing is a value that consists of multiple different types to change the update timings of the element, alot of these have yet to be found purposes.
Update timing is a value that consists of multiple different types to change the update timings of the element, alot of these have yet to be found purposes.
|}


=== DvResource ===
=== DvResource ===
DvResource is an array of the resources that should be loaded for a DvScene. These are connected with GUIDs to several DvNode types.
'''DvResource''' is an array of resources that are loaded for a '''DvScene'''. These are connected with '''GUIDs''' to several '''DvNode types'''.
 
They only consist of a name, GUID and file type.
 
==== File Types in Sonic Frontiers ====
'''1. Character [[Resources/Animation State Machine|(.asm)]]''', used with DvNodeCharacter
 
'''2. Camera Motion [[Resources/Camera Animation|(.cam-anim)]]''', used with DvNodeCameraMotion
 
'''3. Character Motion [[Resources/PXD Animation|(.anm.pxd)]]''', used with DvNodeCharacterMotion


'''4. Model [[Resources/Animation State Machine|(.asm)]]''', used with DvNodeModel
They only consist of a '''filename''', '''GUID''' and '''file type'''.
{| class="wikitable"
|+Resource Types in Sonic Frontiers
!Name
!File extension
!Used by Node
|-
|Character
|'''[[Resources/Animation State Machine|(.asm)]]'''
|Character
|-
|Camera Motion
|'''[[Resources/Camera Animation|(.cam-anim)]]'''
|Camera Motion
|-
|Character Motion
|'''[[Resources/PXD Animation|(.anm.pxd)]]'''
|Character Motion
|-
|Model
|'''[[Resources/Animation State Machine|(.asm)]]'''
|Model
|}




TODO: (c-style structs, technical notes)
TODO: (c-style structs, technical notes)

Revision as of 16:47, 6 January 2025

DvScene (also known as DiEvent) is a file format that's been used in Hedgehog Engine 2 since Sonic Frontiers, it's a collection of nodes and resources that are easily editable for simple modification or creation of new cutscenes/cinematics.

The format and sub-system originates from the Yakuza game series in which it was known as DiEvent.

There are no proper ways currently to edit .dvscene except for an 010 Editor Binary Template.

Basic information

Each DvScene consists of 2 parts, DvCommon and DvResource.

DvCommon

DvCommon consists of:

  • Frame start and end.
  • Number of visual nodes (not confirmed).
  • Cuts, the timestamps of every camera cut in the cinematic.
  • Pages, for skipping frames in the cutscene, based on a set condition. Used for QTEs.
  • Resource Cuts, timestamps when the Resources should deload (all of the time it's a single item, obviously).
  • Node, the main Path DvNode.

The main path DvNode is the base node of the entire dvscene. Path standing for its Node Category.

Every DvNode contains:

  • GUID, used to connect the node to resources or just to easily tell them apart. Every node has a unique GUID.
  • Name, to easily organize the nodes.
  • Node Category, changes the nodes type, each node type does something else.
  • Node Flags
  • Priority
  • Child Nodes, the child nodes of the node.
  • Node Data, the parameters and values that change based on the Node Category.

The node data is dependant on the Node Category, every category has its own set of parameters.

Node Categories in Sonic Frontiers
Name Description In-Engine Name Basic structure
Path Transforms the child nodes of this node DvNodePath Contains a Matrix4x4 which is then used to do transforms.
Camera Creates a Camera Object in to the cinematic DvNodeCamera Usually empty, but it has support for a list of Frame Progressions, used to skip frames in the camera animation.
Camera Motion Adds animation to the parent node Camera DvNodeCameraMotion Contains the frame start and end of the camera animation. The GUID connects the node to a Resource to set the Camera Animation file.
Character Creates a Character Model Object in to the cinematic DvNodeCharacter Contains the Model Name, Skeleton Name and sometimes a so called Internal Name is used; mostly used for characters that are very common, such as Sonic, Tails etc. These have a special shortcut for each, i.e. sh - Shadow, snc - Sonic, kn - Knuckles. The GUID connects the node to a Resource to set the Animation State Machine file.
Character Motion Adds animation to the parent node Character DvNodeCharacterMotion Contains the frame start and end of the animation, Animation State Machine state name and animation speed. The GUID connects the node to a Resource to set the animation file.
Model Adds a Model Object in to the cinematic DvNodeModel The exact same as Character.
Model Motion Adds animation to the parent node Model DvNodeModelMotion The exact same as Character Motion
Model Node Creates a node to which other nodes can be attached as if it was the bone of the parent Character node DvNodeModelNode Contains the bones name.
Element Subcategory for nodes, contains mostly game specific elements such as DvElementTheEndCableObject from

Sonic Frontiers

DvElement Contains the Element ID, frame start and end, play type of the element and update timing of the element.

There's only 3 Element Play Types and they're very straight forward, Normal - plays the element normally; OneShot - plays only once; Always - plays always.

Update timing is a value that consists of multiple different types to change the update timings of the element, alot of these have yet to be found purposes.

DvResource

DvResource is an array of resources that are loaded for a DvScene. These are connected with GUIDs to several DvNode types.

They only consist of a filename, GUID and file type.

Resource Types in Sonic Frontiers
Name File extension Used by Node
Character (.asm) Character
Camera Motion (.cam-anim) Camera Motion
Character Motion (.anm.pxd) Character Motion
Model (.asm) Model


TODO: (c-style structs, technical notes)