SCRIPTING FEEDBACK

Discussion in 'Halo and Forge Discussion' started by WAR, Dec 17, 2015.

  1. WAR

    WAR Cartographer
    The Creator Forge Critic

    Messages:
    1,568
    Likes Received:
    3,893
    SCRIPTING FEEDBACK

    If you have feedback or suggestions you would like to share about the SCRIPTING system, please post them here. The most valuable way to present your suggestions is to create a use case scenario. Make the team at 343 know why your feature is important to you.
     
  2. Doju

    Doju Promethean
    Forge Critic Senior Member

    Messages:
    612
    Likes Received:
    868
    We need a way to trigger scoring.
     
    Aschur, RagnarokXll and cookies4you like this.
  3. buddhacrane

    buddhacrane Ancient
    Senior Member

    Messages:
    1,204
    Likes Received:
    116
    My initial thoughts/finds with the Scripting:

    The Good:
    • Spawning/Despawning objects now is really reactive (no delays)
    • The "Conditions/Actions" setup is intuitive and flexible
    • Ability to Script behaviour based on things Despawning (the "On Despawn" Condition)
    • The "On Message/Power: Multi" Condition for And/Or Logic (nice touch)

    The Bad:
    • No Proximity Triggers (goodbye On-Enter, On-Exit, On-Stay!)
    • No Timers (goodbye ability to add Delays to ... well ... anything ...) - yes there is a "Timer" condition, no it is not even remotely the same thing (it only allows you to add a delay from the beginning of the game - that's it). Edit: Nevermind, I've come up with a work-around (see pro-tip: "Adding Delays")
    • So, basically the only form of Player event interactions you have are button-press (interactive) switches ... except for ... (see pro-tip: "On-Damage Trigger")

    The Different:
    • If an object doesn't have room to spawn, it won't spawn in at all - if you move away, it still won't spawn in (unlike in MCC) until its Scripting Condition is met again. Edit: Actually some stuff will respawn after you move away from it, and some objects will forcibly spawn in whether you're in the way or not (you get pushed out of the way) - further investigation required.
    • You can't "Power Off" the Interactive Switches (they will always be interact-able): The best you can do is to Despawn them - except for the Invisible one; that can't be Despawned, despite what its object properties might tell you (sigh).


    Pro-Tips:
    On-Damage Trigger
    You may think there is no "On-Damage" trigger (i.e. shoot the trigger to make the magic happen), but you can actually create this behaviour using the "Exploding" Props objects - They have a Condition for "On Health: Below", which allows you to basically add Scripting behaviour whenever you shoot them.

    Adding Timer Delays
    There's no Timer Scripting object, but you can add delays to your Scripts using Respawn behaviour. Have a dummy object (anything will do, as long as it's something that can Respawn) and use its Respawn Timer as a delay, with a Scripting Condition of On Spawn followed by whatever Action you want to have happen after that delay. Whatever you want to have initially trigger this Delay should first Despawn that object.

    That's after only playing around with it for a couple of hours. I should have more insight at a later date, at which point I may create my own Scripting thread.
     
  4. Swaino

    Swaino Promethean

    Messages:
    14
    Likes Received:
    3
    I was hoping it was just me that wasn't able to find some of the scripting elements . I'm very disappointed that triggers and individual timers are missing. Unless we are the ones missing something but I know you are very knowledgable with logic systems and had a very good understanding of H2A scripting.

    Edit: Got a pretty quick but unfortunate reply from Tom on twitter :(https://twitter.com/Swainoo/status/677284262199037952
     
  5. cookies4you

    cookies4you Halo 3 Era
    Senior Member

    Messages:
    178
    Likes Received:
    93
    I'd kill for arrays.

    Right now, there are 26 usable channels, ranging from Alpha to Zulu (A-Z), down from H2A's usable 64 (0-63) channels. That's not a lot you can work with, especially if you want to make minigames.

    My suggestion is to add sub-channels in addition to the letter channels.

    For instance, instead of just Alpha or Bravo, you would have Alpha [0] or Bravo [4], up to something like [9].

    To keep it from breaking existing scripts, sending a message or power change to Alpha [-1 (the new default state)] would send it to all sub-channels under Alpha (being Alpha [0-9]).

    The result is that we'd have 260 channels to work with and it'd be a lot easier to macromanage scripts.

    As for a practical use...

    Imagine that you've set up a system of ten doors. When the door's channel is on, the door opens. When the channel turns off, the door closes.

    If you wanted to make a switch that closes all the doors, you'd have to create 10 different scripts, one for each channel.

    But, say that you placed all ten doors under the Alpha sub-channels from [0-9]. If you wanted to close them all, you'd only have to create one script directed at Alpha [-1].
     
    #5 cookies4you, Dec 17, 2015
    Last edited: Dec 17, 2015
  6. BlazingBillion

    BlazingBillion Legendary

    Messages:
    3
    Likes Received:
    1
    I would like a way to make an object continuously be offset. Running offset to the max on a timer makes it come screeching to a halt, then go from 0 to 60. It's really janky and makes my train sad. :(
     
  7. Dreamuh

    Dreamuh Legendary

    Messages:
    3
    Likes Received:
    0
    I found a work around for "powering off" switches but it essentially turns the switch into a one time use unless it is reactivated by another switch. Anyway in order to create a single use switch:

    Set the switch to trigger an explosive.
    Set the despawn of the explosive to trigger whatever it is you want to happen once.
    Also set the explosive to be incapable of respawning that's really important.

    Detail:

    Switch Script
    On Interaction
    Message: Send
    Channel: Alpha (example)

    Explosive UNSC Barrel Script
    Script 1
    Message: Receive
    Channel: Alpha
    Set Damage Ratio: 1.00
    Script 2
    On Despawn
    Message: Send
    Channel: Bravo

    Platform (elevator movement)
    Message: Receive
    Z axis movement
     
  8. buddhacrane

    buddhacrane Ancient
    Senior Member

    Messages:
    1,204
    Likes Received:
    116
    I concur, more channels would be nice. I like your suggested method of implementing it too :)

    One thing you can currently do is mix the Message events and the Power events to get double-use out of those 26 channels, but it's not quite the same thing...

    And @Dreamuh, yeah there are a few ways to simulate Power behaviour for the switches - the problem is that there's always going to be that "Hit X to Interact" prompt for players, so it's a bit tricky to provide good feedback to players that the Switch is no longer active (short of just Despawning it altogether).
     
  9. BlazingBillion

    BlazingBillion Legendary

    Messages:
    3
    Likes Received:
    1
    It would be cool if you could start playing music from the OST through scripts. It would really make some moments more exciting and it would allow us to listen to more of them sweet tunes.
     
  10. Ace VP

    Ace VP Legendary
    Senior Member

    Messages:
    22
    Likes Received:
    18
    I would love seeing Explosive Volumes like in H2A to script to make explosions... Same with Gravity volumes like u open a door in space and it activates a gravity volume...
    1. Script-able Explosive Volumes
    2. Gravity Volume
    3. Script-able Covenant mid size shield bubble that can be turned on and off...
    4. Shoot-Able Scripting Triggers
    5. Area Scripting Triggers when standing or leaving an area to activate like H2A
    6. More animated objects.
     
  11. Petque

    Petque Ancient
    Senior Member

    Messages:
    23
    Likes Received:
    2
    Hello :)

    In order to create my first halo 5 forge map, i'm trying to move an object ( an undriving car ) from A to B ( on the axes X) within a constant speed, and when the car is on B, it disappear and spawn on A 30sec later, then goes to B etc..

    I try to do That with a script but unfortunatelly i wasn't able to find a way to do That.. Does somebody has an idea ? Thank you :)
     
  12. cookies4you

    cookies4you Halo 3 Era
    Senior Member

    Messages:
    178
    Likes Received:
    93
    We don't have a way to detect when objects interact with each other.

    You'll have to play around with timers or have it physically break something like a barrel.
     
  13. Ace VP

    Ace VP Legendary
    Senior Member

    Messages:
    22
    Likes Received:
    18
    Rotation scripting need to rotate more smoothly for nice visuals to a map...
    Also away to just constantly preform a action such as always rotating...

    - Scripting Area Triggers: Area Enter Trigger, Area Exit Trigger, and Enter & Exit Area Triggering (Note: this was in H2A)

    - Scripting Shoot-able Triggers: Destroy Once Shoot Trigger, and Toggle Shoot Trigger. (Note: Toggle Shoot Trigger Never Breaks... Also this was in H2A Shooting Triggering)

    - H2A style Explosion Volumes (Note: Only explodes explosive items)

    - EMP Totem (Scriptable on / off) (Note: Was in H2a)

    - Covenant Shield Bubble Totem (Note: This is like emp but it is scripted on / off to create a bubble shield around you... Also shield size can be small, medium or large, or maybe adjustable...)
     
  14. Swaino

    Swaino Promethean

    Messages:
    14
    Likes Received:
    3
    So at the moment as we know there aren' t any timers. For me this along with not having trigger zones are a killer for scripting.

    For instance, say you want something to happen on a timer, using the technique buddhacrane mentions does the job e.g (setting a "Terminal" with a "On Interaction" Message: Send" on say "Alpha", have a blank object setup with "On Message: Received" "Despawn" on "Alpha", setting a respawn delay of "x" seconds upon deletion, then setting up a "On Spawn" "Message: Send" to a second channel, say "Bravo", then set a "Message: Received" on the item you want something to happen to on channel "Bravo")

    The only problem with that is the something you want to happen will now happen the first time you start the match AS WELL as when
    So a work around I found is to have having your first blank object have a Message: Send" on "Match Start" to say, "Charlie", then have a second blank object with a "Message: Received" from "Charlie:, then use the same technique as above to despawn the second blank object, respawn it with a timer (shortest time possible is ok to have), have an on spawn condition to send a new message to say "Delta". Then on the something you want to happen, set a "Message Received" from "Delta" and have it do the REVERSE of whatever your something is and set the time to 0.10.

    For example. I have a terminal that when I interact with it, makes a block move up but with a delay of 5 seconds. If I don't implement my additional work around, when the match starts my object will move up without me interacting with the button. But because I implemented my work around when the match starts my object moves up but then is instantly put back to where it was because I set my reverse action.

    Now if 343 had included ACTUAL timers.......this whole ball ache would be avoided.
     
  15. cookies4you

    cookies4you Halo 3 Era
    Senior Member

    Messages:
    178
    Likes Received:
    93
    Timers and triggers are high on the list.

    Source: 343 Forge People
     
  16. Swaino

    Swaino Promethean

    Messages:
    14
    Likes Received:
    3
    Oh I know, I've been tweeting and keeping up with Tom's twitter. He's a good guy and I have faith in him.

    Just purely posted what I did because Tom posted the same info buddha did in a 343 blog but it's not a viable solution without the work around I posted above. I'm pretty sure people don't want all their timed events happening when the game first starts :p
     
  17. cookies4you

    cookies4you Halo 3 Era
    Senior Member

    Messages:
    178
    Likes Received:
    93
    Honestly, I'd kill for a Delay action.

    (Condition) {Delay(# of seconds, {Action})}
     
  18. Swaino

    Swaino Promethean

    Messages:
    14
    Likes Received:
    3
    Yep, it's a shame timers were bugged to the point they couldn't be there on launch.
     
  19. leegeorgeton

    leegeorgeton Forerunner
    Senior Member

    Messages:
    406
    Likes Received:
    88
    I really need the on/off, enter/exit triggers to do the kind of maps I was wanting to get started on when forge came out. It would also be nice if the movement and rotation of objects through scripting was a bit smoother. The lack of smooth movement of scripted objects is very noticeable.
     
  20. leegeorgeton

    leegeorgeton Forerunner
    Senior Member

    Messages:
    406
    Likes Received:
    88
    I haven't done much testing on this to figure it out yet, but is there a way to get a terminal to be non-interactive until the objects it sets into motion have finished moving. I have some objects set to move when turned on and set to move back the same amount when turned off. If I interact with the terminal before the objects have finished moving they immediately begin moving back by the prescribed amount which moves them past the original position.
     

Share This Page