• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Need Info] Editor Limitations?

Status
Not open for further replies.
Is there a list somewhere with alot of the limitations for Sc2? A few Questions
Heres a few basics i've got/ (note: I'm not asking How, just whether you believe it possible/reasonable to do)

I know maps can save certain data across games, but what kind and how much I would like to know (I assume variables, is there a limit?)

I've seen custom UI's, however how customized can you go? For example, could you adjust the command card to 9x9, or create a UI similar to D2's Inventory screen.

Is there an equivalent to gameplay constants? (I looked and couldn't find anything) Is there a way to change max food to 10,000?

Can you modify any Object editor field in-game via scripting?
Can abilities, have a resource cost other than energy (life, minerals, gas, shield?)

Can all abilities have a counter on them like spider mines, that gains charges over time?

Is there an equivalent to the spellbook in wc3.

Can the camera, and mouse be tracked?

I would apreciate any other limitations you know that could seriously break a games development..
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,188
I know maps can save certain data across games, but what kind and how much I would like to know (I assume variables, is there a limit?)
It is done by the bank system. This stores data of certain primitive types and units (it will store properties of the unit such as items etc). This data can come from variables or be returned by other functions. When returned by the load function it can be stored in variables or passed directly to functions.

The limit on the amount of data you can store is defined by the amount of time BattleNet 2.0 is willing to allow you to upload banks and distribute them. This means that the limit is lower the more players in the game. Something simple like a WC3 style code is trivial, it is only a problem if you plan to store a few hundred or thousand data elements.

I've seen custom UI's, however how customized can you go? For example, could you adjust the command card to 9x9, or create a UI similar to D2's Inventory screen.
I think the command card is hard coded in size (the data does not support more than the standard number of buttons). However you can relocate elements of the command card freely as well as move every UI element from minimap to control goups anywhere you want. A D2 style inventory system is possible with some trigger support, check out the map "Dia blo" which recreates Diablo I to some degree which has a system similar to what you want.

Is there an equivalent to gameplay constants? (I looked and couldn't find anything) Is there a way to change max food to 10,000?
In the data editor to some degree under the data type for constants and race. You can always use triggers if nescescary. I know you can exceed 300 supply as I have seen it in some maps.

Can you modify any Object editor field in-game via scripting?
Yes you most certainly can using the catalog natives. Even on a player by player basis. However you are limited to only "upgradeable" fields such as those upgrades can affect.

Can abilities, have a resource cost other than energy (life, minerals, gas, shield?)
Yes they can. You can even make them cost 70% life, energy and shield of a unit.

Can all abilities have a counter on them like spider mines, that gains charges over time?
Yes most abilities support charges, those that do not are more obscure and probably do not need charges.

Is there an equivalent to the spellbook in wc3.
No. You can give units multiple command cards however (up to 4?, of which one is the default). This is shown off with workers for construction of different building types (basic and advanced).

Can the camera, and mouse be tracked?
Yes they can. The camera is even tracked automatically as an anti-cheat measure (it is dumped in replay files). The mouse can be tracked using triggers however it will increase network bandwidth and will always have a lag associated with it (network latency so it will always report the mouse position a fraction of a second later than when it was actually there from a user perspective).

I would apreciate any other limitations you know that could seriously break a games development..
Map size is limited to that which you can choose in the editor. Trying a JNGP style hack to make maps bigger than that limit results in broken path finding behaviour in game (the game physically cannot support larger).

The reals used by trigger script are actually 32 bit fixed point. This means that they have considerably less range than the integer type. Trying to convert a large integer to a real will result in an overflow and probably some garbage negative number. The only work around to this is to store both an integer and a real for large fractional numbers. As a result the maximum numbers you can represent in game are defined by the c/c++ int32_t. Larger numbers will need a chain of integers and your own interpretation functions.

You are limited in the amount of variables and script your map can have. This limit is huge so mostly not an issue but will cause problems if you are using huge arrays of data (several megabytes).

There are no dynamic arrays in trigger scripting. All arrays have to be declared with a size and attempts to access indices outside this size range will throw a run time scripting error (game will still run, but an error will be logged).

There is a limit to the number of dialog elements that can be attached to the trigger script system at the same time. Using templates and only attaching when required can work around the limit to some extent.

The smallest quantisation of deterministic time in SC2 is 1/16 of a game second. Out side of visual effects (actor system) it is not possible to run anything faster than this. It also means that the maximum attack speed, periodic effect and trigger wait/timer is limited to 1/16 of a game second.

There is a limit to how much data you can publish on your account. You can work around this by using public mods published on other player's accounts.

The game does not natively support complex armor types and damage types like WC3. It is possible to simulate with a variety of behaviours but this is quite a hassle to do.

Both items and missiles are units. It is perfectly valid to equip a marine if it is made into an item (it can even move to you!) and also to fire a missile that itself fires more missiles. Although not really a limit, it does mean that care must be taken as to ownership and vulnerability of items.

The game is limited to at most 14 human players, slot 0 and 15 are reserved neutral.
 
Level 29
Joined
Mar 9, 2012
Messages
1,557
I think the command card is hard coded in size (the data does not support more than the standard number of buttons). However you can relocate elements of the command card freely as well as move every UI element from minimap to control goups anywhere you want. A D2 style inventory system is possible with some trigger support, check out the map "Dia blo" which recreates Diablo I to some degree which has a system similar to what you want.
Actually you can do pretty much whatever you want with the UI.

The game does not natively support complex armor types and damage types like WC3. It is possible to simulate with a variety of behaviours but this is quite a hassle to do.
Actually, the weapons can have modifiers like +10 against light, -5 against massive etc. Those are unit classifications like Light, Massive, Biological. So to make a piercing damage arrow for ex. you give grunt Light classification and tell on archer's arrow weapon to deal +dmg against any unit with light and- against units with medium, heavy. etc. This way you can even fine tune each unit individually, so a crossbow can have higher armor penetration than a bow, fe. again.
You can even differentiate between different types of magic dmg using this and make fe. lightning attacks hit harder on water element creatures.

Both items and missiles are units. It is perfectly valid to equip a marine if it is made into an item (it can even move to you!) and also to fire a missile that itself fires more missiles. Although not really a limit, it does mean that care must be taken as to ownership and vulnerability of items.
Missile-Ception! Infinite cluser nuke game crash. <3
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,188
Actually, the weapons can have modifiers like +10 against light, -5 against massive etc. Those are unit classifications like Light, Massive, Biological. So to make a piercing damage arrow for ex. you give grunt Light classification and tell on archer's arrow weapon to deal +dmg against any unit with light and- against units with medium, heavy. etc. This way you can even fine tune each unit individually, so a crossbow can have higher armor penetration than a bow, fe. again.
This is not an armor type system and is a damage modifier system. All units take damage computed depending on their classification flags. The thing is a unit can belong to more than 1, so you can have a light massive armored mechanical robotic psionic unit as an example. It is also not % damage related.
You can even differentiate between different types of magic dmg using this and make fe. lightning attacks hit harder on water element creatures.
No you can just make them hit harder against units of a certain classification. You could then make a unit that is both water and fire since the classifications are just flags. You are also limited in number of classifications. Again, it is not possible to easily recreate WC3 armor types, you can with some hackery but not easily.
Are multiplayer campaigns possible? As in, carrying several players across a series of maps.
Yes and no.

Yes you can carry progress across multiple sessions and even different maps. No you cannot force the next map in a series to start from within a session, the players will have to leave the game, host the next map, all join and then start.

Banks are shared between all maps from the same publisher. So you can retain progress across multiple maps to from a series. If players form a party and stick together then they can play it like a sequential campaign. However if new players join half way (common for public sessions) you will need to have some appropriate method of handling them so as not to prevent them from playing. A good approach would be monster power style Diablo III play where by the difficulty across all missions is flat-ish and depends on a voteable setting. Since everything scales this means people who progressed in series can play at harder settings than new people yet all maps still can be attempted without prior progress. This is recommended because the competition in arcade is such that you cannot afford to reject any players.
 
Ah thanks very much, that answered a lot of my first tier of questions, and it might be worth learning sc2s editor afterall :p.

@complex Armor systems, I think he was referring to % based armor and whatnot. So-long as sc2 has better damage detection than warcraft 3 did, it shouldn't be all that hard to code your own armor system. (so long as you can detect how much armor/attack bonuses a unit has)
But yea it would be really nice if this was included by default

@delay with mouse tracking; does this mean something like a proper fps is out of the question?, also is full keyboard tracking possible, and how responsive is it? (wasd movement ideal?)

@multiplayer campaigns;
I suspect if you can transfer data across multiple maps, that it would work with multi-player as-well..
Is there a way to store/access global data from a map? IE a dynamic system, adjusting unit/item cost based on how frequent they are used in a game?

Also can any map be published to the arcade, for anyone without sc2 to play? correct?

However if new players join half way (common for public sessions) you will need to have some appropriate method of handling them so as not to prevent them from playing. A good approach would be monster power style Diablo III play where by the difficulty across all missions is flat-ish and depends on a voteable setting. Since everything scales this means people who progressed in series can play at harder settings than new people yet all maps still can be attempted without prior progress. This is recommended because the competition in arcade is such that you cannot afford to reject any players.

From this I gather, that its not a limitation, but rather something the developer would have to account for.
so your saying the quantity of players, means you shouldn't try to stop a level 10 player from joining a game with a bunch of level 30's, without some sort of scaling mechanic? In an RPG scenario I could see giving the level 10 a warning that he isnt the required level, and the option for an instant boost to the required level, and maybe some free 'default' gear?

Or are you saying its impossible to draw data from multiple players, meaning he would start at level 0, even if he had previously gotten to level 10 on his own?
 
Status
Not open for further replies.
Top