wciow, that's pretty damn cool
I have a server, but it doesn't seem like I've gotten around to putting something up. Wiki is great for community development because everybody can go in and make their edits, post comments, etc. That's what I like about it -- it's a very powerful collaboration tool. I haven't updated the
Four Path Magitech page in the last few days because I've been using the time I have to hammer out all of the code modifications. I've also been playing with the various values quite a bit so I'll eventually (probably next week) go back to this page and plug in the values that I'm playing with at the moment.
I'm probably going to at least setup a subversion repository for my patches and the project files (models, xml files, etc). My code mods aren't stable at the moment, but I put up a page for the docs/specification here
https://docs.megaglest.org/Effects_&_upgrades. I find that having such docs helps on a number of levels, even if just helping me to clarify the contract of the code to myself. I ended up gutting some of my code and the original Glest code to unify the way that it manages the data for unit types, upgrades and effects (they all have a common base class now). I hope it isn't seen as provocative (making big mods to somebody else's code), but I saw an opportunity to implement what I was wanting to add in a much cleaner way.
So anyway, I gave upgrades all of the new possibilities that I created for temporary effects. What's next on my list with this is to sew it all up and get it shared so I can start (hopefully) getting feedback on it. After that, I have to start looking into how to implement these:
- I'm adding an optional "I'm being attacked" and "I spotted an enemy" notification to the faction.xml files. These consist of a sound file, a min delay between notifications and a boolean on/off option. It will only notify you if the event occurs off of the current screen's view.
- The Lich ability to control other units and have that control relinquished if they die.
- The feature of necromancer pets where they decay if too far from their masters/creators and they die if their master dies.
- Adding forest as a field of travel, thus enabling the Path of Nature upgrades to allow units to travel through trees (if everybody is still on board with that idea).
A few opinion questions now:
I've been playing around with the Lich spells and they are pretty cool so far, but they'll have to be weakened (from what I have now) when I implement the ability for them to control other players. I decided that their "Withering Despair" ability should be lower damage, but slow the opponents movement speed. Any objections?
I'm not sure that "festering wound" is a good name for the Lich's stealing life attack (where it damages others and regenerates the Lich). Further, I thought it would be a cool name for the attack that the undead behemoth gets -- he is a nasty, unclean zombie-ish unit after all. My thought was that on every attack, the undead behemoth would have a chance (25%-ish) of inflicting their target with an effect called Festering Wound that would lower their armor by 25 points and cause them to loose 25-ish points per tick for 10 seconds. The damage component is low, but it stacks, so each time the effect goes off, there is an additional -25 armor and -25 per second. This would keep the "undead behemoth" (and we'll need a new name for that unit since they renamed "daemon giant" to "behemoth" recently) a useful heavy-offensive unit, not competing with the more strongly defensive "behemoth" unit. It also makes having multiple unit types more effective, since they each bring to the battle unique abilities. Thus, the -25 armor would often end up being more destructive when there are other units attacking. The only other thing I was wondering is about giving it a small splash-radius and setting the effect up as foe-only so friendlies don't get effected.
One final thought: I was thinking it would be cool if a scripting interface were added to the engine. This way, some of these one-off rules, like minions dying when the necromancer dies, could be implemented in a script rather than changing the code. I don't have much experience implementing such scripts, and it would require a lot of C++ code to interface the namespace of the scripting language to the core C++ classes, but it could make Glest the most incredible RTS engine anywhere. My initial thought was JavaScript, because it's commonly known, but then I thought that whatever is used, is should probably be compilable to keep execution times low and also not Java (as much as I love Java) because it eats so much memory and Glest runs well on cheap computers. Either way, the scripting could be embedded directly in the XML files in the body of a <script> tag (just like in html). I just think that an interface like that would just top it off and make the Glest engine a no-brainer for anybody wanting to make an open source RTS.
Again, the Glest source code is some of the most well written code I've worked with in a while, it makes modding it really easy.