StarCraft® II

SCII Editor: Suggestions & Improvements Thread

(Sticky)

Developer
Posts: 236
08/22/2012 06:30 AMPosted by Khalanil
Could we get GUI support for more than 4 command cards? I know for a certainty that it's possible to get at least 5 using XML (and I've heard it's possible to have up to 16). The only problem with that is that once 5+ command cards are implemented via XML, you can't access the command card field using the GUI unless you want your command cards past card 4 to be wiped. Basically, this would get the GUI's functionality to match what you can do using the XML view.


This should be added in a future patch. Thanks for mentioning it.
Reply Quote
Posts: 129
Suggestion:
(Modification) Behavior: Conjoined
- Add "Shared Experience"
Reply Quote
Posts: 49
I'm currently making a city map which means i need to make accurate sidewalks for certain roads. To show you what i meant by "city map" and "accurate sidewalks," see the image below.

http://i.imgur.com/B497W.jpg

As you can see, the road (and therefore the sidewalk) are well defined. It would be nice to have a snap to grid tool for terrain brushes. And, it would nice have a way to define the snap amount (i.e. snap by 0.20 units).

The tool would greatly decrease the creation time of these discrete sidewalks. Furthermore, it would improve the accurately of creating such sidewalks. Of course, the benefits are not limited to just sidewalks. Any terrain-er wanting to create discrete/accurate terrains will find this tool to be of great use.

--- Illustration of the problem ---

http://i.imgur.com/ewb7Q.jpg

In the first image, we want to create a sidewalk along the diagonal road.

In the second image, we created the sidewalk using the diamond shape and paintbrush style options. However, you'll noticed that some errors were made: circled in red. Fixing these errors can take a significant amount of time when you have 20+ sidewalks to make. These errors take even longer to fix when you have curved sidewalks. Spending about 1-3 hours on a long curved road is quite normal.

Ideally, when a snap to grid is enabled, the brush outline in the 3rd image will not move with the cursor until the cursor gets close to an adjacent "snap node." The 4th image shows how the brush outline follows the cursor when the cursor is slightly off of the concrete diamond texture's center.

------------------------------------------------------------------------------------------------------------------------------

Another nice feature to have is to be able to precisely define a road node.

http://i.imgur.com/5hu5v.jpg

Currently, if you double click on a road node, you get the second image. It would be appreciated if the 3rd image pop-up instead. Obviously, if a road is poorly defined, the sidewalk's accuracy may also suffer from the road being slightly off.
Edited by Tam on 8/24/2012 3:09 PM PDT
Reply Quote
Posts: 1,720
I have another one.

There are many cases where I am referencing variables but one or more of the indexes I don't care about.

In the editor that means I run to have the function run through every single index or integer until it finds the one I'm looking for. This is very inefficient.

If it is possible to add a function that pretty much says "any integer" it would be extremely helpful.

So lets say I have complicated UI and I have the following variable:

RandomButton[7][14]

The 14 is the 14 players. Some functions may need to recall it specifically and others only care about the 7 portion of it. For the second group that means I have to use a "For each integer" and have it look through all 14.

So I guess the final function I'm suggesting will look like:

"Any integer with range A to B". So if I only care about half the players, say players 8-14 but I don't want it to run for players 1-7.

