I've been playing SC2 for about two years and I want to get involved in the custom map/modding community. I read up on the Galaxy language and it seems very limited (no pointers -.-) Then I read SBier's post on Galaxy++ and it seems much better.
But before I jump into it I want to know if there are any other extensions that are more advanced, since above post is over a year old. I'm looking for the most powerful and bug-free extension available, even if it isn't easy to learn. I have experience coding in C, Java, and Python for a few years so I have a grasp of basic concepts.
Also - for my custom games I'm also interested in modifying the user interface (for example - adding more control groups or developing new commands for units). Is this possible?
Galaxy++ is the most fleshed-out extention up to date, I believe, but Beier has stopped working on it, so it is basically dead. Grim001 is working on an extention, not sure how that is coming along. There were some others in the past, like Andromeda, but eventually all of them died before even being in a useable state.
So for the moment, I would recommend using vanilla. Galaxy++ is an alternative, I used it for a long time and really liked it. But I cannot recommend it anymore, since it still has some bugs and shortcomings, as well as missing support for the new natives. Also people complained about the generated code being unnecessary bloated (which I personally didn't care about).
Quote:
Also - for my custom games I'm also interested in modifying the user interface (for example - adding more control groups or developing new commands for units). Is this possible?
There is a quite powerful UI editor now, but I didn't mess with it too much, so I cannot tell you, if these specific features can be done with it.
Quote:
(IDK why part of my post is underlined green)
Thats because of the WikiCreole markup this forum uses. ++ is the tag for underlining something, and it is also colored green in this case. If you want to write ++, you can use WikiCreoles escape tag, three "{" : {{{++}}}
So for the moment, I would recommend using vanilla
Correct me if I'm wrong, but vanilla lacks pointer support. How am I supposed to pass bulk data (arrays, for example) to functions by reference?
I'll take your advice anyway and try vanilla before deciding if I want to try any extensions. Where do I start? Where is the documentation? Could you direct me to a basic edtor/testing sandbox where I can learn Galaxy? (eg. similar to how someone trying to learn C would use Vi editor and GCC from the command line before graduating to an IDE)
missing support for the new natives
What are natives? What's new about them? Is it part of HotS?
Also, I read that G++ is now open source. Does that mean it's possible to update it to fix whatever shortcomings is has?
Correct me if I'm wrong, but vanilla lacks pointer support. How am I supposed to pass bulk data (arrays, for example) to functions by reference?
There are some new ArrayRef functions, but I am not sure, how they are supposed to be used. In this thread you can see some examples. Otherwise, you can always use the data table to pass bulk data, thats how Galaxy++ did it internally, however that would be just a workaround, since you are not passing by reference.
Quote:
I'll take your advice anyway and try vanilla before deciding if I want to try any extensions. Where do I start? Where is the documentation? Could you direct me to a basic edtor/testing sandbox where I can learn Galaxy? (eg. similar to how someone trying to learn C would use Vi editor and GCC from the command line before graduating to an IDE)
There is no real documentation, and I don't know of any good tutorials to learn Galaxy. However, the language itself is very similar to C, so if you are familiar with C syntax, you will get along just fine. You could look up the basic functionality in the wiki, but you probably know mos of this already.The biggest problem would be the API. Since the editor itself doesn't even have a compiled list of native functions, you are stuck with an external native list (here for example, not sure which patch this is for). Also, coding within the editor pretty much sucks monkey balls, there is no autocompletion, no quick way to look at a function list, the syntax highlighting bugs out when adding code etc.
You can set up Notepad++ to support syntax highlighting and autocompletion for Galaxy, which most people recommend. I personally still use the Galaxy++ editor (and only use vanilla syntax), because I am used to it and it has awesome autocompletion features.
You can always put together some Gui triggers and have a look at the generated map script (CTRL + F11) to see, how the script handles certain things. However, as you can imagine, the generated script is far from optimal and should not be copied mindlessly.
Quote:
What are natives? What's new about them? Is it part of HotS?
The most basic useable functions in the game are called "native functions" or short "natives". An example would be the function "UnitKill". If you execute this function with a unit parameter, it will execute a command within the SC2 engine, causing the unit to die. Note, that you need to call it with UnitKill(u);, there is no u.kill(); or anything of the sort for most variable types (Galaxy++ had this, I miss it already...). There are structs, but they are hardly dynamic.
Patch 1.5 and HotS introduced a couple of new natives to use, which are not supported by the latest Galaxy++ version, afaik.
Quote:
Also, I read that G++ is now open source. Does that mean it's possible to update it to fix whatever shortcomings is has?
Indeed. I am not sure, where you can get the open source files, but if you are interested, you can try to contact Beier. Not sure, if he reads PMs, or how else you can contact him though.
Hi,
I've been playing SC2 for about two years and I want to get involved in the custom map/modding community. I read up on the Galaxy language and it seems very limited (no pointers -.-) Then I read SBier's post on Galaxy
++
and it seems much better.But before I jump into it I want to know if there are any other extensions that are more advanced, since above post is over a year old. I'm looking for the most powerful and bug-free extension available, even if it isn't easy to learn. I have experience coding in C, Java, and Python for a few years so I have a grasp of basic concepts.
Also - for my custom games I'm also interested in modifying the user interface (for example - adding more control groups or developing new commands for units). Is this possible?
Thanks!
(IDK why part of my post is underlined green)
Galaxy
++
is the most fleshed-out extention up to date, I believe, but Beier has stopped working on it, so it is basically dead. Grim001 is working on an extention, not sure how that is coming along. There were some others in the past, like Andromeda, but eventually all of them died before even being in a useable state.So for the moment, I would recommend using vanilla. Galaxy
++
is an alternative, I used it for a long time and really liked it. But I cannot recommend it anymore, since it still has some bugs and shortcomings, as well as missing support for the new natives. Also people complained about the generated code being unnecessary bloated (which I personally didn't care about).There is a quite powerful UI editor now, but I didn't mess with it too much, so I cannot tell you, if these specific features can be done with it.
Thats because of the WikiCreole markup this forum uses.
++
is the tag for underlining something, and it is also colored green in this case. If you want to write++
, you can use WikiCreoles escape tag, three "{" :{{{++}}}
@Kueken531: Go
Thanks for the reply. I still have a few queries.
So for the moment, I would recommend using vanilla
Correct me if I'm wrong, but vanilla lacks pointer support. How am I supposed to pass bulk data (arrays, for example) to functions by reference?
I'll take your advice anyway and try vanilla before deciding if I want to try any extensions. Where do I start? Where is the documentation? Could you direct me to a basic edtor/testing sandbox where I can learn Galaxy? (eg. similar to how someone trying to learn C would use Vi editor and GCC from the command line before graduating to an IDE)
missing support for the new natives
What are natives? What's new about them? Is it part of HotS?
Also, I read that G
++
is now open source. Does that mean it's possible to update it to fix whatever shortcomings is has?Thanks you very much.
There are some new ArrayRef functions, but I am not sure, how they are supposed to be used. In this thread you can see some examples. Otherwise, you can always use the data table to pass bulk data, thats how Galaxy
++
did it internally, however that would be just a workaround, since you are not passing by reference.There is no real documentation, and I don't know of any good tutorials to learn Galaxy. However, the language itself is very similar to C, so if you are familiar with C syntax, you will get along just fine. You could look up the basic functionality in the wiki, but you probably know mos of this already.The biggest problem would be the API. Since the editor itself doesn't even have a compiled list of native functions, you are stuck with an external native list (here for example, not sure which patch this is for). Also, coding within the editor pretty much sucks monkey balls, there is no autocompletion, no quick way to look at a function list, the syntax highlighting bugs out when adding code etc.
You can set up Notepad
++
to support syntax highlighting and autocompletion for Galaxy, which most people recommend. I personally still use the Galaxy++
editor (and only use vanilla syntax), because I am used to it and it has awesome autocompletion features.You can always put together some Gui triggers and have a look at the generated map script (CTRL + F11) to see, how the script handles certain things. However, as you can imagine, the generated script is far from optimal and should not be copied mindlessly.
The most basic useable functions in the game are called "native functions" or short "natives". An example would be the function "UnitKill". If you execute this function with a unit parameter, it will execute a command within the SC2 engine, causing the unit to die. Note, that you need to call it with UnitKill(u);, there is no u.kill(); or anything of the sort for most variable types (Galaxy
++
had this, I miss it already...). There are structs, but they are hardly dynamic.Patch 1.5 and HotS introduced a couple of new natives to use, which are not supported by the latest Galaxy
++
version, afaik.Indeed. I am not sure, where you can get the open source files, but if you are interested, you can try to contact Beier. Not sure, if he reads PMs, or how else you can contact him though.