Wishlist: Scripting Nodes & Node Graph functionality
Suggestions:
Player input triggers (on key press/down/up/etc.)
Reason:
- This one feature gives players/forgers so much more customization for game types and creativity
- Quality of life
Use case:
- simplify scripting for users
- enables more customization for triggers/game type/logic possibilities
============================================
Allow players to have the node properties window open while selecting other nodes
Reason:
Use case:
- reduce the amount of steps it takes to make edits
- reduce the time it takes to make edits
- improves quality of experience for user
============================================
Allow players to open the node properties window on double clicking node
Reason:
Use case:
- reduce the amount of steps it takes to make edits
- reduce the time it takes to make edits
- improves quality of experience for user
============================================
Allow timer Every n seconds to be shared with multiple events. We shouldn’t have to create (n) separate clocks if they all require the same amount of time.
Reason:
- Less calculations
- Lower budget
- Improve performance
- Quality of life
Use case:
- share a single clock (timer) to invoke multiple events it is connected to
============================================
Make nodes in Global Log selectable
Reason:
- Improve debugging efficiency (especially when working with large/complex scripts)
- Quality of life
Use case:
- clicking node within the global log will bring the player to that node within the brain script and become selected
============================================
Allow brain script to run even if there are isolated nodes inside it
Reason:
You should not be prevented from running the script just because there are isolated nodes in the script. (i.e. if I clear all connections, it shouldn’t be relevant)
Improve debugging efficiency (especially when working with large/complex scripts)
Quality of life
Use case:
As a user, I want to be able to keep isolated nodes in my brain script and still be able to execute the script, so that I can make short quick tests for debugging and comparison testing
For quick testing purposes
============================================
Highlight a node’s direct connections on node selected
Reason:
When a node is selected its connections should also be highlighted, so you can quickly parse complex scripts and more easily debug.
Use case:
reduce the time it takes debug errors
improves quality of experience for user
============================================
Nodes:
AUDIO
- Play 3d audio for specific player(s)
BOTS
- Remove Bots on Team
- On Vehicle weapon fired
- Adjust bot difficulty
EVENTS
- On Touched (i.e. when object collides with specific object(s): do x)
- On Vehicle weapon fired
- On Grapple (returns who is grappling and what object they are grappled to, as well as the vector 3 where it attached )
- On Object Collision
- On Object Despawned
EVENTS CUSTOM
- Vector Input/Output for Custom Events - The ability to pass vectors into Custom Events. This would greatly improve the effectiveness of recursive events by allowing us to pass a total of 4 Numbers instead of the 1 Number we are currently limited to. Alternatively, a set of Custom Events which can take different variable types.
- Trigger overtime/sudden death
EVENTS INVENTORY
- On Grenade Stuck Player
- On Grenade Stuck Wall/Floor (then do x, and get the vector 3 of where it stuck)
- On Grenade Throw - include the actual grenade object and not just the type
EVENTS PLAYERS
- On Player Damaged (returns who is damaged and the damage source)
- On Player Shield/Health Begins Regeneration
- On Player Jumped
- On Player Fire Weapon
- On Player Melee (player who is hitting)
- On Player Meleed (player who was hit)
- On Player Collision
- Break Player Grapple (Set Is Grappling to false)
GAME MODE
- On Overtime/Sudden Death Start
- On Objective Complete
- Get/Adjust Objective Reset Time
- On Medal Acquired
PLAYERS
- Get Is Reloading
- Get Number of Players on Team
- For Each Team
- Get Is Holding Flag/Oddball
- Reduce Max Shields
- Reduce Max Health
- Set Current Shields
- Set Current Health
- Get player look at position/Get point of first collision
- Set Player Object (into non-player models)
INVENTORY
LOGIC
-
CONDITION INTERRUPT - a Boolean for events that will allow the event execution nodes to override the previous execution in progress.
-
Flow control:
-
Do Once
-
Do N
-
Flipflop
-
Sequence
-
Basically everything in here: https://docs.unrealengine.com/4.27/enUS/ProgrammingAndScripting/Blueprints/UserGuide/FlowControl/
MATH
- Delta time
- Exponent
- Get Rotation from Vector
OBJECTS
- Swap Grenade With Weapon Projectile/Equipment
- Get/Set Object Team (2 nodes)
- Get/Set Object interactable on/off (2 nodes)
- Get Is In Range
- Change light color and other light properties
- Disable light (without despawning it so we can easily turn off lights that have models that would disappear if you despawned the light)
- Heal / Repair Destructible Object
- Get Is Object in LOS (being able to raycast or check if there is something that would block motion or vision to a location or object would be amazing useful)
- Set Detected for player (with option to set which team detects the player)
- Shuffle List
- Empty/clear list
- Add Objects from Folder to Object List
- Like Halo 5’s [label add], but instead adds objects from a specific folder
- Get/Adjust Spawn Order
- Get/Adjust physics of object
- Get parent in prefab
- Get/Set Object Swatch/Scratch/Color (2-6 nodes)
- Get/Set Object Mass (2 nodes)
- Get/Set Object Health
- Damage Object
- Heal Object
- Skybox/map settings manipulation nodes (Multiple nodes)
OBJECTS TRANSFORM
- Get/Set Player Camera Position/Rotation (2 nodes)
- Set/lock/unlock player aiming vector
- Get/Set Player Scale (2 nodes)
- Get/Set Object Scale (2 nodes)
- Swap grenade with object (at vector3)
- Swap grenade with weapon projectile/equipment
- Swap weapon projectile with grenade/equipment
- Swap vehicle projectile with weapon projectile/equipment, or grenade/equipment
- custom weapon projectile with adjustable properties (explosion on/off, radius of explosion, falloff, trajectory, bounciness, willStickToObject, etc.) Alternatively just make these individual Traits
- Attach Object
- Rotate Around Point (provided a point to revolve, the origin point, and a rotation and returns the point revolved around the origin)
TRAITS
- Apply Trait to Object (not just players)
- Get traits of player(s)
- Trait: Cannot be kicked from vehicle
- Trait: Cannot leave vehicle
- Trait: SFX - Turn Off Low Shields/Health Sound FX (this SFX seems to go on forever and can make any game mode with non recharging shields obnoxious to play)
- Trait: Disable Player Outline
- Trait: Disable Player Melee
- Trait: VFX - Shield Emitter enabled/disabled
- Trait: Object Gravity
- Trait: Back smack protection
- Trait: Prevent equipment usage
- Trait: Outline opacity
- Trait: No hud (heads up display)
- Trait: Forward/Backward movement speed and Trait: Strafing Speed - In game types, we can modify Base Movement speed, Strafing speed and Forward-Backward speed. Via traits, we can only modify Base Movement speed. It’d be helpful to have access to all of them via scripts
- Trait: Weapon Fire Rate
- Trait: Weapon Charge Time
- Trait: Screen FX
- Trait: Weapon visible
- Trait: Crosshair Visible
- Trait: Aim down sights speed
- Trait: Toggle aim assist
- Global explosion radius scalar
- Adjustment to damage resist trait to add a melee damage scalar -
UI
-
Push/Clear splash for team (2 nodes)
-
Set objective banner for team
-
Add more generic strings for UI nodes:
Deploy
Deploying
Equipment
Error
Far
Invalid
Mark
Near
Seconds
Select
Selected
Selection
Selections
Spawn
Spawns
Use
Valid
% A literal percent sign as a string.
$ A literal dollar sign as a string.
-
Just a few more options for UI Message templates:
[Player] is [String 1]
[String 1] is [String 2]
[String 1] are [String 2]
[B] UI Message:
[X]%
[X]/[Y]%
[X] [String 1] Remain - Without the / [Y]
-
Example Usage Justification:
Use the Equipment
Select the Spawn
Player is Selected
Enemies are Near
Spawn Selected
Deploying Player
Player is Far
Deploy Equipment
X Seconds remain
X/Y Selections
Invalid Selection
Selection Valid
X %
VARIABLES BASIC
- Number - Ability to pass in a value to the [Number] node. We can do it with a [Vector3], why not with a [Number] node?
Nodegraph functionality changes:
- Ability to reroute/change type/color of, connection lines to avoid spaghetti code
- Make the line between diamond points on nodes a different color &
- Groups/comment blocks
- Rendering the nodegraph in native res and disabling anti aliasing for it
- Adjustment to damage resist trait to add a melee damage scalar
- Adjustment to bot difficulty nodes, split into aim and movement like training mode
- More strings, particularly names of modes/weapons/vehicles/equipment etc. (if it’s in the sandbox I want to be able to print it to a splash)
- Request for trait list manipulation and observation functionality to be the same as object lists. (Multiple nodes)
- Ability to use objects dynamically obtained via scripts as the source of an area monitor or event
- Move Object to Point and other similar nodes should not stall execution of nodes after it
- The execution pin should be able to take in multiple connections (so you could branch then merge the branches again later to easily allow for optionally executed code without making a trigger.
- Ability to move/rotate/set velocity all objects in prefab simultaneously with scripting
- All list declarations should expand dynamically to allow for any # of items
============================================
Wishlist - Forge Features & Functionality
Suggestions:
Ability to manipulate normal objects’ properties (mass/weight, gravity, inertia, velocity, etc.)
Reason:
- To enable users for a more precise placement/manipulation of objects and a more efficient /better experience for the user
- Quality of Life
Use Case:
- To customize how much dmg a player will receive on impact
- To customize how bouncy, heavy/light, forceful an object is and how it affects other objects on collision
- Dodgeball (with a variety of objects - a sandwich, misc. toys, etc.)
- Mario Party Bumper balls
- Pinball
============================================
Allow players to use their camera as an object to manipulate the positional/rotational data
Reason:
- This one feature gives players/forgers so much more customization for game types and creativity
Use case:
- custom minigames which require an “out of body experience”
- control a turret or some other remote device
- cutscenes
- “playable RC cars” or mini figures
- playable chess/checkers pieces
============================================
Allow players to set player models
Reason:
- This one feature gives players/forgers so much more customization for game types and creativity
Use case:
- Prophunt
- “Mario Party-like minigames”
- “Robot Wars”/ mechs with selectable attachments
- Asymmetrical game types play as combination of objects/npcs.
============================================
Allow players to place enemy models from campaign
Reason:
- This one feature gives players/forgers so much more customization for game types and creativity
Use case:
- more variety for bots/npcs
- PVE gametypes: bosses/minibosses/etc.
============================================
Print variable names and/or object references associated with values being printed to killfeed
Reason:
- To more easily parse data being printed on screen, leading an improved/more efficient experience
- To debug, rather than just having a stream of seperate vector 3s, it would be nice to know what the vector 3’s are associated with
Use case:
- Debugging when printing multiple vectors/numbers/strings/etc. to the player’s screen
============================================
Optional Viewports (Orthographic views)
Reason:
- To enable users for a more precise placement/manipulation of objects and a more efficient /better experience for the user
- Quality of Life
Use Case:
- precision layout
- for scale reference
============================================
Placeable 3d grid always centered on the player
Reason:
- To enable users for a more precise placement/manipulation of objects and a more efficient /better experience for the user
- To visualize our math outputs for object placements/work in progress math solutions (when working with vectors for example)
- Quality of Life
Use Case:
- precision layout
- for scale reference
============================================
Select the last map you worked on by default when you return to the Forge screen
Reason:
- You shouldn’t have to open Maps > my files > my map > select version, as more often than not, you want to return to your map you last worked on.
- Quality of Life
Use Case:
- quickly return to your last map you worked on (less steps needed)
============================================
The Sun/skybox/time of day should be scriptable
Reason:
- This one feature gives players/forgers so much more customization for game types and creativity
Use case:
- custom minigames which require a time of day day/night change based on team player death (i.e. vampires vs hunters - when vampires kill becomes 1 increment closer to night, and vise versa )
============================================
Features & Functionality:
- A search functionality in the objects menu (Too many times I know the object name but forget which folders its under, or I want to search for similar things)
- Deeper limit for nested folders in the folders menu
- Ability to hide/show an object from its properties or with a hotkey while having it selected / looking at it. Only being able to do this from the folders menu is a bit odd and time consuming.
- Shrink the selectors for plane-grabbing vs axis-grabbing. Often I want to move/scale an object on one axis and I accidently change two, it can be hard to see and many view angles make it impossible to grab a single one.
- Boundaries and glass and such should not obscure the axis selector thing used to move/rotate/scale and object
- All letters, proper UNSC decals scalable
- If nodegraph fails to build due to a particular node, highlight that node when inspecting the affected brain’s node graph.
- X should be quick open AND close object menu.
- Pressing X, then B, then X again is a bit of a hassle especially when the simple brain just wants the menu to go away or come back.
- Allow multiple players to edit nodegraph simultaneously. Even if its just on different brains.
============================================
Wishlist - Forge Objects
Suggestions:
Water plane
Reason:
- This one placeable object gives players/forgers so much more customization for game types and creativity
Use Case:
- partial underwater sections
- multiple water sources
- manmade river/canal between structures
- pool
- fountain
======================================
“inverted player/object blockers” (i.e. an arena where they player cannot leave - including a circle, and other shapes)
Reason:
- This one placeable object gives players/forgers so much more customization for game types and creativity
- Lower budget - It drastically reduces the amount of objects and memory needed to accomplish this goal
Use Case:
- Circular arena
- Square/rectangle shaped arena
- A “sports goal/basket”
======================================
dynamic objects where we have full control over their dimensions (not just selecting from a small pool of premade sizes)
Reason:
- This one placeable object gives players/forgers so much more customization for game types and creativity
- Lower budget
- Improve performance
- Quality of life
Use Case:
- Circular arena
- Square/rectangle shaped arena
- A “sports goal/basket”
======================================
Objects:
- A sign which can display arbitrary text which can be set via properties or scripting
- A piece for when two ramps meet at an angle (current there are some pieces, but they don’t work for most slope degrees or angles the slopes meet at)
- Right triangle whose sides can be scaled arbitrarily (currently there is a right triangle but it will always be a 45-45-90 triangle and its sides have to scale uniformly basically)
- Primitive rings with varying inner diameter (current rings are very thick and hard to use for most things, I end up using curved walls usually)
- Destructible glass
- Curved fences
- Curved glass
- Rocks with materials that can be changed
- More types of rugged terrain
- Even larger fires / smoke / fog FX (or ability to scale existing FX)
- Household furniture (toilets, ovens, couches, recliners, wardrobes, etc.)
- Primitive stairs (or some equivalents to the UNSC stairs that are more solid and less stylized)
- A cutter volume for volumetric fog (to define areas in which fog should not be in)
- A cutter volume for screen fx like rain (to define what areas the screen fx should not be applied in)
- More varieties of civilian vehicles
- The “Fists” weapon from the tutorial
- so that we can make players be barehanded without it behaving and looking funky
- Pelican closed/open and associated gubbins (fx landing gear etc.) like h5
- gravity volume - for scaling gravity for all dynamic objects in select areas of the map
- Chroma block (no collision, no texture)
- Sun and Moon (which can affect lighting)