Coding wise I would think (I'm novice though) that you are applying a condition to an array index instead checking every single one of them.

I have had many instances where I'm coding something in triggers and that function would be perfect for what I need. But instead I have to recode whole sections of it to something that I would think be less efficient.
Reply Quote
Posts: 2,515
RandomButton[7][14]

The 14 is the 14 players. Some functions may need to recall it specifically and others only care about the 7 portion of it. For the second group that means I have to use a "For each integer" and have it look through all 14.

So I guess the final function I'm suggesting will look like:

"Any integer with range A to B". So if I only care about half the players, say players 8-14 but I don't want it to run for players 1-7.

You can use "For each integer from A to B". Since this is referencing players, you could also use "For each player in player group". If you're wanting to reference specific integers which aren't necessarily in a range but can't be fit into values 0-15, you could also set up an array of integers though slightly more effort. Would any of these solve your problem, or is there something further you're needing?
Reply Quote
Posts: 1,720
RandomButton[7][14]

The 14 is the 14 players. Some functions may need to recall it specifically and others only care about the 7 portion of it. For the second group that means I have to use a "For each integer" and have it look through all 14.

So I guess the final function I'm suggesting will look like:

"Any integer with range A to B". So if I only care about half the players, say players 8-14 but I don't want it to run for players 1-7.

You can use "For each integer from A to B". Since this is referencing players, you could also use "For each player in player group". If you're wanting to reference specific integers which aren't necessarily in a range but can't be fit into values 0-15, you could also set up an array of integers though slightly more effort. Would any of these solve your problem, or is there something further you're needing?


Thats still running through every value I'd rather not do that.
Reply Quote
Posts: 2,515
08/25/2012 02:29 PMPosted by FockeWulf
Thats still running through every value I'd rather not do that.

Your example was wanting to run players 8-14. If you use "For each integer from 8 to 14", does that not do exactly what you're wanting?
Reply Quote
Posts: 1,720
08/25/2012 04:31 PMPosted by Khalanil
Thats still running through every value I'd rather not do that.

Your example was wanting to run players 8-14. If you use "For each integer from 8 to 14", does that not do exactly what you're wanting?


No what you are saying means I have to pick and test each specific one.

Lets say I have a variable that you want to test. Say:

A[20][14]

So if I wanted to pick the first index of 5 for all players I'd have to use an array.

If I can do it like this:

Set "A[5][Any/All 1 to 14]" == ABC

instead of

For each integer "tempInt" from 1 to 14 do Actions
Set A[5][tempInt] == ABC

There have been many, many times where it would have been much easier and efficient to be able to refernce more than one index without an array (although it would effectively array anyways). The biggest case is conditions.

If I have an array I'm checking thats like A[20][8][14] but I only want it to be for A[20][1-4][1-8] I have to specifically define each value and thats 4x8 so 48 seperate conditions inside an OR function that I have to put in there. Actually wait scratch that thats actually 20x4x8 seperate conditions. Or I have to use 3 seperate for each integer functions to check all of those.

Whereas if I could just use:

If
A[Any][Any 1-4][Any] = True
Triggering player < 9

then actions it would be much easier and I would think much more efficient and certainly much easier to write.
Reply Quote
Posts: 1,720
I've got another one.

Making dialogs takes a very long time. The longest part is the testing to see what got put where. We have to input a raw number and then actually start the game to see where it ended up.

If there was a way that we could input our script and see a visual of where the item was going as well as size, color, etc without having to start the game (a repetitive task that gets old very fast) it would be a BIG help.
Reply Quote
Posts: 130
Could we get support for publishing maps with multiple official authors? I imagine I'm not the only one to work equally with someone on a map (in progress, not released yet) and wish we could both show up as authors in the battle.net ui. It would also be useful for the occasional map maker who wants to pass the torch.
Reply Quote
Posts: 353
08/25/2012 02:06 AMPosted by FockeWulf
But instead I have to recode whole sections of it to something that I would think be less efficient.


What you seem to be asking for is a shorthand way of referencing many elements in arrays to set the value or query the data. Behind the scenes it would be executed the same way as having several FOR loops so it would be more efficient to write the code but in terms of execution it would still take the computer the same amount of time to process the commands. Just clearing that up as when you talk about efficiency I'm not sure which one you meant.

If I HAD to do this stuff regularly and it was getting to be a pain then I guess you could do something like create an iterator.

For example you could create these record types:



tuple
{
int start;
int end;
}

iterator
{
int x;
int y;
int z;

tuple ranges[3]
}


and the functions called "set_iterator" and "iterate":

function set_iterator(iterator i, tuple x_range, tuple y_range, tuple z_range)
{
x = x_range.start;
y = y_range.start;
z = z_range.start;

set i.ranges[0] = x_range;
set i.ranges[1] = y_range;
set i.ranges[2] = z_range;
}

boolean function iterate(iterator i)
{
if i.z < i.ranges[2].end
i.z = i.z + 1;
return true;
z = i.ranges[2].start;

if i.y < i.ranges[1].end
i.y = i.y + 1;
return true;
y = i.ranges[1].start;

if i.x < i.ranges[0].end
i.x = i.x + 1;
return true;
x = i.ranges[0].start;

return false;
}


That might be a lot of initial work but you could then put that into a library and import it into any map you make and then whenever you want you could use the code


VARIABLES:
complex_array[30][30][30];
iterator i;

CODE:

//set all elements in this range to the number 42
set_iterator(i, (1,30), (3,17), (4, 8))
while iterate(i) == true
{
set complex_array[i.x][i.y][i.z] = 42;
}

//look for values < 7 in this range
set_iterator(i, (6,20), (1,30), (2, 23))
while iterate(i) == true
{
if complex_array[i.x][i.y][i.z] < 7
break;
}


which is much neater and easier to write.

for a more complex "set_iterator" function you could even have code like

//set all elements in this range to the number 42
set_iterator(i, "ALL", "3", "2-17")
while iterate(i) == true
{
set complex_array[i.x][i.y][i.z] = 42;
}

Edited by turtles on 8/26/2012 4:28 PM PDT
Reply Quote
Posts: 17
More Cliff Levels.

My suggestion is quite simple I think, since it was already done in the Warcraft III editor.

Add more cliff levels, right now you can only step the cliffs up by 2. Several more would be amazing because right now 2 limits what you can do for; mini games, arenas, battlegrounds, etc. My map and other arena maps I have seen, would flourish from having extra levels.

Thank you very much, would be amazing to see this in the HotS Editor.
Reply Quote
Posts: 1,720
I've got another one.

Could it be possible to have more than one TurretZ attachment per model?

Because with stuff like this: http://i1088.photobucket.com/albums/i333/marshallwellington/Terrain023.jpg it would be much easier if we could just combine the models.

A fav is a tank with 2 turrets for modern warefare maps.

I've noticed a sigificant performance hit when actor attachments have to be used vs combined models. So I'd perfer the latter but my tests with leru's tools showed that you can only use 1 turretZ attachement in a model.
Reply Quote
Posts: 351
In-game 3D rotation? Like with triggers? There's the actor message rotation but that doesn't do anything. An easy fix would be to make the certain fields in the site operations actor type editable through the catalog action, I think. Or make the actor rotation message do something.
Reply Quote
Posts: 130
08/28/2012 12:07 PMPosted by Cherry
In-game 3D rotation? Like with triggers? There's the actor message rotation but that doesn't do anything. An easy fix would be to make the certain fields in the site operations actor type editable through the catalog action, I think. Or make the actor rotation message do something.
The actor rotation message takes a vector as its argument (except that it sometimes seems to auto-expand this into two vectors). I was confused by this for a long time (since it's not indicated anywhere), but after I figured as much out I found it usable.
Reply Quote
Posts: 351
08/28/2012 02:37 PMPosted by TheFed
The actor rotation message takes a vector as its argument (except that it sometimes seems to auto-expand this into two vectors). I was confused by this for a long time (since it's not indicated anywhere), but after I figured as much out I found it usable.


So its not by the same format as through data? Also, from what I understand from what I've read about when it has worked, it resets when the unit moves. So there's still some work that needs to be done on it.
Reply Quote
Posts: 17
More Cliff Levels.

My suggestion is quite simple I think, since it was already done in the Warcraft III editor.

Add more cliff levels, right now you can only step the cliffs up by 2. Several more would be amazing because right now 2 limits what you can do for; mini games, arenas, battlegrounds, etc. My map and other arena maps I have seen, would flourish from having extra levels.

Thank you very much, would be amazing to see this in the HotS Editor.


In addition to the cliff levels, it would be nice to not be limited to 8 textures, again if someone is making an arena game with multiple arenas in the map, the variety of have one arena jungle, the other snow, and the other lava would be amazing.
Reply Quote
Posts: 351
Functionality to get the X and Y UI offset of the mouse cursor with the Mouse Moved action from different points, like center, left, top right, etc.. Right now, its the offsest from the top left of the screen but because not all players use the same resolution it makes it so its hard to do somethings.
Reply Quote
Posts: 130
The Fog of War object type seems a little underpowered. The Color property only appears to apply to the minimap. An alpha value of 255 does not appear to be truly opaque, and even though true opacity might rarely be desired, I see no reason to exclude the flexibilty. Most fields seem to apply only to either unexplored or explored but non-visible terrain, without a counterpart in the other category. A fairly simple-seeming change would be to use a separate FoW object for explored and unexplored masks, and adjust the FoW object definition slighty, to enable standard functionality with the new system. I think I would already find this a lot more flexible, though allowing the Color field to apply to the main map would strike me as appropriate.

To quickly answer something unrelated,
08/29/2012 09:08 PMPosted by Cherry
The actor rotation message takes a vector as its argument (except that it sometimes seems to auto-expand this into two vectors). I was confused by this for a long time (since it's not indicated anywhere), but after I figured as much out I found it usable.


So its not by the same format as through data? Also, from what I understand from what I've read about when it has worked, it resets when the unit moves. So there's still some work that needs to be done on it.
Well, no, I was referring to my experience with sending the message through data. I don't think the trigger would be different. However, I believe we should not discuss this further in this thread, as it is not very on topic anymore.
Reply Quote
Posts: 333
I would love a function to get an actor's unit or hero image, that way I can display a little icon in dialogs of whatever heroes the players have chosen.

Also, could you make the event "A player pings the minimap" set whatever player who pinged to the "triggering player"?
Edited by composure on 9/1/2012 5:21 PM PDT
Reply Quote

Please report any Code of Conduct violations, including:

Threats of violence. We take these seriously and will alert the proper authorities.

Posts containing personal information about other players. This includes physical addresses, e-mail addresses, phone numbers, and inappropriate photos and/or videos.

Harassing or discriminatory language. This will not be tolerated.

Forums Code of Conduct

Report Post # written by

Reason
Explain (256 characters max)
Submit Cancel

Reported!

[Close]