Original galaxy editor is way better than that from first starcraft and Warcratft III. Anyway, sometimes we want to have something more than it offers. There is many tools that extends maps on their own, but it is sometimes difficult to use them in a proper way, and of course it needs additional effort from end user. I just want to change it. This is how project Gemini was born. You can read more here.
Gemini project v0.2
What it is?
It is external program, that runs Map Editor and equip it with additional features transparently to end user.
It is still in very early stage of development.
How it works?
It creates new process for editor, performs a dll injection by process memory swap and waits for signals. Anything is controlled from external Lua script, what makes it very expandable. If you want more details or want to contribute, there is publicly available source code on github.
I want one! (download)
You can download latest release here, but be aware, it is not well tested and i can't guarantee it wont break your map. We don't have many compatible extensions for this moment too.
More about demo extension
(aka scriptalter.exe)
When you save your map, it adds additional trigger to MapScript. You should get "Gemini injection successful" message at third second of game time.
changelog
version 0.2
- working save injection
- demo extension included
version 0.1
- initial release
todo
we need better messaging api, probably as DLL, make it internal standard
Could you elaborate more in how this program is supposed to run or what are your plans. I know, it is in a very early stage.
And in what concerns to third-party extensions, how should they be created and registered (dll or lua scripts)? When and how they are loaded, and a list of what will be available to those extension to mess with the editor, thats it, what areas are you planing to have gemini interfering in SC2editor execution, just in map save?
Save injection is a part of standard extension (GeHack.dll). It is a dll and some lua code to inject and communicate with this dll. The rest isn't completed yet, but the new (async client-server IPC) communication api draft is available from repository (ipsmes.h). I have no time to work on that now... I stuck on implementing communication layer (ipsmes.cpp), because i never used WinApi pipes before. Usage of overlapped pipe IO for multiple client - server model is just a Pain in the Ass... If anybody knows how to do it (i hope api is clear enough to say how it should work), i will appreciate helping me and the rest of community. After that, i will start implementing the rest of base functionality (menu extensions etc.). SBeier gave me an idea for automatic extension version check and update, it will be very useful and possible to implement inside Gemini, but extensions needs to be more strictly defined. I think about a .lua with listed methods (onEvent(e), doInit() etc.) and variables (version?), because it can be easily executed (simple dofile(...) or directly from c++).
Summarizing: everything is a draft or even idea now...
Erm. Okay. It doesn't work for now. The last version is very old and not really working on latest editor. Everyting of that is true because of crappy implementation of communication, through blocking api. It sucks actually. Overlapped pipe IO api is a must. But i can't make it work.. somehow. Hate WinApi... Anyway, its worth trying.
For when you update, I think that the stuff like Galaxy should probably use something more like this for memory allocation/deallocation as it's much faster =).
The array refs in SC2 are relatively useless since they are so static D:.
Could actually do a sizeof thing here, though it could refer to the array size =).
Err... wait. Cool heap allocator implementation, but this is more or less a galaxy library. You can post it as an asset.
but, it'd be best supported in the background of a language so that you have nice syntax with it (treating pointers as arrays/scalars, etc). It's kind of eh to use memory read/write methods :\.
Original galaxy editor is way better than that from first starcraft and Warcratft III. Anyway, sometimes we want to have something more than it offers. There is many tools that extends maps on their own, but it is sometimes difficult to use them in a proper way, and of course it needs additional effort from end user. I just want to change it. This is how project Gemini was born. You can read more here.
Gemini project v0.2
What it is?
It is external program, that runs Map Editor and equip it with additional features transparently to end user.
It is still in very early stage of development.
How it works?
It creates new process for editor, performs a dll injection by process memory swap and waits for signals. Anything is controlled from external Lua script, what makes it very expandable. If you want more details or want to contribute, there is publicly available source code on github.
I want one! (download)
You can download latest release here, but be aware, it is not well tested and i can't guarantee it wont break your map. We don't have many compatible extensions for this moment too.
More about demo extension
(aka scriptalter.exe)
When you save your map, it adds additional trigger to MapScript. You should get "Gemini injection successful" message at third second of game time.
changelog
- working save injection
- demo extension included
- initial release
todo
Reserved post, just in case
Save injection is a part of standard extension (GeHack.dll). It is a dll and some lua code to inject and communicate with this dll. The rest isn't completed yet, but the new (async client-server IPC) communication api draft is available from repository (ipsmes.h). I have no time to work on that now... I stuck on implementing communication layer (ipsmes.cpp), because i never used WinApi pipes before. Usage of overlapped pipe IO for multiple client - server model is just a Pain in the Ass... If anybody knows how to do it (i hope api is clear enough to say how it should work), i will appreciate helping me and the rest of community. After that, i will start implementing the rest of base functionality (menu extensions etc.). SBeier gave me an idea for automatic extension version check and update, it will be very useful and possible to implement inside Gemini, but extensions needs to be more strictly defined. I think about a .lua with listed methods (onEvent(e), doInit() etc.) and variables (version?), because it can be easily executed (simple dofile(...) or directly from c
++
).Summarizing: everything is a draft or even idea now...
Erm. Okay. It doesn't work for now. The last version is very old and not really working on latest editor. Everyting of that is true because of crappy implementation of communication, through blocking api. It sucks actually. Overlapped pipe IO api is a must. But i can't make it work.. somehow. Hate WinApi... Anyway, its worth trying.
For when you update, I think that the stuff like Galaxy should probably use something more like this for memory allocation/deallocation as it's much faster =).
The array refs in SC2 are relatively useless since they are so static D:.
Could actually do a sizeof thing here, though it could refer to the array size =).
@nestharus: Go
Err... wait. Cool heap allocator implementation, but this is more or less a galaxy library. You can post it as an asset.
I have issues with windows' unicode wstrings for now. It is a real pain to deal with them on gcc... I'm not used to wide char functions.
but, it'd be best supported in the background of a language so that you have nice syntax with it (treating pointers as arrays/scalars, etc). It's kind of eh to use memory read/write methods :\.
@nestharus: Go
What are you talking about? Gemini has, in a sense, nothing to do with the Galaxy language, it is not a preprocessor or compiler or text-editor ...
@Frizi: Go
I am quite familiar with them, I use all my string in Unicode format, like L"My String Wooww"
@midiway: Go
I'm making the IPC now, but the pipes use widestring as name. I did it and it works for now, but i bet i will have trouble with them later anyway...
uh huh, Frizi just made it sound like he was updating this and taking over Galaxy or something ;o.
eh nvm then =).
@nestharus: Go
If so, I should update the description. The galaxy
++
editor may be supported someday as original editor extension because of this application :)@midiway: Go
Are you using GCC?
@Frizi: Go
nops, I use VisualStudio C + + 2010
I should switch then. But first, I need to reinstall my Win OS. Will do after this summer vacation (I'll be back after 20.08).