Hi All,
I have added some enhancements to support player minions. Attached is the build for Windows (its a zip file but i couldnt upload it without altering the extension). The attachment is just the main app exe and so needs the necesary dlls and content files to run. Its built on top of the main code base from around two weeks ago so i guess should be compatible with the latest mods files. To give yourself a summon power, you just need to give yourself a spawn power in your save file. There are no special requirements for the summon power and it just needs to be the same as the spawn powrs used by enemies currently. A couple of notable points about the new functionality below.
I still have a couple of improvements in mind but would be happy to read any feedback.
Ryan
The easiest way for developers to give feedback on your changes, would be uploading your changes to a fork of
https://github.com/clintbellanger/flare-engine or https://github.com/clintbellanger/flare-game
Hi Ryan,
I've unpack your flareproject.exe in my flare folder(0.17.1 installed on windowsXP).
But when i lauch it, nothing append expect a black screen during 1second.
Is there any files to add ?
Is there the source for this? Remember that the source should be made available for this build (for the GPL, but I also imagine it's of more use for the developers, and also would allow testing on other platforms...)
ok i will see about creating a fork this evening. This is my first time using github so bear with me.
cuicui69: im not sure why its not working but maybe its incompatible with the 0.17.1 mods files. I believe there have been some changes to the mods files since that version. I remember seeing some new character class files and there are also changes to the character equipment slots in the latest version (which I guess would have an affect on the save files and equipment files).
ryan : ok, so on wich version can we try ?
Fork now available on github - RyanDansie/flare-game
This enhancement is really fun to play.Great enhancement of the engine :)
For the record: the spawn powers are 133, 134, 137
However I'd like to start a discussion on a few things: (I'll defend the way zangband implements pets, as it is a really enjoyable game, despite lacking graphics)
I'd disable that on default, as the minions are only helpers to get your way through the lands, not your exp source.
Should the minions have collision?
I'd do so as minions just come not only with advantages, but also disadvantages, hence operating in small caves may be hard.
a) Stay close
*b) Follow me
c) Seek and destroy
d) Give me space
e) Stay away
f) pets may not open doors
g) pets may not pick up items
h) Display current pets
Dismiss pets
Thanks for the feedback. Here are my thoughts on your discussion points:
Retreat when near death
Defend the player (target those enemies which are attacking the player)
Target enemies causing the most damage
Target enemies being targeted by the player
Walk in front of player/surround the player when not in combat
Generally I think that options like this are overkill for your typical summoned minion. I think your typical minion would be expected to have the same behaviour as the enmies. It could be relevent for a more intelligent npc ally e.g. like a mercenary or other human companion. If these sort of allies were available, perhaps they could have a menu screen to configure such options. Some shortcut keys to give ad-hoc commands could also be good e.g. commands like "Protect me", "Retreat" or "Move here".
Some other points which require some thought are below
And finally, some other ideas I am thinking about:
You can always use stuff like "reserve mana" (aka when you summon you reserve X% mana) or simply have the minion "drain" your mana (as long as he is summoned you louse like 2MP per 3 seconds).
This way you ensure that non-spellcasters can't abouse this and summoning more then 1 minion might not be the best Idea.
Minion stats shoud be equal to the summoning skills (the better the skill the better the minion) or a sytem equal to this
Lvl 1: 50% change to summon (the other 50% you get a hostile minion) a lvl 1 minion
Lvl2: 55% chance to summon a lvl 1 minon
Lvl3: 55% chance to summon a lvl 1 minion while 5% resulting in a lvl 2 minion
etc.
so at higher skill mastery the minimul level of your minion is guarantied (or hell you cen even incrise the nr. minions).
So I was looking through the code.
It turns out as of now it is only actual code, so part of the engine and not a game itself.
So if you plan to do a pullrequest sooner or later, you should rather put it on a fork of
https://github.com/clintbellanger/flare-engine instead of
https://github.com/clintbellanger/flare-game
The -engine repository contains actually only code, whereas the -game repository contains all the graphics, maps, quests (and also the code)
The -engine repo is intended to be used by more games than just flare-game, such as
https://github.com/makrohn/polymorphable or
https://github.com/makrohn/concordia
And having minions might come handy in different games apart from flare-game as well :)
I like it, and it feels great. It also has a LOT of code, and I wonder about the overhead that entails (for CPU and for maintainence). Also, it seems like there's an arbitrary limit of Two Per Summon Type - it should probably either be 1, or configurable. The only other thing I'd really like to see is being able to hover over your summons to see the current HP.
Yeah code wise, there were some copy/paste things from enemy classes. Maybe it would be worth checking if some of these methods could be moved to the common entitiy thing.
If this gets accepted, you can bet it'll end up in Concordia somehow. My Ranger tree would love some summons.
Thanks for the positive feedback. Im assuming that the code will not be wanted in the main project but let me know otherwise:
https://github.com/clintbellanger/flare-engine/issues/395
Anyway, I will move the code to an engine fork instead of a game fork and continue implementing some of the other ideas.
So if I understood Clint correctly, this is going to be in mainline after 0.18 is out (end of this month, http://www.flarerpg.org/blog/20130306)
Large changes/extensions are better pulled at the beginning of a development period, so lots of testing can be done.
**deleted**
Another thought which came up during discussion on irc:
(Feel free to join #flarerpg at freenode :)
Maybe we could implement the minion system by just exchanging/adding the EnemyBehaviour class.
So we would not need a MinionBehavior and MinionManager, which currently has copied lots of the respective EnemyManager and Behavior class. Instead the minion is technically an enemy, just with a different behavior.
This would bring some advantages:
http://webchat.freenode.net/?channels=flarerpg for those who are unfamiliar with irc
Another advantage to the idea: We already have lots of enemy code there, like showing a HP bar.