• 0

    posted a message on SC2 art tool - download

    Web archive is your friend:

     

    https://web.archive.org/web/20181005154317/http://us.battle.net/sc2/en/blog/12444476/

    http://dist.blizzard.com/sc2/SC2ArtTools/SC2ArtTools_x86.zip
    http://dist.blizzard.com/sc2/SC2ArtTools/SC2ArtTools_x64.zip
    http://dist.blizzard.com/sc2/SC2ArtTools/SC2ArtToolsDocs.zip

    There's also a build for max 2016 that Blizzard half-officially released this year:

    https://cdn.discordapp.com/attachments/271702283203510273/583000414404739081/Sc2ArtTools_3dsmax2016.zip
    https://cdn.discordapp.com/attachments/271702283203510273/583018812383952929/Starcraft2ArtTools_ClothSimulationDoc.pdf
    https://cdn.discordapp.com/attachments/271702283203510273/585961586368184332/Star2_SimulateRoughness.zip

    And probably best import plugin to go with it: https://github.com/CaptainD001/M3_Import

     

    Posted in: Artist Tavern
  • 0

    posted a message on Get Upgrade Name in Galaxy Script

    Little late with the response, but..

     

    Upgrade names (and not only) are in GameStrings.txt. For instance: https://github.com/SC2Mapster/SC2GameData/blob/36206ed2977af377c290b5b6034f32237af4d67d/mods/liberty.sc2mod/enus.sc2data/LocalizedData/GameStrings.txt#L9721

     

    To reference the name you've to use StringExternal function.

     

    s = "UpgradeID";
    StringExternal("Upgrade/Name/" + s);

     

    Posted in: Galaxy Scripting
  • 0

    posted a message on [Dependencies] How is the dependency tree resolved?

    I've been wondering about the same in the past. And have failed to find any relations between the built-in mods in data files as well. At this point I'm fairly sure that these relations are hardcoded in the executable. Which can actually be semi-confirmed by dumping strings from .exe:

     

    ▶ strings SC2.exe | rg -C 2 Liberty
    Mods/Core.SC2Mod
    Mods/Challenges.SC2Mod
    Mods/Liberty.SC2Mod
    Mods/LibertyMulti.SC2Mod
    Campaigns/Liberty.SC2Campaign
    Campaigns/LibertyStory.SC2Campaign
    Mods/Swarm.SC2Mod
    Campaigns/SwarmDev.SC2Campaign

    ...

     

    etc.

    Posted in: Miscellaneous Development
  • 1.29742144717169

    posted a message on SC2Layout - Visual Studio Code extension

    Hey, I've got a project I'd like to share, which greatly streamlines the process of writing layouts for SC2.

     

    Visual Studio Code extension introducing support for SC2Layout language.

     

     

    More about its feature set: 

    Github: https://github.com/Talv/sc2-layouts

    VSC marketplace: https://marketplace.visualstudio.com/items?itemName=talv.sc2layouts

     

    FAQ.

     

    1. Is Visual Studio Code free?

     

    Yes, it's completely free and open source. It should not be mistaken with Microsoft Visual Studio which is entirely different product.

     

    Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux.

    https://code.visualstudio.com/docs

     

    2. How long does initial setup take?

     

    About 5 minutes, maybe less :)

    - Install VSCode from https://code.visualstudio.com/

    - Install SC2Layout extension from https://marketplace.visualstudio.com/items?itemName=talv.sc2layouts

    - Save your map files as ".SC2Components".

    - Open map folder in editor as new workspace.

    - You're set!

    Posted in: UI Development
  • 0.951068228807719

    posted a message on .obj file requested for Adept portrait mesh

    In reply to DaveSpectre122:

    In reply to WingedArchon:

    Problem with adept portrait, and some new portairts in general is that they use lens flares, which m3addon couldn't handle due to errors in m3 parsing - there was some most likely totally incorrect string reference to sourceFilePath. Perhaps it was a thing in older models? Though, I don't know what could this file represent, because the only external sources m3 specifies are textures. 

     

    Anyway, couple days ago I made a fix for that: 
    https://github.com/Talv/m3addon/commit/b97a59115687e95762451ba3e396d4abba8b3847

    maybe it will be an use for others.

     

    That said more up to date version of m3addon can be downloaded here: https://github.com/Talv/m3addon

    Besides mentioned fix it also includes 2 others to stuctures.xml, that relate to import issues of some new models.

     

    I had some plans to attempt to work on this more and get the plugin into better shape, but sadly I can't find time for this. So all I can do is simple fixes - that is when models cannot be imported at all, or are imported significantly incorrectly. Such issues are often relatively easy to track down.

     

    Export related issues are much harder.. ideally plugin should be updated to export models in newest m3 version format, so that it can support some of the fancy stuff like lens flares, reflection materials etc. Sadly, that requires considerable research on my side.. but maybe someday.

     

    Anyway, if you encounter some import related issues let me know - I'll see what I can do. I'd like to keep this plugin alive.

    (I rarely log into sc2mapster.com these day, but I hang out in its Discord channel - easiest way to reach me.. filling bug report in github - issues tab; works as well).

    Posted in: Requests
  • 0

    posted a message on Is it possible to create charts?

    WCS GameHeart mod is the only map/mod I'm aware of that uses this frame. Would be probably useful to analyze it and make actual example map. As there's very little information regarding it.

     

    This is one of use cases:

     

    As far as API goes, here's list of UI frames for building graphs:

    http://mapster.talv.space/layouts/frame )

     

    To provide data sets it seems you need to use this function:

    http://mapster.talv.space/galaxy/reference/dialog-control-add-data-point

     

    Posted in: Triggers
  • 0

    posted a message on Tutorials

    List of all available frame types, fields, attributes etc. Dumped from the 4.0 build:

    http://mapster.talv.space/layouts/frame

     

    Posted in: UI Development
  • 0.955042527339004

    posted a message on A number of questions about Trigger related issues

    I gotta ask you something: have you considered making separate thread for every seperate issue you're dealing with? Because you're mixing various topics, that are often hardly related within a single thread. By a result you're limiting yourself to help from people who are capable of keeping up with it - apparently only DSE.

     

    Not to mention in future other people might encounter same problems. When they'll attempt at looking up some info about it, they'll either not find it, as posts are not indexed as good as threads - title is always most important keyword. Or they'll have to crawle through all the irrelevant stuff before getting to the actual answer.

     

    Although if goal of this thread is some kind exclusive mentorship between you and DSE, then I guess that's okayish - assuming he's fine with doing so.

     

    (Also these are not even triggers questions, but Layouts / UI.)

     


    2.

     

    Anchors control position, and can also control width/height, if these are not set explicitly. It is in fact covered in tutorial you've linked. For more detailed explanation lookup this document:
    https://docs.google.com/document/d/1Cs6hjFKgf9xKO_d-zAPwGgRzOZpwLkAqUw5Zbte7Tdk/edit

    It might be also in the Wiki, bout couldn't find it - this was provided by @rtschutter IIRC.

    I don't know if there's anything special about Portraits - if you've some issue regarding it, just post snippet of your code.

     

    5.

     

    What is that even..? ConsoleSkinCacheFrame is different thing. It appears to be used as a preview frame within BattleUI (game menu) - Collections/Consoles. It has no influence on actual ConsolePanel present in game.


    Since introduction of custom Console skins from Blizzard there was small overhaul in regards to how Console panels are applied, but you can still change the default model the same way as it was done in the past - by modifying model links within Assets.txt.

    This is default Console definition within data:

     

    <CConsoleSkin default="1" id="ConsoleBase_Default" parent="ConsoleBase">
        <Default value="1"/>
        <Name value="ConsoleSkin/Name/Default"/>
        <ReleaseDate value="7/27/2010"/>
        <MinimapPanelModel Model="@@UI/ConsoleModelMinimapPanel"/>
        <InfoPanelModel Model="@@UI/ConsoleModelInfopanel"/>
        <CommandPanelModel Model="@@UI/ConsoleModelCommandPanel"/>
    </CConsoleSkin>

     

     

    @@UI/ConsoleModelMinimapPanel means that model link will be lookedup in Assets.txt with race id as postfix:

     

    UI/ConsoleModelCommandPanel=Assets/UI/Console/Terran/ConsoleTerran/ConsoleTerran_02.m3
    UI/ConsoleModelInfopanel=Assets/UI/Console/Terran/ConsoleTerran/ConsoleTerran_01.m3
    UI/ConsoleModelMinimapPanel=Assets/UI/Console/Terran/ConsoleTerran/ConsoleTerran_00.m3
    UI/ConsoleModelCommandPanel_Prot=Assets/UI/Console/Protoss/ConsoleProtoss/ConsoleProtoss_02.m3
    UI/ConsoleModelInfopanel_Prot=Assets/UI/Console/Protoss/ConsoleProtoss/ConsoleProtoss_01.m3
    UI/ConsoleModelMinimapPanel_Prot=Assets/UI/Console/Protoss/ConsoleProtoss/ConsoleProtoss_00.m3
    UI/ConsoleModelCommandPanel_Terr=Assets/UI/Console/Terran/ConsoleTerran/ConsoleTerran_02.m3
    UI/ConsoleModelInfopanel_Terr=Assets/UI/Console/Terran/ConsoleTerran/ConsoleTerran_01.m3
    UI/ConsoleModelMinimapPanel_Terr=Assets/UI/Console/Terran/ConsoleTerran/ConsoleTerran_00.m3
    UI/ConsoleModelCommandPanel_Zerg=Assets/UI/Console/Zerg/ConsoleZerg/ConsoleZerg_02.m3
    UI/ConsoleModelInfopanel_Zerg=Assets/UI/Console/Zerg/ConsoleZerg/ConsoleZerg_01.m3
    UI/ConsoleModelMinimapPanel_Zerg=Assets/UI/Console/Zerg/ConsoleZerg/ConsoleZerg_00.m3

     

    All you need to do is create custom Assets.txt that would override pathes above and place it in Base.SC2Data/GameData in your map.

     

    6.

     

    Nope. Models can indeed be loaded at any stage within game, without preloading. But regardless to that they do need to be actually downloaded.

    This is something Blizzard can do, thanks to CASC, but that tech is not accessible to modders/arcade games.

     

    And frankly 650 MB is madness - I wasn't aware you could even upload map as huge as this... I don't know what you're developing but I cannot thing of anything that could justify the size. Keep in mind that not everyone lives in places where high speed connections are easily accessible. Take me as an example, currently I'm stuck with ~6Mbit DL. Which means I need like 15 minutes to download something as big as this.
    I'd consider 100MB to be a borderline. Once you hit that limit, you need to take a closer look at your assets and how can you reduce the final size of an map.

     

    There are of course some big projects such as Dead Zone ( http://www.moddb.com/mods/dead-zone-hope-lost ) with high amount of custom high quality textures and other assets - where it is inevitable to end up with largely sized maps.

     

    But if you're not developing something like in case above, it's mostly likely effect of bad optimizations on your end. Disabled MPQ compression? Oversized textures? Soundtracks with too high bitrate? etc.

    Posted in: Triggers
  • 0

    posted a message on Pathable teleports

    I'll just leave it here:
    https://www.sc2mapster.com/projects/waygate-system-library

    Posted in: Triggers
  • 0

    posted a message on No way to destroy an actor???

    'No actor' pretty much evaluates to null, so it only tests whether the variable holds a reference, but doesn't check whether this reference is valid.

    You could use "Actor Get Text" to display information about what that actor reference essentially holds.

     

    Also, if you inspect internal implementation of this function:

    actor libNtve_gf_AttachModelToUnit (unit lp_unit, string lp_model, string lp_attachPoint) {
        // Variable Declarations
        actorscope lv_scope;
        actor lv_a;
    
        // Automatic Variable Declarations
        // Variable Initialization
    
        // Implementation
        lv_scope = ActorScopeFromUnit(lp_unit);
        ActorCreate(lv_scope, "SiteHosted", lp_attachPoint, "", "");
        lv_a = libNtve_gf_ActorLastCreated();
        ActorCreate(lv_scope, "ModelHosted", (lp_model), "", "");
        lv_a = libNtve_gf_ActorLastCreated();
        return lv_a;
    }

     You'll realize that it in facts creates two actors, where one is 'SiteHosted', which is some sort of link I assume (not well aware about Actors). Thus by using LastCreated action you only get the referece to ModelHosted. Although this is the essential one in fact, so it surprising if it doesn't respond to 'Destroy' message.

     

    Anyway, you can also utilize actor cheats to get some more information about currently living actors (what could help finding out the cause), i.e.:
    ActorInfoDisplay
    ActorLiveDump

     

     

    Could it be because I'm attaching it to a doodad instead of a unit?

    You should not be capable of doing this, since it would not pass type checking, I'm assuming you're using "Attach Model To Actor". Which should actually work, because it has different implementation (if that's not the deprecated version without postfix '2'):

     

    actor libNtve_gf_AttachModelToActor2 (actor lp_actor, string lp_model, string lp_attachPoint) {
        // Variable Declarations
        string lv_message;
        actorscope lv_scope;
        actor lv_a;
    
        // Automatic Variable Declarations
        // Variable Initialization
        lv_message = ("AttachModel {} ");
    
        // Implementation
        lv_message = ("AttachModel {} " + (lp_model) + " " + lp_attachPoint);
        ActorSendAsText(lp_actor, StringToText(lv_message));
        lv_a = libNtve_gf_ActorLastCreated();
        return lv_a;
    }

     ---

    Oh, wait. I just realized the implementation above uses Message to create the actor, as oposed to "ActorCreate" function. Thus you have to use "Last Created Actor by Message" to obtain valid reference in this scenario.

    Posted in: Triggers
  • 0

    posted a message on Importing .m3 to Blender error

    Uhm, that error doesn't tell a lot - is it a full message you've got? There should be stack trace. (Maybe in console view).

    bpy_struct is like a superclass thing in terms of Blender API for addons.

    Posted in: Artist Tavern
  • 0.960666358167515

    posted a message on [Question] Screenshots are changing tint upon upload. How to prevent this?

    When you're saying you're uploading them, you mean uploading to Battle.net, right? As screenshots for arcade section?
    Actually that would explain something.. because I did notice such nothing for some other random arcade map.

     

    Anyway, it's most likely a flaw in the way Blizzard is processing TGA files. Possibly your TGA images have embedded color map which SC2 can't handle. Or what's more likely it just strips the header that included the color map, without adjusting the image. What in the end may give such effect.

     

    Your options are:
    - use TGA without embedded color map
    - or simply use JPGs.. as they're better suited for this use-case anyway

    Posted in: Artist Tavern
  • 0

    posted a message on UI Error in All Maps
    Quote from Prodigy454 >>
    Quote from XelnagaNaga >>

    Hi, I am still quite new with the editor, just wondering if anyone can help me out with this error message?

     

    UI: File [StandardDialog.SC2Layout] Line [189] Column [9]. Unknown type attribute [Browser] for: [Browser].

     

    I got this message on the debugger colored in dark blue, when i saved my work.

    I was working on data editor and i haven't opened or touched the UI editor.

     

    Will this affect the game in anyways? Publishing?

    Thx

     

    It’s nothing to worry about. Its a blizzard native UI error that we all get.

    ^
    Just ignore it. Maybe Blizzard will fix it eventually.. but it's just annoying at most anyway.
    Posted in: General Chat
  • 0

    posted a message on Triggers that access a global variable (an array of 400 by 400 reals) malfunctioning during multiplayer only

    Forget about limits - there are no limits on anything that would be exclusive to online games. 400x400 array of scalar type like fixed (aka real) is nothing. Whether you actually need this array to achieve what you need is another thing, but let's not focus on this.

     

    I am assuming that global variables are only running in one spot (host? battlenet? Who handles trigger execution logic?

    It seems like you just don't get how SC2 works. It's based on so called deterministic synchrous game engine.. I'd recommend you to read this [1] to get better understanding.


    To answer your question in short - everyone.. that is every client/player connected to the game. Not the battlenet server though. When your friend drops a nuke, he has to process the action on the same terms as you do (over the wire there are transmitted only inputs/commands from each client). Thus both of you use the same global variables to get the same result.
    Perhaps this is what you've missed, when implementing triggers (I didn't try to analyze them).

     

    [1] https://blog.forrestthewoods.com/synchronous-rts-engines-and-a-tale-of-desyncs-9d8c3e48b2be

     

    and that triggers are not multi-threaded (i.e., an infinite loop will freeze the game; the game allows as many CPU cycles to finish trigger loops as those loops require, it does not save pause long loops and resume them later).

    There is multi-threading.. but no the one you'd expect - threads cannot run in parallel. And executions happen in cycles. I'll just link the wiki again, because it explains it better than I would be able to:

    https://en.wikipedia.org/wiki/Cooperative_multitasking

    In case of SC2 context switch can be initiated by Wait function. When supplied with 0.0 it guarantees the thread will be resumed in next game frame.
    And yes, there's a limit of actions VM can perform during one frame. I don't recall exact limit, but you can indeed freeze the game for few secs, before timeout occurs.

    Another thing that makes this hard is the lack of any debugger (that I know of).

    There's one.. kinda obscure, but does the job. In testmode you can open it by typing "TrigDebug". Also it requires game to be in windowed mode. If you want to have it at start of the game then head over to editor preferences -> test document.

    Is there any way at all to open some kind of debug message window DURING MULTIPLAYER and see if the map is generating errors?

    You can setup TriggerDebugMessage to save to log file. Log file will be written anytime you play the game or watch the replay.

    But, you can also relaunch SC2 with "-development" flag, that will enable test mode for replays. Including access to debugger.
    If you launch SC2 from Battle.net client, then in its options there's somewhere a field to type additional cli params. For testing purposes that would be "-development -windowed -trigdebug".

     

    When testing offline it's also good too add additional dummy players, that have the control shared to you. And simulate what would happen in actual online game.

    Posted in: Triggers
  • 0

    posted a message on Cannot build ultralisk in custom map..WTF......

    Yes, multiplayer and campaign dependencies don't play well together. If you want to use them together, you'll have to resolve such issues on your own.

     

    Multiplayer dependency is automatically injected to maps set as melee (and that's the root cause of your problem). Add VoidMulti dependency at the end of your current list, and Editor will reflect what's actually happening in game.

     

    Posted in: General Chat
  • To post a comment, please or register a new account.