• 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Ah, it crashes because it attempts to report an error (about missing value for return statement) on non-existing node.
    Gonna release fixed version soon, in meantime you can just hotfix it, since it is JavaScript - no recompilation required :)
    https://github.com/Talv/plaxtony/blob/157ecca13cfb4c04bf669068e4432e670619c984/lib/compiler/checker.js#L885

    replace 

    node.expression

    with just

    node
    Path to checker.js is in your logs.

     

    You mean use vscode to debug Galaxy script? You want to write a VM for galaxy or run SCII and get data and control the game? BLZ start to add features for SE, so it will be a continuous work. If you finish it, it will be great! As we know, BLZ have never supported a good debug tool, no matter WE of War3 and SE of SC2.

    Yes, plan is to use SC2 VM. Since SC2 already has debugger to control VM, I can utilize it by just hooking up relevant winapi controls.

    Of course I'd like to go a little beyond that - inject some additional binary code to SC2.exe that would allow to for example modify values of variables. But that requires further research..

     

    I am a original-edition-ism user. It is a bad habit of caring efficiency from the period of War3. I do not like vJass, cJass and other extensions of Jass2, the script language of War3. But for SC2, galaxy is enough efficient. So I have never used the extension of Galaxy++.

    Yes, I wouldn't like to implement features that would noticeably impact performance.

    I was thinking about features such as:

    - modularity/namespaces: Galaxy has single global module and everything is put into the same namping space - included files can access everything what was declared by parent files..

    - Tigger Library generation from Galaxy code

    - some syntatic sugar for things like passing variables as references (Galaxy requires you to wrap it with arrayref), iterator interfaces to provide foreach loops

    - maybe some C like preprocessing macros..?

    etc.

    I really think there's a lot that can be done to make Galaxy "more friendly" - reduce the amount of boilerplate code it often requires to accomplish simple things. 

    Well, we'll see if I'll be motivated enough to put needed time into this.

    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    That's because you were previously accepting "AIEvalSetCustomIndex" as suggestion, when typing "else". For that reason, editor now assumes it is your preference over keyword "else", which previously was not available - look that "else" is now at the top of the list. As far as sorting goes it is fine. You probably just have to choose "else" once, and editor will remember your choice. It's actually recent feature of VSCode
    https://code.visualstudio.com/updates/v1_19#_smarter-intellisense

    And do not check if return is exist.

    Added to the list.

     

    I'll probably slow down with work on new features in upcoming days/weeks, and switch my focus to other stuff. But keep reporting any issues you encounter - these are useful, as I don't work much with SC2 projects recently.

     

    However, as a long term plans.. or rather ideas. I'd like to implement frontend debugging UI for Galaxy in VSCode ( https://code.visualstudio.com/Docs/editor/debugging ). Which would utilize default TrigDebug window as a starting point. Primary reason is to make new frontend convenient to use, because default one is not so friendly... perhaps it would be possible to come up with some exclusive features. Although SC2 binaries got really hard to RE during these years (and I never was good at that to begin with :| ). I gotta dig more to see whether something like this would be feasiable at all.

     

    The other thing I'm considering is yet another Galaxy Language Extension - acting as transpiler. My focus on this would be on features meant to improve usability, while avoiding implementing dynamic capabilities like Galaxy++ did. As there's no easy way to emulate that - it quickly gets messy.
    But seeing how low interest there's about Galaxy related things within community, it might be simply too late for such project. If I'm however wrong about that, I'm open for collaboration.

    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Released v1.7.0 (rough changelog)

     

    Most notable changes are probably:

    - find all references [1] & symbol rename

    - improvements to typechecking - it now respects order in which symbols are declared (only in scope of single file). That means if you'll try to reference variable/function declared X lines below it will print an error msg.

     

    Natives not declared in Galaxy files will now be auto-generated every release. There were quite a lot of them actually: 

    https://github.com/Talv/sc2-data-trigger/blob/e9507ff419107981e5b98cf0eec70c2e17147db6/mods/core.sc2mod/base.sc2data/TriggerLibs/natives_missing.galaxy

     

    [1]

    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Macro is a special galaxy syntax for galaxy which only use at custom script in function/action definition.

    Ahh, preprocessing macros.. I did know there's such thing, just forgot about it. Mostly because of the reason you mention, these are not actual Galaxy languages macros. This feature is exlusive to Trigger editor, thus I don't think it would be right to treat it as part of Galaxy language.. maybe it could be allowed as opt-in in configuration.
    I'll think about it - whether it is benefical to have this implemented and how much hassle would it require.

     

    And you may not add the new function of 4.0, such as BankBackup, this function is not in natives.galaxy and NativeLib.galaxy, but it is list in the Trigger Library.

    Yeah, I blame Blizzard for that :P They should include new natives into natives.galaxy instead of inserting them exlusively to TriggerLib :/
    Some old ones like PlayerOptionOverride are not there aswell.. I'll solve it in next version.

     

    Another is could you add the keywords into the Code completions? When I input else it always change to
    AIEvalSetCustomIndex. Because after input else, i need input Enter to start a new line.

    You can always cancel suggestion list (esc), and then hit enter :P (or force it with ctrl-enter.)

    But yes - of course it's valid suggestion. I'll add keywords. 

     

    I'll likely release new version later today or tomorrow. It will also include some fancy new features (find all references function and global symbol rename).

    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    I copy the integer value from Calculator , and paste to the vscode.

    It is show me as a error.

     

    This may be a bug of vscode, I install the newest one

    in ASCII encode, the copied integer value with two chars (0x3f) as a prefix and suffix.

    Encountered invalid character
    There must be some invalid ASCII character (apparently invisible) pasted in. No idea why would calculator put something like that into clipboard .. 0x3f should be "?" (question mark sign), right? If so, I don't think this is it - otherwise VSCode should render it. It must have been something else (you can check with hex editor).
    In next version error message will also include character codes.

     

    PS: If you want to add other feature, support the Macro syntax of Trigger Function may a good one.

    Hmm, what you mean by "macro"?
    Perhaps snippets is what you refer to? https://code.visualstudio.com/docs/editor/userdefinedsnippets

    If so, there are some snippets included with extension: https://github.com/Talv/vscode-sc2-galaxy/blob/master/snippets/general.json

    For triggers there's tgs and tgc. But I'll have to change them, as its current template doesn't follow usual code style convetions of Galaxy, but rather my personal preference: snake_case instead of camelCase, and "{" on new line.

     

    As for the other 2 reports - it's done. But not released yet. Will make one later this week.

     

    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Ops, minor bug, but none of my test cases covered it. Fixed.

    Posted in: Galaxy Scripting
  • 0

    posted a message on [Celebration] New sc2mapster website one year anniversary !

    In reply to TChosenOne:

     
    You don't disagree then, because I never meant to imply that Discord can replace forum. It could sound like so, though.
    If sc2mapster would die, something fresh and better could fill its place. That's kinda naive, I know.. It's just sad that founders are no longer there. They had the passion needed to keep this site thriving. Today, we are left with Curse, who merely treat as an asset under their possession. And since the asset has no perspectives to grow, we are left on our own.
    Posted in: General Chat
  • 0

    posted a message on [Celebration] New sc2mapster website one year anniversary !

    I hope sc2mapster will die. I'm serious.

    I love the community, but I hate the fact that it is managed by Curse. Company that doesn't give a damn fuck about us. And at the same time don't give us any oppurtunity to contribute to the website, forum and all things related (by opening source code).

    Like half of the activity already shifted to Discord, just because how not user friendly this site has become.

    Posted in: General Chat
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Released 1.6.0 with finalized typechecker!

     

    Posted in: Galaxy Scripting
  • 0

    posted a message on How to make SC2 editor language to English

    Make sure you've correct localization set in Battle.net game options, not just in-game options of SC2.

    Also you could try to force change of Editor options by overriding relevant config key in regedit

     

    cmd.exe

    reg add "HKCU\Software\Blizzard Entertainment\StarCraft II Editor\Preferences" /t REG_SZ /v Locale /d enUS /f

     I have no idea if it will work. But it should be done while editor is off. At next launch it wil either start downloading new localization files, or revert back to previous settings..

    Posted in: Galaxy Editor Bugs and Feedback
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Released v1.5.0 - https://github.com/Talv/plaxtony/releases/tag/v1.5.0

     

    Quick highlight of new features:

     

    Code completions prioritize preset constants when valid (function must declare preset type within Triggers metadata).

     

    Gamelinks suggestions (units, effects etc.)

     

    Improved formating of function signature. It now also includes grammar text entry.

     

     

    Also, I have just realized I didin't package default SC2 archives other than core.sc2mod in last release... it is now fixed. Package size went up ~20MB.

    Configuration settings are described in docs CONFIGURATION.md

     

    I consider this release to be very stable.

    I'm gonna try to finalize typechecking for next release.

    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    No, just show the multibyte character as a warning or error. This issue always happen in the comment, so your parser can not find it, if the user want to use multibyte character, he can translate it as unicode type ('\x') himself. I have write a tool to do that.......

    Ahh, okay. Indeed my parser allows a lot of things that normally result in error when parsed by SC2.
    But I of course want it to be on pair, even if I'll have to explictly hardcode rules like 4096 characters single line limit..

    (as for the comments - it doesn't validate it yet, as I was sure SC2 could handle it there, but apparently not... will make it to next version.)

    My work in Forggy & Catty is write base system in galaxy, and another partner works for game with GUI (Delphinium works for art). I need encapsulate galaxy function to GUI function for him.

    Well, I'm not convinced to your workflow, but I'm sure you know what you're doing.

     

    Anyway, new version released.
    - When .sc2map or .sc2mod is present within the workspace, indexer will attempt to visit every dependency listed. If it fails to load at least one, it will revert to indexing only `core.sc2mod` and its native lib.
    - Typedef, funcref, arrayref are now entirely supported
    - Other minor improvements

     

     

    Feel free to report any issues you encounter, as well as feature requests if you've any.

    Posted in: Galaxy Scripting
  • 0.965018094089264

    posted a message on Ping Panel limitation

    This part is handled by Triggers. In particular Liberty library that sits in Liberty base dependencies.

     

    Values are set as constants so cannot be altered directly..

    const int libLbty_gv_c_PINGMAXCOUNT = 3;
    const fixed libLbty_gv_c_PINGRESETTIME = 2.0;
    const fixed libLbty_gv_c_PINGSUPPRESSIONTIME = 0.25;
    const fixed libLbty_gv_c_PINGLOCKOUTTIME = 5.0;

     I think viable way would be to have a trigger tied to Ping Event, which would reset the current counter.

     

    You should examine libLbty_gf_PingPlay function to get a better idea.

    But in short you should reset the counter of

    int[17] libLbty_gv_pingRecentCount;

    By overriding current value with 0 every time trigger is fired.

     

    Another way is to make a custom implementation of this system, basing on existing triggers.

    Posted in: UI Development
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension
     
    [Error - 09:15:25] Request textDocument/hover failed.
    Message: Request textDocument/hover failed with message: how did we get here?
    Code: -32603
    Haha, yeah.. these messages are not very insigtful.
    In new version it will print stack trace, so it will be easier for me address such issues.

    This error in particular will be fixed in upcoming version. It occured when hovering over comments/whitespaces at the end of file or within include statements.
    If you have finish the work about typedef and family, please release a new version
    Sure. Already started work on this, hoping to have it done by the end of the week.
    And there is another suggestion, could you take a feature to checking Unicode character in the script, special for the Comments, as we know custom script in SE do not accept non-ASCII characters, and if I use Chinese character "," instead of English character "," I can not copy script text to the SE window. and it is hard for me to find it with eyes.
    Not exactly sure what you're requesting there.
    I know about the problem related to handling of multibyte characters in Galaxy lexer within SC2, but what you suggest as a solution for this?
    Add option to transpile the script and escape these characters using '\x' notation?
    But since I'm not making a language extension like `Galaxy++` (at least not yet), not sure how should this be handled at the current moment..
    For me, I write galaxy as a Lib, and put them in SE as a Custom script, then encapsulate it to trigger function or trigger action. The Lib is isolated, so I do not need check dependencies except native.galaxy.
    Hmm.. so you're not saving galaxy files within map/mod directory? Just copy pasting parts of code one by one to GUI `script code` section seems rather uncomfortable to work with. Especially when you need to go back and update something.
    Is there a particular reason you do it this way?
    Why not just make one `custom script` element, that would have `include` statement to import your external scripts saved within the mod/map?
    I suppose you want to have actual GUI elements for actions/functions, but there's a way to declare dummy element using `Native` flag, so SC2Editor will be able to reference the element while auto-generating script, but it won't generate actual body of a function in its script.
    That's what I've been doing, and I don't see any cons of this method.

    I can obviously support editing galaxy files without having mod/map in the workspace, in such case however only one dependency is being indexed - `core.sc2mod` and its libraries.
    If your code will try to reference some stuff that sits in external library, then it would complain about undeclared symbols.. (since they won't be indexed).
    Ideally I was going to implement complete analysis of the script, including typechecking (i.e. when trying to assign `"foo"` to int variable it will highlight it as error). In order to do that all relevant galaxy files must be indexed.
    I write a new mod of terrain editor (rewrite the terrain mod of BLZ Enforcement). And I need these features.
    I've seen it in Delphinium videos. Cool stuff. Not sure if you guys are still planning to release it publicly, but if so I will certainly check it out.
    I was mostly interested about a way to alter terrain textures. But not just swap large part of texture surface using one of prepared presets (which is what you seem to be doing?).
    I was hoping for possibility to actually paint.. or rather have handful different shapes of splat models, so that terrain could be customized in detailed way.
    I can imagine FPS droping heavly once there's too many splats though...
    Posted in: Galaxy Scripting
  • 0

    posted a message on Galaxy IDE as Visual Studio Code extension

    Thanks for the feedback!

     

    Yeah, I'm slowly adding new features. typedef and family will soon be supported. I just focused on other things so far. One of which is proper support of archive dependencies. Currently only content of core.sc2mod was being read, and in order to have other dependencies indexed they had to be added to project workspace.
    But this is no loger the case, in new version (unreleased yet) dependencies of sc2map/sc2mod are being resolved, and indexed respectively. Although for this to work all revelant archives must be saved as so called sc2component, as there's no support for reading of CASC, nor MPQ. And not sure if there will ever be - I don't think it's really needed. Especially as default SC2 mods are included within the extension. For custom mods you just have to provide additional sources directory in the configuration - that should point to SC2 installation directory.

     

    Having access to complete dependency tree allows it to index all of the existing *Trigger* elements, and their metadata. So now when you hover over your custom functions, extension can display its name and description.


    In above example, function was delcared within the script aswell. In *Triggers* there's just a stub element created for it (with Native flag set).
    This makes it possible to document your codebase. And also bind generic parameters such as *int* to their actual preset constant variables, so it could provide more accurate auto-completins in context of that parameter.
    Also, I plan do add feature for indexing entries from *Data XML*. In order to be able to provide autocomplete list for these virtual *gamelink* parameters, which are mapped as string. To give an example, when you'd request code completions list for *unittype* parameter of UnitCreate then all possible names would be provided, along with their localized name in the tooltip.

     

    There's not much interest in these kind of tools among the community as you've pointed. But this doesn't stop me from working on it further. In fact it is quite fun to do so, and I've learned a lot in the process.

     

    I didn't had occasion to try Galaxy++ nor Andromeda. I did like the idea itself though. But I think they wanted to accomplish too much too early - get too many features at once.. And that makes it really hard to develop further while maintaining the stability.
    Also full blown language extension alone won't really be convenient to work with, if there's no tooling around it - dedicated IDEs or support within 3rd party extension for text editors (as this one).
    I'm not a fan of dedicated IDEs these days though. Their customization capability is often times highly limited.
    I like to play with many programmiang languages, thus having them all support from single editor is very convenient.

     

    Plugin for Sublime Text was indeed quite poor. But it's the past now!
    Do you find Visual Studio Code comfortable? It is quite customizable too - I didn't like it's default setup, but you can alter most of it in the settings or via extensions.

    If you happen to use it, feel free to report any issues and suggestions.

    Posted in: Galaxy Scripting
  • To post a comment, please or register a new account.