List of things that would be nice for the editor.
I have posted here because it is basically the last active subforum here on Sc2Mapster
Trigger - Editor:
Map Obfuscation doesn't work with Custom Script + GUI
Tooltips for natives missing
Native way to show an actor for certain player only
Option to jump directly to a certain part (trigger, action) of the script via GUI
Let us specify player options for observers (i.e. turn world tooltips on)
What are custom events? and how do they work?
Changing texture/pathing dynamically
Server-side banks (anti-hack)
GUI wrappers for a struct. It is only possible to use a struct member and not the struct type directly.
GUI wrappers for array and struct references.
Galaxy support for global array and struct references.
Galaxy bulk copy support.
Galaxy complex function argument support.
Galaxy support for custom type operators. Useful for simulating some simple types like int16_t and int64_t which have uses.
Galaxy support for explicit type casting. Types such as int and byte should support this natively. Custom types can also support it if a type cast operator function is declared
Galaxy support for dynamic memory allocation from a heap. Explanation below
Compiled Galaxy support. Reduces map load times as there is no longer a need to parse script.
Galaxy error logging for multiplayer maps.
Features to transfer map ownership and share banks between authors.
Dialogs:
Dialogs which are rendered below the Game-UI
A Scrolling dialog (list box doesn't work that well)
Good suggestions, would be really nice to see them in LotV. I have a few too.
Data Editor:
When a behavior is upgraded units that have it are restored to max vitals, would be nice if this is fixed (not sure if this happens only to behaviors that change max vitals or not)
Behavior field that increases vital regeneration by % (ie war3 sobi mask)
Behavior field that modifies duration of certain category behaviors (ie stun resistance), there's snare multiplier for slows, so why not?
UI Editor (or generally UI):
On unit values, have behavior values there too. Like #damagescaled[0] would show the sum of scaled melee damage modifications from all of the unit's behaviors combined
Ability to show number of stacks on behavior's icon in the UI
Behavior countdown to display remaining duration (ie like in Heroes of the Storm, Diablo 3, etc)
A Scrolling dialog (list box doesn't work that well)
Just simply giving us simple scroll wheel detection in the same way as all the other mouse events like pressing/clicking/releasing left/right mouse buttons would be great.
Us map makers can take it from there.
Letting us see all the "hidden" functions would be good too.
Be sure to check out the extension mod: Hots Custom Map support on NA and EU, Despite the name it greatly expands the roster of options for the default 3 races and is updated all the way to NCO.
If I was still a mapmaker, I'd be happy to have these changes:
Data editor
Terrain deformers should affect camera and unit height planes.
Terrain deformers should update minimap, so make deformations be visible there.
Physics based mover should be added (so it would be controlled by phisical forces, with a possibility to determine unit's coordinates with a trigger).
Triggers
Editing pathing doesn't work.
Dynamical painting textures should be added (with minimap updates).
Terrytory/borders system should be implemented (something like creep, but per player, with a possibility to validate if a point belongs to enemy, to player, or to allies)
Find my map named Architestruction on bnet. After playing it once, you'll have many map ideas, but only to realize, that physics only work on actor side, and we can't get coordinates of a model, moved by a force. Than you'll understand what I mean.
Mover, that acts like a physics based actor, but actually changes unit's coordinates. It will open a huge universe of physics based gameplay features for mapmaking.
Also, you added "camera height" in your list, while (I think) camera height and unity height planes are different planes.
Option to jump directly to a certain part (trigger, action) of the script via GUI
Bad programming practice. Modern programmers try to avoid using jump statements because they cause all sorts of problems including making code slower by disabling various optimizations. Use the appropriate flow control statements rather as they are not only more readable but also more optimizer friendly.
Quote:
- Let us specify player options for observers (i.e. turn world tooltips on)
Observers are meant to do as the name says, observe. They are not meant to have a physical presence in the game with regard to triggers. Any form of physical presence can result in problems with replay determinism.
Quote:
- What are custom events? and how do they work?
They are incomplete in SC2 2.0 from what I can tell. The main problem currently is data management (eg TriggeringPlayer) which is unsupported resulting in all kinds of problems when using them. In Heroes of the Storm (and SC2 3.0?) they added natives that allow you to transfer mappings from a local data table to the local data table of the resulting event thread.
The idea behind them is that you can create custom event situations and register an unspecified number of triggers to them. For example a custom map might have a "player reaches new age" event when trying to simulate aging up such as used by the Age of Empires and Empire Earth 1 series. This is great for custom mods and libraries because it allows code extension without having to modify existing code (good interface practice).
Quote:
- Server-side banks (anti-hack)
If you read my previous postings on the subject you would understand why they are just not possible. As long as you use some form of non-standard protection system (eg ImperialBank) then you already stop all the child hacker problems which are the main source of grief. If the odd hacker such as myself then manages to generate a code the damage is so minimal that you can write it off along with map hacks and other forms of cheating outside your control. The best protection from hacking is making it so people do not need to hack, be reasonable with what you expect from players and chances are most will never even think of hacking in the first place.
Quote:
- Dialogs which are rendered below the Game-UI
As far as I can tell the Game UI and custom dialogs use the same render engine so this request makes no sense. You can probably achieve what you want by hooking a custom UI element to the game UI (part of them) rather than above it (part of something displayed above). For example one can change the resource icons with triggers dynamically during runtime.
Quote:
- True PiP as described here
You are under estimating how difficult Picture in Picture is from a game engine perspective. There is a reason Portal was so amazing at the time it was released. You also do not want to encourage people to use such functionality as it will not work on lower visual settings and most certainly will create a lot of performance problems.
Quote:
- Bigger map size (at least the same way as it was possible with wc3 maps)
Should be more like "Allow pathfinder to support bigger map sizes". It is possible to get WC3 override sized maps however the path finder does not work.
Quote:
- Ability to show number of stacks on behavior's icon in the UI
- Behavior countdown to display remaining duration (ie like in Heroes of the Storm, Diablo 3, etc)
These features are in Heroes of the Storm so will likely find their way to StarCraft II 3.0.
Quote:
- Actors still need more tooltips
Being resolved in a different way.
Quote:
- Shapes for footprints (it's really annoying to create a bigger circle as footprint)
Not possible due to how they operate. The mesh based pathing system only supports triangles in a specific structure.
Quote:
- Please provide working examples for all 8 marker flags
Probably will be provided outside the editor.
Quote:
- Behaviors which change maximum vitals are bugged
Need to elaborate as I have not run into bugs using them.
Quote:
- Behavior field that increases vital regeneration by % (ie war3 sobi mask)
Which did not work too well if I recall. Most of them increased the base regeneration by a percent and not the current regeneration (buffs/atttributes included).
Quote:
- Behavior field that modifies duration of certain category behaviors (ie stun resistance)
Possible a SC2 3.0 feature. Heroes of the Storm does this somehow.
You are missing all the really important ones...
GUI wrappers for a struct. Currently it is only possible to use a struct member and not the struct type directly.
GUI wrappers for array and struct references. References are supported but due to the lack of the above feature you cannot get an array or struct reference.
Galaxy support for global array and struct references. For safety these only permit assignment to arrays and structs declared globally.
Galaxy bulk copy support. We all know it should be avoided when possible for performance but sometimes it is desired from a readability perspective.
Galaxy complex function argument support. We know bulk copy is bad but some times it is just more convenient to bulk copy. Could at least support arguments from types with current bulk copy support (arrays and structs <= 1 word).
Galaxy support for custom type operators. Useful for simulating some simple types like int16_t and int64_t which have uses.
Galaxy support for explicit type casting. Types such as int and byte should support this natively. Custom types can also support it if a type cast operator function is declared otherwise it will throw an unsupported typecast error.
Galaxy support for dynamic memory allocation from a heap. Heaps are declared with a special macro specifying the heap size as well as other (if any) parameters for allocation inside the heap. Algorithm could be simple malloc based with native constructs "new" and "delete" being used for allocation. Allocation failure can be viewed as a thread crash error. This is an advanced editor feature so does not need automatic garbage collection (user is responsible for memory management). The new operator returns a type reference while delete takes a type reference. Overhead is added for safety such as an allocation map to detect cases of stupid "delete twice" and lingering reference from returning re-allocated memory. Memory efficiency is not a concern here, safety and usability is so some form of block allocation algorithm with block meta-data would work.
Compiled Galaxy support. For security reasons this is done once every publication by the BattleNet servers from the source code and has several signatures to prevent tampering into an invalid state. It is intended to be a better form of obfuscation as the compiled Galaxy would not be anywhere near as readable as the textual script and could have many readable names removed. It should also reduce map load times as there is no longer a need to parse a human readable script.
Galaxy error logging for multiplayer maps. Trigger errors are automatically uploaded at the end of a session to produce a log which map authors can retrieve from the editor. The log only tracks the last 1,000 errors in FIFO order. The log allows common errors to be immediately detected and fixes developed. After common errors are fixed it allows rare or obscure errors to also be detected and fixes developed. Since a lot of bugs with maps are due to trigger errors, such a feature as this could possible reduce the average number of bugs in a map after a few releases by a considerable amount. Currently I think a lot of map authors are unaware of how many errors their trigger scripts are generating.
Features to transfer map ownership and share banks between authors. Being a solo author can only take you so far in this day and age. Encouraging cooperative mapping projects could drasticly improve the average product quality of SC2 arcade games. For example if I find a bug, the map author could add me as a maintainer (since I am trust worthy, having worked with both WC3 and SC2 communities from early days) and allow me to fix it without him having to raise a finger. Currently to do this it involves an excessively complex process of transferring map files to me, making the changes, transferring it back to him and then he uploads which can take several hours to do (especially between timezones). Some form of merge feature for parallel changes would be even better.
Option to jump directly to a certain part (trigger, action) of the script via GUI
Bad programming practice. Modern programmers try to avoid using jump statements because they cause all sorts of problems including making code slower by disabling various optimizations. Use the appropriate flow control statements rather as they are not only more readable but also more optimizer friendly. Quote:
i do not mean a GoTo. i want to right click a trigger and have a "see in galaxy script"
- Let us specify player options for observers (i.e. turn world tooltips on)
Observers are meant to do as the name says, observe. They are not meant to have a physical presence in the game with regard to triggers. Any form of physical presence can result in problems with replay determinism. Quote:
in my map observers cannot observe because they dont see world tooltips. they shall not interact in anyway that would influence the game
They are incomplete in SC2 2.0 from what I can tell. The main problem currently is data management (eg TriggeringPlayer) which is unsupported resulting in all kinds of problems when using them. In Heroes of the Storm (and SC2 3.0?) they added natives that allow you to transfer mappings from a local data table to the local data table of the resulting event thread.
The idea behind them is that you can create custom event situations and register an unspecified number of triggers to them. For example a custom map might have a "player reaches new age" event when trying to simulate aging up such as used by the Age of Empires and Empire Earth 1 series. This is great for custom mods and libraries because it allows code extension without having to modify existing code (good interface practice). Quote:
If you read my previous postings on the subject you would understand why they are just not possible. As long as you use some form of non-standard protection system (eg ImperialBank) then you already stop all the child hacker problems which are the main source of grief. If the odd hacker such as myself then manages to generate a code the damage is so minimal that you can write it off along with map hacks and other forms of cheating outside your control. The best protection from hacking is making it so people do not need to hack, be reasonable with what you expect from players and chances are most will never even think of hacking in the first place. Quote:
well yeah having a own signature prevents the kids from hacking it, that's true. i heard they are going to implement server-side banks.#
any map that saves progress is prone to hacking and i dont want to make maps that do not save progress.
As far as I can tell the Game UI and custom dialogs use the same render engine so this request makes no sense. You can probably achieve what you want by hooking a custom UI element to the game UI (part of them) rather than above it (part of something displayed above). For example one can change the resource icons with triggers dynamically during runtime. Quote:
if you create dialogs with triggers they are always rendered above the GUI, no way to make them disappear under the i.e. bottom console (i.e progress bars attached to units)
You are under estimating how difficult Picture in Picture is from a game engine perspective. There is a reason Portal was so amazing at the time it was released. You also do not want to encourage people to use such functionality as it will not work on lower visual settings and most certainly will create a lot of performance problems. Quote:
yeah that's why it is a wishlist, not everything might be implemented but it would be nice to have it.
- Behavior field that modifies duration of certain category behaviors (ie stun resistance)
Possible a SC2 3.0 feature. Heroes of the Storm does this somehow.
In Heroes of the Storm, the crowd control reduction is done via a trigger altering the duration of the behavior when it is added. Then events for behavior additions already exist in SC2. If I remember it correctly, they used new behavior flags to mark behaviors for these purposes (slow/stun).
But, in theory, you could do that in SC2 checking the value of all slow/stun fields, too.
Alternatively, you could use the damage response fields as IDs to store special information, e.g. chance of 0 and some other value in the damage response = 1 could mean that you define it as a slow. A 2 could be a stun, etc. Your trigger would need. Remember that the data editor allows you to add a hierarchy, so you can create new base classes for slows/stuns, so you wouldn't need to alter these values all the time.
in my map observers cannot observe because they dont see world tooltips. they shall not interact in anyway that would influence the game
Can you try to use a default-observed player (Map -> Players -> bottom left dropdown) and override the value for the player at the start of the map?
That settings makes observers see the game through the player ID. This allows you to show actors / trigger-created text tags / etc, only to observers. They still won't be able to interact, but you will have a way to present information only to the observers.
But this will make the alliance colors (button next to minimap) act differently from the colors of a normal observer, unless the observer spectates a player.
if you create dialogs with triggers they are always rendered above the GUI, no way to make them disappear under the i.e. bottom console (i.e progress bars attached to units)
You hook up a frame from the UI and then you create a panel within it. Set the panel's render priority below 512 to make it appear below the elements of the hooked-up frame.
Then you create your dialog's content within the panel instead of the trigger.
To have dialog contents attached to units, you can add a custom status frame to the unit and hook a panel/frame within it.
The storm shield adds this buff to the units. The damage seems to be entirely removed (fraction=0) up to a total amount of 20% of the heroes' max life value (ModifyLimitVitalMaxFractionArray).
The UI seems to integrate this buff into the displayed vitality value (life + shields + this?).
Since it's an array, we can assume that this will be possible for life and energy, too.
But this is a bit off-topic in this thread, I believe.
Yes and No. This would fulfill a wish of many mapmakers to have more granularity that allows data only solutions. For example, doing that kind of damage response without that vital modify limit forces one to use trigger workarounds. Now it will be trivial to create temporary augmentation to shields. Looking at this, this would be the proper solution to the increase max vital issue that people speak of (where increasing a max vital also heals for that amount).
I had to have to keep doing it earlier, but then fixed it. By uploading the mods in public mode, so they are available for everyone and thus somehow "more visible" for the map, so uploader doesn't throw "mod file not found" error. Maybe "use latest version" option is required too, or it's only for the case where you just updated mod's new version, and don't have to select it again.
Does this work if you upload to all 4 regions at once or do you still have to select the mod each time the region changes (eg upload to us, select mod, change region to eu, re-select mod)?
I had to have to keep doing it earlier, but then fixed it. By uploading the mods in public mode, so they are available for everyone and thus somehow "more visible" for the map, so uploader doesn't throw "mod file not found" error. Maybe "use latest version" option is required too, or it's only for the case where you just updated mod's new version, and don't have to select it again.
for one of my maps i dont have to do it for EU and NA, but for SEA and KR with the exact same settings
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
List of things that would be nice for the editor.
I have posted here because it is basically the last active subforum here on Sc2Mapster
Trigger - Editor:
Dialogs:
Terrain - Editor
UI - Editor
Data - Editor
Actors:
Behaviours:
Generall - Settings
Everyone invited to post her/his ideas related to the editor. Please also provide which editor module is affected.
Good suggestions, would be really nice to see them in LotV. I have a few too.
Data Editor:
UI Editor (or generally UI):
A Scrolling dialog (list box doesn't work that well)
Just simply giving us simple scroll wheel detection in the same way as all the other mouse events like pressing/clicking/releasing left/right mouse buttons would be great.
Us map makers can take it from there.
Letting us see all the "hidden" functions would be good too.
Ability to add team colours and decals without modifying existing ones.
http://www.sc2mapster.com/assets/nolanstars-textures/
Be sure to check out the extension mod: Hots Custom Map support on NA and EU, Despite the name it greatly expands the roster of options for the default 3 races and is updated all the way to NCO.
If I was still a mapmaker, I'd be happy to have these changes:
Data editor
Triggers
@nolanstar: Go
They already released Art Tools for this kind of stuff.
what exactly is the purpose of this? or how should it work?
all other suggestions added
@FunkyUserName: Go
Find my map named Architestruction on bnet. After playing it once, you'll have many map ideas, but only to realize, that physics only work on actor side, and we can't get coordinates of a model, moved by a force. Than you'll understand what I mean.
Mover, that acts like a physics based actor, but actually changes unit's coordinates. It will open a huge universe of physics based gameplay features for mapmaking.
Also, you added "camera height" in your list, while (I think) camera height and unity height planes are different planes.
@Zolden: Go
I think they mean being able to add additional player colour and decal options in the lobby without replacing default ones.
@Zolden: Go
i remember it, it was featured here, i was pretty impressed by the video (one of few i actually watched). added it to the list
Bad programming practice. Modern programmers try to avoid using jump statements because they cause all sorts of problems including making code slower by disabling various optimizations. Use the appropriate flow control statements rather as they are not only more readable but also more optimizer friendly.
Observers are meant to do as the name says, observe. They are not meant to have a physical presence in the game with regard to triggers. Any form of physical presence can result in problems with replay determinism.
They are incomplete in SC2 2.0 from what I can tell. The main problem currently is data management (eg TriggeringPlayer) which is unsupported resulting in all kinds of problems when using them. In Heroes of the Storm (and SC2 3.0?) they added natives that allow you to transfer mappings from a local data table to the local data table of the resulting event thread.
The idea behind them is that you can create custom event situations and register an unspecified number of triggers to them. For example a custom map might have a "player reaches new age" event when trying to simulate aging up such as used by the Age of Empires and Empire Earth 1 series. This is great for custom mods and libraries because it allows code extension without having to modify existing code (good interface practice).
If you read my previous postings on the subject you would understand why they are just not possible. As long as you use some form of non-standard protection system (eg ImperialBank) then you already stop all the child hacker problems which are the main source of grief. If the odd hacker such as myself then manages to generate a code the damage is so minimal that you can write it off along with map hacks and other forms of cheating outside your control. The best protection from hacking is making it so people do not need to hack, be reasonable with what you expect from players and chances are most will never even think of hacking in the first place.
As far as I can tell the Game UI and custom dialogs use the same render engine so this request makes no sense. You can probably achieve what you want by hooking a custom UI element to the game UI (part of them) rather than above it (part of something displayed above). For example one can change the resource icons with triggers dynamically during runtime.
You are under estimating how difficult Picture in Picture is from a game engine perspective. There is a reason Portal was so amazing at the time it was released. You also do not want to encourage people to use such functionality as it will not work on lower visual settings and most certainly will create a lot of performance problems.
Should be more like "Allow pathfinder to support bigger map sizes". It is possible to get WC3 override sized maps however the path finder does not work.
These features are in Heroes of the Storm so will likely find their way to StarCraft II 3.0.
Being resolved in a different way.
Not possible due to how they operate. The mesh based pathing system only supports triangles in a specific structure.
Probably will be provided outside the editor.
Need to elaborate as I have not run into bugs using them.
Which did not work too well if I recall. Most of them increased the base regeneration by a percent and not the current regeneration (buffs/atttributes included).
Possible a SC2 3.0 feature. Heroes of the Storm does this somehow.
You are missing all the really important ones...
i do not mean a GoTo. i want to right click a trigger and have a "see in galaxy script"
in my map observers cannot observe because they dont see world tooltips. they shall not interact in anyway that would influence the game
yeah i want them finished too
well yeah having a own signature prevents the kids from hacking it, that's true. i heard they are going to implement server-side banks.# any map that saves progress is prone to hacking and i dont want to make maps that do not save progress.
if you create dialogs with triggers they are always rendered above the GUI, no way to make them disappear under the i.e. bottom console (i.e progress bars attached to units)
yeah that's why it is a wishlist, not everything might be implemented but it would be nice to have it.
it doesnt have to be a perfect circle, just the best approx. possible instead of hours drawing them
Going to add these other points now
<</quote>>
In Heroes of the Storm, the crowd control reduction is done via a trigger altering the duration of the behavior when it is added. Then events for behavior additions already exist in SC2. If I remember it correctly, they used new behavior flags to mark behaviors for these purposes (slow/stun).
But, in theory, you could do that in SC2 checking the value of all slow/stun fields, too.
Alternatively, you could use the damage response fields as IDs to store special information, e.g. chance of 0 and some other value in the damage response = 1 could mean that you define it as a slow. A 2 could be a stun, etc. Your trigger would need. Remember that the data editor allows you to add a hierarchy, so you can create new base classes for slows/stuns, so you wouldn't need to alter these values all the time.
Can you try to use a default-observed player (Map -> Players -> bottom left dropdown) and override the value for the player at the start of the map?
That settings makes observers see the game through the player ID. This allows you to show actors / trigger-created text tags / etc, only to observers. They still won't be able to interact, but you will have a way to present information only to the observers.
But this will make the alliance colors (button next to minimap) act differently from the colors of a normal observer, unless the observer spectates a player.
You hook up a frame from the UI and then you create a panel within it. Set the panel's render priority below 512 to make it appear below the elements of the hooked-up frame.
Then you create your dialog's content within the panel instead of the trigger.
To have dialog contents attached to units, you can add a custom status frame to the unit and hook a panel/frame within it.
@Ahli634: Go
Speaking of heroes/SC2 3.0, is the "Shields based on max life" ability in Heroes also trigger-made, or?
The storm shield seems to be what you are referring to. Surprisingly, it seems to work differently than you would assume.
The storm shield adds this buff to the units. The damage seems to be entirely removed (fraction=0) up to a total amount of 20% of the heroes' max life value (ModifyLimitVitalMaxFractionArray).
The UI seems to integrate this buff into the displayed vitality value (life + shields + this?).
Since it's an array, we can assume that this will be possible for life and energy, too.
But this is a bit off-topic in this thread, I believe.
@Ahli634:
Yes and No. This would fulfill a wish of many mapmakers to have more granularity that allows data only solutions. For example, doing that kind of damage response without that vital modify limit forces one to use trigger workarounds. Now it will be trivial to create temporary augmentation to shields. Looking at this, this would be the proper solution to the increase max vital issue that people speak of (where increasing a max vital also heals for that amount).
My one wishlist for the arcade is to just not have to select the mod files each and every time I upload.
@TyaArcade: Go
I had to have to keep doing it earlier, but then fixed it. By uploading the mods in public mode, so they are available for everyone and thus somehow "more visible" for the map, so uploader doesn't throw "mod file not found" error. Maybe "use latest version" option is required too, or it's only for the case where you just updated mod's new version, and don't have to select it again.
@Zolden: Go
Does this work if you upload to all 4 regions at once or do you still have to select the mod each time the region changes (eg upload to us, select mod, change region to eu, re-select mod)?
Because that would be so damn nice.
for one of my maps i dont have to do it for EU and NA, but for SEA and KR with the exact same settings