Welcome to Keen Software House Forums! Log in or Sign up to interact with the KSH community.
  1. You are currently browsing our forum as a guest. Create your own forum account to access all forum functionality.

Visual Scripting Suggestions Thread

Discussion in 'Visual Scripting' started by PhoenixTheSage, Nov 2, 2016.

Thread Status:
This last post in this thread was made more than 31 days old.
  1. PhoenixTheSage Junior Engineer

    It would probably be a good idea to consolidate Visual Script ideas into one place now, as projects are being worked on and people are getting familiar with what it can or cannot do currently...

    So here we have it folks!
    Post any and all suggestions that you think the Visual Scripting tool, and by extension, level designers, could benefit from here!

    Simply state a description of the method you have in mind, and why you think it would be beneficial.
    I will update the thread with the best suggestions when I can, so they can get the attention they deserve!

    Initial Thoughts:
    • Opening up a URL in the steam overlay browser - Was present in the old scenario editor, would give designer a way to deal out more information to players
    • Assigning players to factions - You can currently only get name/tag strings for them
    • Faction Joined / Faction Left Events - To specifically run methods due to a change in faction
    • Translation of an entity from Position A to Position B, without thrusters being a requirement - Using Vector3D coords, moving an entity between points on a dolly like the camera system would provide control for setting up cinematic or gameplay specific events
    • Turret AI target override to target specific entities - More control over what an entity may or may not attack, regardless of its faction

    Thread Suggestions
    • Player input (keyboard, mouse, etc...)
    • Block health / deformation (add/remove components to block *not inventory*)
    • Block placement on existing grid
    • All the faction options (at war, at peace, member, creator, etc...)
    • All the console options for each block (rotation velocity, min max rotation, light color, light brightness etc...)
    • SetGPSColor method - Color coding with the same array of colors as the highlights would allow us to distinguish between objectives that we give players.
    • More system methods
    Note: The assumption would be that these methods also be accessible from ModAPI, at some point.
    Last edited: Nov 6, 2016
    • Like Like x 1
  2. Gwindalmir Senior Engineer

    Since I have no idea what the visual scripting already can do, I can't make any suggestions.

    My only request is that anything added is also available in the ModAPI for non-visual modders to use (if not already).
    • Agree Agree x 2
  3. midspace Senior Engineer

  4. Bings Trainee Engineer

    I'd like a button in the game to be able to restart the world without having to go back the main menu to test any changes to the script.
  5. PhoenixTheSage Junior Engineer

    @Bings Use quickload (F5)... >.>
    • Like Like x 1
    • Informative Informative x 1
  6. Drakon Apprentice Engineer

    I work on implementation of features or functions for visual scripting (not the visual scripting engine itself). So if you concentrate your suggestions to this thread I can go through them from time to time and implement those that are reasonable/feasible to do.

    You can already do it with function nodes. Use AI/TargetingSetWhitelist to set turrets on named grid to target only whitelisted entities. Then use AI/AddGridToTargetList to add desired targets.

    Yes these are reasonable, I will add them when I have time.

    You can move players like this. We didn't implemented it for other entities because of potential problems it could bring (like teleporting a ship inside another ship). We may have to add this later though since you can already do some terrible stuff with scripting anyway :).
    • Like Like x 2
    • Friendly Friendly x 1
  7. Forcedminer Senior Engineer

    i haven't used it yet but.....*excited oh boy oh boys*

    it kinda reminds me of how gamemaker functions you move around blocks of code to do things....hopefully its that simple!
  8. PhoenixTheSage Junior Engineer

    Very cool, thanks for the info about the turret AI, still going through everything <3 Also thanks for stopping by and being involved!

    Most definitely :p I feel like most designers will have to keep a check on what they are doing with the tool anyway.

    If anyone shows interest in the tools and has questions or ideas, send them here guys! Keep it all in one place :)
    Last edited: Nov 4, 2016
    • Like Like x 2
  9. Mortisfire Apprentice Engineer

    How hard would it be to implement the same functions that are available when writing C# in visual studio? Why limit what is possible?

    Stuff like:

    player input (keyboard, mouse, etc...)
    grid relocation
    block health / deformation
    (add/remove components to block *not inventory*)
    block placement on existing grid
    all the faction options
    (at war, at peace, member, creator, etc...)
    all the console options for each block (rotation velocity, min max rotation, light color, light brightness etc...)

    The list goes on...

    I feel like in order to create meaningful scripts and campaigns we're going to need as much freedom as possible. You know better than we do what is possible and what is impossible. It's slightly frustrating because I have an idea, but then I realize the function hasn't been white-listed (or perhaps it is and I haven't figured it out yet, that's possible.) Would it be possible to white-list everything safe and leave it to us to determine what breaks the game and what doesn't? That would make me want to use this tool.

  10. PhoenixTheSage Junior Engineer

    Block placement more than the others seems unlikely to work very well within VST. For that, I would just say make the script in the ModAPI and make it supplemental to the VS. But @rexxar would probably know more about that.

    @Drakon I noticed we could use some Convert.To method access, like Convert.ToString. I can't append variables to a string value like I would in C#, so being able to atleast convert int/float/long to string would let me add variables to a string sentence.
    Basically, just more system methods.

    Also could be really helpful to have a SetGPSColor method for color coding with the same array of colors as the highlights. This would allow us to distinguish between objectives that we give players. For instance, I want to give players on Red Team or Blue Team their Attack/Defend objectives for the Annihilation game mode. Currently, both GPS markers will be blue. As part of the design, I may want 'Defend' to show as Cyan and 'Attack' to show as Orange or Red.
    Maybe we could eventually have a selection of icons for GPS markers and make them assignable.
    Last edited: Nov 6, 2016
  11. Drakon Apprentice Engineer

    unfortunately there is nothing to whitelist - all function nodes has to be coded specifically for visual scripting. They are usually very simple but it takes some time nevertheless.

    You can achieve this by using arithmetic node. If the first input is string it converts second value to string as well.

    Yes, that is something I want as well. GPS clutter with all markers in one color is not very useful :).
    • Agree Agree x 1
  12. Mortisfire Apprentice Engineer

    Got it. Thank's for clearing that up! Someday I would love to see all the functions added to visual scripting someday. I guess for now we should prioritize the more useful functions.

    Another thing I'd like to see is raycasting? I would love to see where the player is looking, specifically when they are looking at a block. This could enable me to create a visual menu where the curser follows the player's line of sight (see Jimmacle's "Build Vision" Mod ) , know when the player is looking in the right direction for a quest, etc...

    Lastly, it would be helpful to have descriptions next to some or all of the functions as a few are not very self explanatory. For example: What is "input blacklisting"?
  13. Drakon Apprentice Engineer

    Raycasting is definitely doable but it will take more time than other features to get it right. I will probably return to it later on after I do other important features that are not so time consuming. To check if the player is looking in desired direction would probably require more than just raycasting (probably direction vector, dot product).

    Yes, we intend to implement some description for function nodes. I know that it can be confusing to guess function purpose from the name alone :).
    Btw, input blacklisting allows to disable some control key for players - for example disable their "Use" key.
    • Agree Agree x 1
  14. PhoenixTheSage Junior Engineer

    Ah, see I was using a constant to input the string and add it to the integer, once I threw that string into a variable and did get/set it converts the integers fine now.
    Thanks ;)

    Few other things I've thought of as I'm working on my scenario:
    A DropFromPlayerInventory as opposed to just RemoveFromPlayerInventory, could have potential.
    A SpawnFloatingObject should be available so we can create weapon/item spawners without doing lots of ejectors.
    Right now, I am relying on @Draygo 's cargo respawners to accomplish this as shown above ^^: http://steamcommunity.com/sharedfiles/filedetails/?id=770260947
    A SetPlayerModel could allow us to do cool things, like create character classes and assign custom models/skins that are appropriate.

    Also, could we get a way to force a recompile of programming blocks from VST/ModAPI? It has become a problem in cases where ownership changes, since the programming blocks require recompile and there is no way around this that I'm aware of except to have the user do it from the terminal, which isn't ideal.

    There may be some other things I thought of but I am totally forgetting because I've been testing my map for hours :D
    Last edited: Nov 8, 2016
  15. midspace Senior Engineer

    SetPlayerModel should also include player color. (if there isn't anything for it already.)
    • Agree Agree x 1
  16. Forcedminer Senior Engineer


    hmm....wonder could a modder then hook into that to detect what player skin the player has if modded suits are a thing?

    roleplay thought. only engineers in mining suits beyond this point!
    detects engineer in different suit some way of damaging them will happen.
    only engineers in solider suits beyond this point...activities turrets otherwise.
  17. Mortisfire Apprentice Engineer

    Display floating text
    It'd be helpful if I can display floating text in a GPS location. Unlike a gps point, you can only see it when it's in your field of view. Is this already possible ? Id like to be able to see if the player is looking at that text as well.

    Per player block limit
    It would be helpful if we can change on the fly how many blocks a player can place. Players can increase their limit by finishing an achievement/ quest.

    Floating projection without projector
    It would be very useful if we could place projections without the use of a projector block. This has many uses such as a dedicated map.

    Player based solid/non solid walls.
    This isn't exactly visual scripting, but for scenarios such as team death match, it would be very useful to have a wall that only admits certain players for areas such as: respawn, safe area, one way corridors. Sure this is possible with doors but someone can always slip in.
    --- Automerge ---
    Differentiated triggers based on block type, Vogel, or player
    Can we currently determine if a trigger can be activated based on what is inside it? I.e voxel

    Console menu options, drop downs, sliders, etc.
    Can we currently add,remove console options to blocks?
  18. bastelork Trainee Engineer

    I have a respawn in my script, which also sets the player position. The problem is, that the character still has the speed from before the set_position and also the inertia dampeners are disabeld.
    I found the option to enable the player-jetpack but not for the dampeners. It would also be nice to set the speed?
    Next thing is to get the direction from a grid, so i can use it for spawning (eg. i get the direction of the hangar and use it for the spawn_ship)
  19. midspace Senior Engineer

    Spawning should be to match velocity of another entity (grid, player) and local gravity orientation (or block orientation if no gravity present).
    Spawning upside down is irritating.

    Or spawn at/inside a cube for a player character (medbay, cryogenic chamber).
    • Agree Agree x 1
  20. Draygo Senior Engineer

    Possible right now but you must utilize a mod at the moment. http://steamcommunity.com/sharedfiles/filedetails/?id=762397930
  21. G-Enigma Trainee Engineer


    A function similar to setLightingBlockColor, but which sets the color of a named block using rgb or vector3d color input.

    I know you can dynamically change the rgb color of the sun's light in-game without needing to reload the world or anyting, so this seems doable. Being able to modify the 2 backlight colors would be nice as well.
    On that topic, FogSetColor and FogSetAll both appear to accept "Vector3 color" rather than "Vector3D color" and therefore do not work. Looks like somebody forgot a D :

    I know this is a long shot, but how possible would it be to "script" the actions of the Voxel Hand Tool? I.E. feed in shape, width, height, voxel texture, a vector3D for position and then generate those voxels at that position? I realize you can only create voxels within an area near a planet or asteroid, but I imagine you might be able to check for a valid voxel volume beforehand.
    Last edited: Dec 25, 2016
  22. Bailey Burnsed Trainee Engineer

    We need to be able to spawn humeniod bots for PVE battles
    --- Automerge ---
    I saw it in the modapi now
  23. Ronin1973 Master Engineer

    The one major request I would have is the spawning of NPCs like spiders and wolves based on triggers and events. The type number and general location should be scriptable.

    The update log videos also speak of drone scripting such ambush tactics, use of direct fire weapons, and strafing. Tutorials should be made available explaining how to do each of these things.
    • Like Like x 2
  24. G-Enigma Trainee Engineer

    You can actually do that already, using the SpawnBot function. Set the subtype to SpaceSpider, Wolf, etc, and make sure you spawn it on a planet or the game will crash when it tries to path-find its way to you.
    Agree with the tutorial thing, I've only gotten the new drone ai to work in very specific situations and explanations of exactly what it does and doesn't need to work properly would be really helpful.
    • Informative Informative x 2
    • Like Like x 1
  25. dasppferd Trainee Engineer

    Having SetTextpanelDescription push the changes it does across the network, so it´s actually useful for MP.
  26. Ronin1973 Master Engineer


    First of all, thank you for taking an interest in the community. We've taken a BIG interest in visual scripting and want to learn more. I think where visual scripting will come into its own is not in scripting missions but in adding customized content and events into multiplayer servers. I don't know how many people I speak for but we do want to learn, offer suggestions, explore what's possible.

    Many of us have varying levels of experience in in-game scripting with C#. I look at that kind of basic knowledge as a mandatory prerequisite or at least working knowledge of object oriented programming such as understanding variables, operators, objects, etc.

    But simple "Hello World" tutorials to begin with would be nice to accustom us to structure of Keen's visual scripting environment. Some notes on some of the current bugs in the application and work-arounds would be helpful as well.

    Though, if you really want to see this area grow, IMHO, your participation in this sub-thread would make all of the difference. I realize that as a developer, you have plenty of responsibilities outside of this sub-thread; but a little of your time would go a LONG way.

    I look forward to your future postings. Thanks for coming forward. I do appreciate it.
  27. Drakon Apprentice Engineer

    first about this:
    I ran into this issue as well, text change was not sent to clients. That will be fixed.

    Agreed that tutorials are needed. Steinmarder already started working on various tutorials. There will be tutorials for cutscene creation/editing, working with state machines and of course drone AI. Thing is that first I need to teach it to him than he can create some nice professional tutorial :). Until he creates them you can try to open campaign scripts and peak how it is done there. Drones in mission two are using waypoints but they are quite simple otherwise. So if you open script OC01_M2_Escape you can check it there.

    I also check this sub-forum regularly so if you ran into problems/bugs or something you can post your questions.
    • Friendly Friendly x 1
  28. David Ralph Trainee Engineer

    Some utility functions would be nice, such as:
    - get playerId of player in main cockpit of grid (if any)
    - get distance between two grids (probably using centre of mass)
    - get distance of a grid from the ground (the altitude you see in game when in a cockpit near a planet)

    More documentation, and especially usage examples/tutorials for using state machine scripts, and using different script types together would be fantastic.
    I would also really like some documentation on how the questlog works, as I can't seem to find any reference to it anywhere outside of use in the campaign.

    I would also really like an undo button/key in the editor (for node creation, deletion, and re-positioning)
    Last edited: Mar 13, 2017
    • Agree Agree x 1
  29. 666Savior Apprentice Engineer

    Ideas that some scripters and I have come up with while working on projects:

    Number one request: Make the function list show all functions available. We keep having it where only certain functions are listed and this requires a restart of the tool. Video showing the current problem:

    -Function search bar (Make it fast to find nodes while scripting, or ones we cant remember the full name)
    -Set player suit color
    -Set grid/block color
    -A way to get the local host/Admin playerId
    -PlayerId of person who interacted with button panel (might not be possible)
    -Sleep function (can kind of be done already with multiple nodes)
    -Drop/Spawn item (Spawn a mag or ammo crate or tool)
    -allow user to pin the function list to a part of the screen (like with the keyevents list)

    Also, when assigning inventory or items to toolbar slots to clients (hosted MP, host is unaffected), the client CTDT and can no longer rejoin the session unless the session is restarted from a previous save point. The crash log makes mention of a "SecurityException" Full log is here on the bug report i made for it : https://forums.keenswh.com/threads/...s-to-place-items-in-player-inventory.7395119/
    Last edited: May 27, 2017
    • Agree Agree x 1
  30. Drakon Apprentice Engineer

    This feature was working fine for me. We will check it where is problem. Could be difference between current Steam version and our dev version.

    • You can search by opening function selection screen (shift + F) and using Ctrl + F. Never used that one much so not sure if it works correctly.
    • Coloring player, block or grid is done and will be in next VS update
    • You can get get host id with function Factions/GetLocalPlayerId (will not work on DS, I suggest using maybe first player ID there)
    • New events for button panels are also going to be in next VS update (2 variants for both entity name and terminal name like triggers)
    • Sleep function is a tricky one, VS does not support that at the moment
    • Spawning items is also in next VS update
    • Pinning function list could be quite useful but it is low priority right now
    • Like Like x 1
    • Informative Informative x 1
Thread Status:
This last post in this thread was made more than 31 days old.