ROKOJORI ACTION LIBRARY v0.1
The Rokojori Action Library is a framework for creating games in Godot.
It focuses on fast, maintainable and efficient workflows for game creators.
One unique aspect of the library is its use of so called actions, which allow to
predefine and reuse functions for interactions, animations, audio and logic.
For Game Creators
The library comes with a lot of out-of-the-box no-coding-needed working nodes, solving typical problems
for games. From input managing, cameras, timelines, procedural graphics, animations, ui, audio, localization to multiplayer.
Quickly iterate ideas and get working functionality done early.
Click on a node to read more.
Node (Pointable): POINTING
Selector: Selector (allows to filter nodes: e.g. isEnemy, isPlayer, isItem )
MultiRayCaster: MultiRayCaster (cast all hits of a ray and filter them)
Pointer: Pointer (point at pointable nodes)
Pointable: Pointable (can be pointed at by pointers)
Node (Interactable): INTERACTION
Interactor: Interactor (interacts with pointed things)
Interactable: Interactable (can be interacted by interactors)
Grabber: Grabber (grabs grabbable things)
Grabbable: Grabbable (can be grabbed by grabbers)
Node (SensorGroup): INPUTS
SensorManager: SensorManager (handles multiple inputs, devices and their look unified)
Sensor: Sensor (key, mouse, controller, combined, virtual or custom input)
SensorGroup: SensorGroup (collection of sensors/inputs)
TriggerOnSensor: TriggerOnSensor (executes an action by triggering a sensor)
Node (UI): UI
UI: UI (manages layouting, dynamic font size etc)
UIRegion: UIRegion (flow layouter with margins, content size and line breaking)
UIImage: UIImage (for animatable textures, shader materials, nine-patches etc)
UIInputInfo: UIInputInfo (for automatic input/sensor icons and labels)
Node (LocalizedString): LOCALIZATION
LocaleManager: LocaleManager (manages locales at runtime, changes language)
LocalizedString: LocalizedString (extendable string class for any localization type )
LocaleText: LocaleText (extends LocalizedString for fixed text)
LocaleLabel3D: LocaleLabel3D (localized labels for 3D representation)
UIText: UIText (localized, flowable, animatable control text)
Node (Flash): EFFECTS
Highlight: Highlight (for pointed objects)
Flash: Flash (lighten objects up, make objects blink)
Shake: Shake (move objects slighlty to show impact)
Node (VirtualCamera3DManager): CAMERA
VirtualCamera3DManager:VirtualCamera3DManager (mix and manage multiple cameras)
ThirdPersonCamera: ThirdPersonCamera (follows/orbits around player)
CameraEffect: CameraEffect (screenshake, zooms, rotations)
For Game Creators
The library comes with a lot of out-of-the-box no-coding-needed working nodes, solving typical problems
for games. From input managing, cameras, timelines, procedural graphics, animations, ui, audio, localization to multiplayer.
Quickly iterate ideas and get working functionality done early.
Click on a node to read more.
Node (Pointable): POINTING
Selector: Selector (allows to filter nodes: e.g. isEnemy, isPlayer, isItem )
MultiRayCaster: MultiRayCaster (cast all hits of a ray and filter them)
Pointer: Pointer (point at pointable nodes)
Pointable: Pointable (can be pointed at by pointers)
Node (Interactable): INTERACTION
Interactor: Interactor (interacts with pointed things)
Interactable: Interactable (can be interacted by interactors)
Grabber: Grabber (grabs grabbable things)
Grabbable: Grabbable (can be grabbed by grabbers)
Node (SensorGroup): INPUTS
SensorManager: SensorManager (handles multiple inputs, devices and their look unified)
Sensor: Sensor (key, mouse, controller, combined, virtual or custom input)
SensorGroup: SensorGroup (collection of sensors/inputs)
TriggerOnSensor: TriggerOnSensor (executes an action by triggering a sensor)
Node (UI): UI
UI: UI (manages layouting, dynamic font size etc)
UIRegion: UIRegion (flow layouter with margins, content size and line breaking)
UIImage: UIImage (for animatable textures, shader materials, nine-patches etc)
UIInputInfo: UIInputInfo (for automatic input/sensor icons and labels)
Node (LocalizedString): LOCALIZATION
LocaleManager: LocaleManager (manages locales at runtime, changes language)
LocalizedString: LocalizedString (extendable string class for any localization type )
LocaleText: LocaleText (extends LocalizedString for fixed text)
LocaleLabel3D: LocaleLabel3D (localized labels for 3D representation)
UIText: UIText (localized, flowable, animatable control text)
Node (Flash): EFFECTS
Highlight: Highlight (for pointed objects)
Flash: Flash (lighten objects up, make objects blink)
Shake: Shake (move objects slighlty to show impact)
Node (VirtualCamera3DManager): CAMERA
VirtualCamera3DManager:VirtualCamera3DManager (mix and manage multiple cameras)
ThirdPersonCamera: ThirdPersonCamera (follows/orbits around player)
CameraEffect: CameraEffect (screenshake, zooms, rotations)
For Actions
An action is just a node that can be added in a scene in the editor or via code.
Actions can be easily written, combined, reused or connected to signals as callback instead of writing code.
And since an action can be also a list of actions, multiple actions can be chained together.
Area3D: HitArea
CSGBox3D: Graphics
CollisionShape3D: Collider
OnCollision: On Collision
ActionList: On Entered (List of Actions)
PlayParticles: Play Particles
PlaySound: Play Sound
Parallel: At the Same Time
Flash: Flash
ModulateTimeLineSpeed: Slow Motion Impact
For Actions
An action is just a node that can be added in a scene in the editor or via code.
Actions can be easily written, combined, reused or connected to signals as callback instead of writing code.
And since an action can be also a list of actions, multiple actions can be chained together.
Area3D: HitArea
CSGBox3D: Graphics
CollisionShape3D: Collider
OnCollision: On Collision
ActionList: On Entered (List of Actions)
PlayParticles: Play Particles
PlaySound: Play Sound
Parallel: At the Same Time
Flash: Flash
ModulateTimeLineSpeed: Slow Motion Impact
For Programmers
Since most time on games is spent on content creation and iteration, the action principle
allows programmers to focus on logic and externalize side effects easily to designers.
This unifies the UX for all non-coders and clarifies for codes how all interfaces can be used in a simple, but efficient way.
using Godot;
using Rokojori;
[GlobalClass]
public partial class MyLogic:Node
{
[Export] // Can be assigned in the editor
public Action onSomethingHappened;
public override void _Process( double delta )
{
if ( SomethingHappend() )
{
// Executes an action, if not null
Action.Trigger( onSomethingHappened );
}
}
}
For Programmers
Since most time on games is spent on content creation and iteration, the action principle
allows programmers to focus on logic and externalize side effects easily to designers.
This unifies the UX for all non-coders and clarifies for codes how all interfaces can be used in a simple, but efficient way.
using Godot;
using Rokojori;
[GlobalClass]
public partial class MyLogic:Node
{
[Export] // Can be assigned in the editor
public Action onSomethingHappened;
public override void _Process( double delta )
{
if ( SomethingHappend() )
{
// Executes an action, if not null
Action.Trigger( onSomethingHappened );
}
}
}
For Procedural Designers
A lot of 3D generation programs are not very flexible enough in their 3D creation pipeline are not a
good fit for Godot. The library contains a lot of tools for creating, modifying, optimizing and placing assets.
Click on a node to read more.
Node (Baker): BAKING AND TEXTURING
Baker: Baker (viewport and camera setup looking at a target to fit a resolution)
MultiBaker: MultiBaker (creates multi-viewport setups for merging multiple views of an asset)
TextureMerger: TextureMerger (merges and dilates multiple textures on a grid)
TextureCombiner: TextureCombiner (stack-like image editing for creating textures)
Node (Cuboid): ASSET GENERATION AND MODIFICATION
Node (Cuboid): Generators
Cuboid: Cuboid (cube with beveled edges)
Tube: Tube (tube based on multiple spline shapes )
GrassPatch: GrassPatch (generates small fields of grass blades)
LeafMesh: LeafMesh (generates leaves with 2D curves)
BillboardTree: BillboardTree (generates leaf-level-billboard trees)
MeshGeometryModifier: MeshGeometryModifier
Subdivider (MeshGeometryModifier): Subdivider (add more triangles to a mesh)
SplinesDeformModifier: SplinesDeformModifier (deforms a mesh with one or multiple splines)
SplinesDeformModifier: NoiseDeformer (deforms a mesh by offseting vertices with perlin noise)
Node (Scatterer): ASSET SCATTERING
Scatterer: Generators
GenerateInBox: GenerateInBox (generates assets in a 3D or 2D box)
GenerateOnSpline: GenerateOnSpline (generates and rotates assets on a spline path)
GenerateOnSpline: GenerateInMesh (generates assets in/on a mesh)
Scatterer: Discarders
DiscardNoise: DiscardNoise (remove entries by a perlin noise)
DiscardSpline: DiscardSpline (remove entries by spline areas)
DiscardSphere: DiscardSphere (remove entries in a sphere)
Scatterer: Transformers
RandomizeTransform: RandomizeTransform (uses perlin noise to randomize position, rotation and scale)
ProjectOnColliders: ProjectOnColliders (move assets to the next collider)
For Procedural Designers
A lot of 3D generation programs are not very flexible enough in their 3D creation pipeline are not a
good fit for Godot. The library contains a lot of tools for creating, modifying, optimizing and placing assets.
Click on a node to read more.
Node (Baker): BAKING AND TEXTURING
Baker: Baker (viewport and camera setup looking at a target to fit a resolution)
MultiBaker: MultiBaker (creates multi-viewport setups for merging multiple views of an asset)
TextureMerger: TextureMerger (merges and dilates multiple textures on a grid)
TextureCombiner: TextureCombiner (stack-like image editing for creating textures)
Node (Cuboid): ASSET GENERATION AND MODIFICATION
Node (Cuboid): Generators
Cuboid: Cuboid (cube with beveled edges)
Tube: Tube (tube based on multiple spline shapes )
GrassPatch: GrassPatch (generates small fields of grass blades)
LeafMesh: LeafMesh (generates leaves with 2D curves)
BillboardTree: BillboardTree (generates leaf-level-billboard trees)
MeshGeometryModifier: MeshGeometryModifier
Subdivider (MeshGeometryModifier): Subdivider (add more triangles to a mesh)
SplinesDeformModifier: SplinesDeformModifier (deforms a mesh with one or multiple splines)
SplinesDeformModifier: NoiseDeformer (deforms a mesh by offseting vertices with perlin noise)
Node (Scatterer): ASSET SCATTERING
Scatterer: Generators
GenerateInBox: GenerateInBox (generates assets in a 3D or 2D box)
GenerateOnSpline: GenerateOnSpline (generates and rotates assets on a spline path)
GenerateOnSpline: GenerateInMesh (generates assets in/on a mesh)
Scatterer: Discarders
DiscardNoise: DiscardNoise (remove entries by a perlin noise)
DiscardSpline: DiscardSpline (remove entries by spline areas)
DiscardSphere: DiscardSphere (remove entries in a sphere)
Scatterer: Transformers
RandomizeTransform: RandomizeTransform (uses perlin noise to randomize position, rotation and scale)
ProjectOnColliders: ProjectOnColliders (move assets to the next collider)