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.
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...
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
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).
@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?
@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...
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.
@nestharus: Go
Err... wait. Cool heap allocator implementation, but this is more or less a galaxy library. You can post it as an asset.
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.
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...
Reserved post, just in case
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