All right, I updated to support the last patch for WoL and HotS since someone asked me
I am making version 2.0 which will change many things, it will have its own compiler for Galaxy and maybe there will also have my own language extension for Galaxy, though it will take sometime to get it finished ...
@nestharus: Go
My plan for extending intellisense, more specifically the database of symbols keep internally (for displaying autocomplete, nametips, ...), would be letting the user customize it, not just plugins. It would be by reading custom text-blocks with those definitions, those text-blocks located inside the trigger content. For example:
Why this? I am not making another Visual Studio, my effort is toward something really usefull for map-making, not a full-featured IDE. With this approach someone writting a library could define what symbols the library is exporting for the final-user, symbols which would appear in autocompletion, calltips, .., and also the library could define snippets of code that user could insert (like a macro, maybe with parameters, to insert text).
I know ANTLR 4, and only the JAVA target is available. Dont know if you are familiar with DLLs exports, but this is the way Omni loads and communicates with plugins. Im not familiar with JAVA, but I guess you would need to write a DLL in C that Omni can load/talk, while this DLL interops with the JAVA program, what do you think? Are you really making a Galaxy extension with ANTLR?
Translators: yes it should be supported as plugins, but not really rdy yet, custom highlighters are also doable.
Intellisense: no user-defined symbols, only the symbols parsed (when Omni is started) from the .galaxy files in the \ScriptData folder of Omni, which at the moment contains the game natives. This kind of runtime parsing would need a lot of work to make, its too advanced.
This tool is supposed to be extensible with plugins support, something I have decided from the beginning when I started it. Its a language tool, so support for translators, preprocessors is of course what I want for plugins. Plugin support is already working as you can see in the plugin named Ion, that comes with Omni: it is a separeted .dll loaded at startup; it is a preprocessor, when you save the map it process the script and returns a modified version of the script, that is, Ion is a translator.
In order to further develop plugin support, its just a matter of we working together in order to I know in what I should focus for supporting plugins.
Version control inside Omni, that is for a very distant future.
The major thing is that I implemented a feature (that I called IntelliWrap) to the code editor for wrapping and inserting code from a list of natives or from a list of language constructs (if, while, for, function). I had planned it long ago, but now I dont find it so usefull, but I have better plans for it, so its like a version for seeing how I am making this kind of UI and if anyone like it, but which I can improve, though I wont work in it again any time soon.
@PhiSC2: Go
yes, the crash while moving folders to given locations is a known bug, I have to write the checks for invalid places for the dropping, maybe in next release ..
@PhiSC2: Go
At some near time I will publish a proper SDK, it is just not ready. But if you already want to learn how to write those plugins before the SDK is released, which is something you would want to learn anyway, start looking at how I wrote Ion, the source is here.
Note that I expect people interested in making plugins to know a bit of C and compiling DLLs for Windows. Main thing to start understanding is the header file for the DLL here.
There is no such thing as you imagine: "how the dll loads the map file", when the map is saved, Omni calls exported functions of the plugin DLL to it do certain things, thats all for plugins.
I will describe what I will let plugins do when the map is saved:
preprocess the script: plugin receives the raw script of Omni and return a modified version
compile the script: there can be only one compiler, it will be responsible for receiving the already preprocessed plugin, and 'compile' it to pure Galaxy code, returning the final script of the map to be put in its MPQ
modify the MPQ: make any changes desired to the map MPQ, just before everything is packed as the .SC2Map
Also plugins can write an interface for the user in form of a panel (as the panel of Ion plugin) which is coded in HTML. The HTML supported is the one of this library, it also supports a scripting language similar to Javascript. I plan also to make a D version of the SDK, just because I am learning D.
As for the requests, already added the one you asked for hidding that space, just wait for the next version. As for the Data tab, havent considered that, and so I am not willing to make it, so many things planned to do ... right now I am working in a widget for showing a list of natives, also I am studying how to write a parser for Galaxy with ANTLR. But you could write with my help a plugin for that ...
@whimsyduke: Go
Sorry, but Omni will only work with SE in English, but you can change the locale of SE in the options: File/Preferences/Locale, then choose enUS or enGB.
Also you dont need to start Omni before running the editor, try opening Omni after SE is fully open.
@whimsyduke: Go
yes, it is not showing purposely, as I said before, because it was causing some crashes in my tests here, I have to investigate why. I made it for you to test if its correctly attaching to SE so can use the tool, just tell if now the 2 bars turn green.
The version of SE you are using is correct, so its something with Omni. There is a 25 seconds timeout for the SE editor be fully open, else Omni fails.
I've compiled a version of Omni whithout the timeout (actually half an hour), also it is not displaying the map name (the chinese text) because I think its the source of some problems, so plz, download it and just replace the Omni.exe with this one and tell me if it works better: https:dl.dropbox.com/u/1515790/OmniFix.zip
updated to version 1.01, the changelog is in the .zip, major update is that it now supports the HotS beta editor
@whimsyduke: Go
So you would like Omni in chinese? sorry but I wont be adding multilanguage UI, its too much trouble.
I see no problem in the characters of that picture, though I see that the bars of GE.I. are red, so its not working, maybe because you havent yet updated SC2 since you just reinstalled it, Omni only recognizes the last version of the editor. Tell me if still not working ..
I added to this last version of Omni a way of clearing that recent-file-list, its a shortcut, just press CTRL + SHIFT + F11, I am keeping a list of available shortcuts here
anyone has WOL and HOTS installed? plz make this test: can you open both WOL and HOTS editor at the same time?
(got my beta key but havent installed it yet)
@Juxtapozition: Go
you mean just a simple listing of all natives so you can double-click to insert it as code?
well, there isn't, but I could easily do it as a panel, like the other ones (Find/replace, Map info), though it might look a bit small ..
@whimsyduke: Go
yes, I can support Chinese characteres as the app is Unicode aware, but I've never worked with chinese, its hard for me to test, so you must tell me exactly whats wrong, I didnt understand the problem you just said. I did the following test: pasted 无标题的触发器 as the trigger content and the trigger name, saved it, closed the map, reopened it, and yes, the chinese words were saved
For autocomplete, it should work by default, you dont need to configure nothing: in a trigger, start typing the name of a native, and then press CTRL+Space to show the autocompletion list
Omni is a standalone application for writing your triggers in galaxy-code. It works outside the SC2 editor, but is integrated to it: you write the code in Omni and for compiling and testing it, you must have the SC2 editor running in order to Omni handle to it a modified version of the map script, the code you write in Omni is injected in the SC2 map-editor whenever you save or compile the map.
I've being developing it for more that one year, and at the beginning the goal was to make it for Warcraft, but then I slowly made it for SC2 since I completely dropped making maps for WC3. Thats why the trigger tree is like in World editor, only one level of triggers and categorys.
It already has support for plugins, but the SDK isnt ready yet. I already wrote one as an example of how one could write a parser, or a preprocessor, for Omni.
I havent writen a proper documentation how to use it, but I am sure anyone can discover for yourself, its just straightforward. However in the .zip there is a demonstration map that you should open with Omni, and read some explanations.
Some random notes:
the code-editor has: autocomplete, natives list, parameter list, syntax highlightning
whenever it crashes, you can send me the report if you want
MAKE SURE TO BACKUP YOUR MAP BEFORE USING IT IN THIS TOOL!!! I havent made yet an auto-backup feature
it supports both WoL and HotS editors
TUTORIAL
So you got your map, and want to write some trigger in Galaxy language with this tool, the sequence of things you might follow to get started is:
Open your map in Omni
Run the SC2 map-editor, and then open the same map on it
In Omni, there are two bars at the top, where it reads "GE.I", its an status if it has detected that your map is open in SC2 map-editor, both bars must be green in order to be able to compile your code
In the trigger tree, right-click in the name of your map and create a category
Then right click in the category and create your first trigger
After writing some code for your trigger, if GE.I is all green, you can press F7 to compile and check for errors
press F9 to test it the game
F7 does not save any changes, so make sure to save it when appropriated, whenever your issue a Save in Omni, it also triggers a save in the SC2 map-editor
CHANGELOG for v1.3
supports the new version of the Galaxy Editor for WoL (v2.04 build 2494) and HotS (v2.00 build 24247)
thats because I updated it to patch 2.0.4, but then the 2.0.5 patch came out
maybe tomorrow I will update it ..
All right, I updated to support the last patch for WoL and HotS since someone asked me
I am making version 2.0 which will change many things, it will have its own compiler for Galaxy and maybe there will also have my own language extension for Galaxy, though it will take sometime to get it finished ...
@nestharus: Go My plan for extending intellisense, more specifically the database of symbols keep internally (for displaying autocomplete, nametips, ...), would be letting the user customize it, not just plugins. It would be by reading custom text-blocks with those definitions, those text-blocks located inside the trigger content. For example:
Why this? I am not making another Visual Studio, my effort is toward something really usefull for map-making, not a full-featured IDE. With this approach someone writting a library could define what symbols the library is exporting for the final-user, symbols which would appear in autocompletion, calltips, .., and also the library could define snippets of code that user could insert (like a macro, maybe with parameters, to insert text).
I know ANTLR 4, and only the JAVA target is available. Dont know if you are familiar with DLLs exports, but this is the way Omni loads and communicates with plugins. Im not familiar with JAVA, but I guess you would need to write a DLL in C that Omni can load/talk, while this DLL interops with the JAVA program, what do you think? Are you really making a Galaxy extension with ANTLR?
@nestharus: Go
This tool is supposed to be extensible with plugins support, something I have decided from the beginning when I started it. Its a language tool, so support for translators, preprocessors is of course what I want for plugins. Plugin support is already working as you can see in the plugin named Ion, that comes with Omni: it is a separeted .dll loaded at startup; it is a preprocessor, when you save the map it process the script and returns a modified version of the script, that is, Ion is a translator.
In order to further develop plugin support, its just a matter of we working together in order to I know in what I should focus for supporting plugins.
Version control inside Omni, that is for a very distant future.
New version, now it got overloads!
The major thing is that I implemented a feature (that I called IntelliWrap) to the code editor for wrapping and inserting code from a list of natives or from a list of language constructs (if, while, for, function). I had planned it long ago, but now I dont find it so usefull, but I have better plans for it, so its like a version for seeing how I am making this kind of UI and if anyone like it, but which I can improve, though I wont work in it again any time soon.
@PhiSC2: Go yes, the crash while moving folders to given locations is a known bug, I have to write the checks for invalid places for the dropping, maybe in next release ..
@PhiSC2: Go At some near time I will publish a proper SDK, it is just not ready. But if you already want to learn how to write those plugins before the SDK is released, which is something you would want to learn anyway, start looking at how I wrote Ion, the source is here.
Note that I expect people interested in making plugins to know a bit of C and compiling DLLs for Windows. Main thing to start understanding is the header file for the DLL here.
There is no such thing as you imagine: "how the dll loads the map file", when the map is saved, Omni calls exported functions of the plugin DLL to it do certain things, thats all for plugins.
I will describe what I will let plugins do when the map is saved:
Also plugins can write an interface for the user in form of a panel (as the panel of Ion plugin) which is coded in HTML. The HTML supported is the one of this library, it also supports a scripting language similar to Javascript. I plan also to make a D version of the SDK, just because I am learning D.
As for the requests, already added the one you asked for hidding that space, just wait for the next version. As for the Data tab, havent considered that, and so I am not willing to make it, so many things planned to do ... right now I am working in a widget for showing a list of natives, also I am studying how to write a parser for Galaxy with ANTLR. But you could write with my help a plugin for that ...
@whimsyduke: Go Sorry, but Omni will only work with SE in English, but you can change the locale of SE in the options: File/Preferences/Locale, then choose enUS or enGB.
Also you dont need to start Omni before running the editor, try opening Omni after SE is fully open.
@whimsyduke: Go yes, it is not showing purposely, as I said before, because it was causing some crashes in my tests here, I have to investigate why. I made it for you to test if its correctly attaching to SE so can use the tool, just tell if now the 2 bars turn green.
@whimsyduke: Go
The version of SE you are using is correct, so its something with Omni. There is a 25 seconds timeout for the SE editor be fully open, else Omni fails.
I've compiled a version of Omni whithout the timeout (actually half an hour), also it is not displaying the map name (the chinese text) because I think its the source of some problems, so plz, download it and just replace the Omni.exe with this one and tell me if it works better: https:dl.dropbox.com/u/1515790/OmniFix.zip
updated to version 1.01, the changelog is in the .zip, major update is that it now supports the HotS beta editor
@whimsyduke: Go So you would like Omni in chinese? sorry but I wont be adding multilanguage UI, its too much trouble.
I see no problem in the characters of that picture, though I see that the bars of GE.I. are red, so its not working, maybe because you havent yet updated SC2 since you just reinstalled it, Omni only recognizes the last version of the editor. Tell me if still not working ..
I added to this last version of Omni a way of clearing that recent-file-list, its a shortcut, just press CTRL + SHIFT + F11, I am keeping a list of available shortcuts here
anyone has WOL and HOTS installed? plz make this test: can you open both WOL and HOTS editor at the same time? (got my beta key but havent installed it yet)
@Juxtapozition: Go you mean just a simple listing of all natives so you can double-click to insert it as code? well, there isn't, but I could easily do it as a panel, like the other ones (Find/replace, Map info), though it might look a bit small ..
@whimsyduke: Go yes, I can support Chinese characteres as the app is Unicode aware, but I've never worked with chinese, its hard for me to test, so you must tell me exactly whats wrong, I didnt understand the problem you just said. I did the following test: pasted 无标题的触发器 as the trigger content and the trigger name, saved it, closed the map, reopened it, and yes, the chinese words were saved
@Juxtapozition: Go
For HOTS, maybe this weekend I make it
For autocomplete, it should work by default, you dont need to configure nothing: in a trigger, start typing the name of a native, and then press CTRL+Space to show the autocompletion list
Omni is a standalone application for writing your triggers in galaxy-code. It works outside the SC2 editor, but is integrated to it: you write the code in Omni and for compiling and testing it, you must have the SC2 editor running in order to Omni handle to it a modified version of the map script, the code you write in Omni is injected in the SC2 map-editor whenever you save or compile the map.
I've being developing it for more that one year, and at the beginning the goal was to make it for Warcraft, but then I slowly made it for SC2 since I completely dropped making maps for WC3. Thats why the trigger tree is like in World editor, only one level of triggers and categorys.
It already has support for plugins, but the SDK isnt ready yet. I already wrote one as an example of how one could write a parser, or a preprocessor, for Omni.
I havent writen a proper documentation how to use it, but I am sure anyone can discover for yourself, its just straightforward. However in the .zip there is a demonstration map that you should open with Omni, and read some explanations.
Some random notes:
TUTORIAL
So you got your map, and want to write some trigger in Galaxy language with this tool, the sequence of things you might follow to get started is:
CHANGELOG for v1.3
DOWNLOAD v1.3