post_powers and the power config file
Hi! I've been messing with the new config file for powers and it's really exciting. It's pretty easy to create your own powers now. I did make a few observations and I wanted a few clarifications on how it works. I would like to insert a disclaimer here, however: I've been doing things you're probably not supposed to be doing, so naturally, there would be weird, clearly unintended and unanticipated effects.
First, I noticed that when you use the post_power setting, the new power originates from the affected creature. This makes sense in some contexts (eg. Blood Spurt, etc.) however, it limits the usefulness of post_power. For instance, I tried using shock as a post_power, thinking to make a type of chain lightning. What actually happened is that the creature fired a bolt of lightning back! Another example is I used Heal as a post_power thinking to make a vampiric strike. This actually heals the affected creature (when the creature wasn't killed, of course. Also, see below for more on Heal as a post_power).
An observation (related to the first): The bolt of lightning fired in return by the creature always fired in the same direction, regardless of where the creature was facing. It may be more exciting to have the creature's response power be aimed at the hero. (Assuming you keep post_power originating from the affected creature.)
Probably related to the previous observation: I used Teleport as a post_power. It actually functions quite hilariously (Oh? A boss? Teleported!) but the main problem is that the creature simply disappears to nowhere. (Quite literally, I think it's gone from the map). I tested this by having a teleporter arrow fired at me by an enemy creature. I ended up in a black, empty map. Perhaps it would be exciting for teleport as a post_power to move the target randomly or in a certain direction?
Another thing is that damage is always determined by base_damage equalling melee, ranged or magical. While I agree with this method for the most part (damage should be based on the equipment), it would also be nice to be able to define a custom number or range to create more variety in damage. Think of a spell with huge area of effect, but relatively low damage. Maybe there's already a way to customize the damage output of a particular spell?
Another observation/bug: When "Heal" is used as a post power, the game sometimes crashes. I imagine this is due to the creature gaining more health than its maximum, but I'm not sure.
If you've made it through that wall of text, congratulations! I probably shouldn't have been making tweaks that would obviously break the engine, but your power config file was sooooo tempting! :D Great work!
This is hilarious!
I was hoping someone would experiment with this stuff, as there are obviously weird combos that I wouldn't have thought of.
The idea of post_power is to have some effect happen when a spell lands, usually just a non-hazard graphical effect. I plan on adding a pre_power as well so that interesting graphical things can happen. This is obviously to accomplish things like blood spurts or sparks, but it definitely opens up some fun things...
I'll check on that Heal post-power effect. It might be doing something bad like dividing by zero. Obviously not a combo I anticipated.
I'll also check on that Teleport post-power. Probably the "Teleport Target (x,y)" isn't set, so it might be porting to random/garbage int which will almost always be way off the map.
I can add static damage (instead of weapon-based damage) to spells. I also plan to add a multiplier option to damage e.g. does 150% of weapon damage, or 50% of weapon damage.
I have plenty more to do for powers.
I'll find a cut-off point and release what I have soon!
Thanks for responding so fast! Obviously I opened up a huge can of worms here, but I'm glad you think it's worth exploring. It may actually be better in the long run to use a diversified, mature post_power system than actually coding in dozens of base spell types (eg. chain lightning just uses a "Shock" spell as a post_power, or vampiric effects can be added to any spell simply by adding the post_power "Drain Life" to them.) But obviously you would know better than me there.
Oh, another observation I had: I set up one of my melee powers with a "Fireburst" spell as the post_power. The interesting effect was every time I hit them, I took damage from the resulting Fireburst explosion (because it originates from the creature I just hit).
While at first I really liked the static damage option I described, (and I still would think it nice to have it implemented), I like even better your damage multiplier option. I think that keeps better to the idea of your equipment defining damage.
Once again, great job! I'm very impressed with your work. I would suggest ignoring most of the things I've said here until after you release FLARE v0.11, since that's going to be a big deal to everybody still playing v0.10.
I definitely plan on having only a few base spells, typically defined by the "motion" of the spell.
Current Base Types:
And I'll be adding
I'll also add a MissileCount and MissileAngle to the Missile spell so that it's easy to do Multishot. Then it'll be easy to give bosses an 8-direction missile.
I will add an "auto-aim" option to spells that just aims at the nearest valid target -- that's probably how I'll do the post-effect to achieve Chain Lightning.
You're thinking along the right lines. Plenty of good ideas here. I definitely need to get 0.11 out the door.
Perfect! MissileCount and MissileAngle will be pretty awesome. As far as the auto_aim option is concerned, could you also add a random_aim option? Think of a weak missile that when it hits, it shoots out 2 or 3 randomly aimed missiles of the same type. In a large group of closely-spaced enemies, it could be a powerful chain effect, but when there's 2 enemies, or enemies spaced far apart, it would be nearly ineffective, because of the random aim.
I'm fairly excited to get 0.11 ready for release. Do you have any non-code jobs that need taken care of that you would want help with, eg. populating the cave map, etc.? (I do code, but I don't know your code well enough to help...)
Edit: Maybe help with documentation?
Random aiming would be great, I like that as a possible post-effect.
If you want to take a crack at populating the cave map, go for it! It's one of the final things remaining for the 0.11 release. Adding existing creatures is easy enough.
I wanted the cave to have slightly tougher creatures than the dungeon area, maybe enemy level 5-8. You'll see I made three new Antlions for the caves: spitter, blinker, burster. I need to make a few more creature variations for the Caves (at least some goblins and minotaurs). If you have ideas or want to take a crack at making them, lemme know.
If you really want to make new monsters, try this out. https://code.google.com/p/flare-engine/wiki/MonsterLevels It's untested, just a first stab at how monsters might scale. Some existing monsters need to be edited. All of it will be tested (and probably changed drastically).
If you're interested with helping with documentation instead, that would be great too. The main need is to document the file formats. If you want to do this, I'm happy to answer all questions. We can put the resulting docs in the wiki. The documents aren't really time-sensitive or tied to the regular releases. I plan to get around to it eventually... maybe in the break between v0.11 and .12, especially now that there's a lot to play around with.
I'll go ahead and start populating the cave map, and then I'd be happy to help with new creature creation or documentation. I can't use blender (I've never learned) so I can't produce any art, but I can at least make new monster files.
I've seen (and already used) your new antlions. I really hate those spitters. Which, of course, is the reason I'll put them in the caves. I can whip up a few new creature types as well, if you'd like. I have already seen your Monster Levels wiki page; I'll apply those guidelines to see if they are balanced.
Question about creature placement on cave maps. On the normal maps, you have the "half wall", so that visibility is increased. In the caves, no such tile exists and it's difficult to see the creatures sometimes. Do you like the idea of creatures jumping out from behind the wall to attack the hero? Or would you rather have all enemies visible by default? I think it adds to the creepy ambiance of the caves to rush forward to attack a lone antlion only to be ambushed by 3 more. Players may not like the "gotcha!" effect to it, though.
I like the spitters too! Essentially, under the hood, they're the same as skeleton archers or goblin spearmen. It's a plain missile. But it's funny how just a few variable tweaks and new art can make something so vicious! Hint though: fire resist gear really helps. It rounds in your favor, so even 1% fire resistance will reduce fire damage by 1 point.
I think antlions or zombies that start behind cave walls is perfectly okay. Used smartly/sparingly anyway.
On those tiny dead-end rooms I might put some chests or other containers. If you can figure out how the container events work feel free to add them, otherwise I'll go ahead and add those after.
Tip: I suggest having a copy of the cave map open in Tiled and using the mouse cursor + status bar to see coordinates, to place enemies.
It seems next release will be very interesting ! :)
I'm currently coding skills too, and there are great ideas here (haven't tought about random aim). Could you post a typical skill definition from the config file ? Do you plan to use a standard such as xml or json for config files or making your own format ?
Tartos,
Here's the current Powers definition file
https://code.google.com/p/flare-engine/source/browse/trunk/resources/pow...
I'm using a primitive "ini" format for most of my config files. I'm open to the idea of moving to something more standard at some point.
All,
https://code.google.com/p/flare-engine/wiki/PowerDefinitions
A hastily-thrown-together help page for the powers.txt file.
I've got most of the map working (creatures and a few surprise events), but I am having trouble figuring out how the loot property works for events. What do each of the numbers mean?
Pfunked wrote :
- loot=random,x,y,level OR loot=id,x,y,item_id (x and y are the tile in which to spawn the loot).
Example 1: spawn a random level 4 treasure in map position 10,10. loot=random,10,10,4
Example 2: spawn a longsword ( http://clintbellanger.net/rpg/item.php?id=200 ) in map position 10,10: loot=id,10,10,200
Tartos is correct.
Note: treasure can drop +/-3 levels, on a bell curve % chance (5,10,20,30,20,10,5). So if you place a level 4 treasure, there's a 5% chance of getting a level 1 treasure and a 10% chance of getting a level 6 treasure.
Followup-Note: if the treasure roll determines a treasure of level 0 or below, no treasure is given.
Creatures drop loot based on their creature level, same bell curve math applies. But each creature has a % chance of dropping loot at all, whereas map events always drop treasure as specified.
At some point I will add Powers and Enemy Spawns to events. So a trap room might spawn a load of zombies, or a trap tile might shoot a poison dart at you.
Okay, the cave map has been populated, and there's a few events in there too. I couldn't figure out how to add in barrells and crates because they aren't in Tiled yet... so you'll have to add more stuff to loot.
I created the Goblin Shaman as a new creature, but he has no new powers. (He just uses shock and the protection spell). He also has no visual distinction from the other goblins.
Also, I created a commented out entry at the bottom of the cave1.txt file for an antlion queen, if you ever decide to make a large version of the antlion. It should be easy to just scale it larger, right? (I have no idea...) Maybe baby antlions would be good too?
cave1.txt: http://ubuntuone.com/p/eph/
goblin_shaman.txt: http://ubuntuone.com/p/epi/
Give it a play and see if it works or if it's what you're looking for. Of course, feel completely free to change anything/everything around if you so choose.
pennomi, excellent! I'll go in and add some treasure. The rest is great and just the feel I was going for.
And great job on the goblin shaman, he was a fun little fight.
It should be easy to add baby and queen antlions. I might do that later. I want to add unhatched egg tiles to the map and use events to spawn swarms of baby antlions. But that'll take modeling so I might save it for a deeper level of the cave.
Glad you liked it! Did you find the two "surprise" events? The one is going to need a new sound effect. I was looking for one on OGA, but couldn't find a suitable sound. Maybe you know someone who can do that? (Sorry about the ambiguity here... it just might be more fun for people to discover them on their own ;) ).
Oh, and I forgot to mention that I modified the Tiled map slightly. Do you need the updated .tmx file?
The surprise events were great! I like how you handled the monster position on one event. And I'll look for a great sound for that other event.
Sure, please send the updated .tmx -- is the update just related to that minecart-room event?
I did miss a couple things in the goblin room the first time around. I might make those activation zones a bit larger.
cave_level1.tmx: http://ubuntuone.com/p/eqJ/
Yes, the only thing I edited was related to the minecart-room event. I had to flatten out the wall north of the event to make it work correctly.
How do you make an activiation zone for an event larger? In fact, what do the last 2 numbers on events actually do? I think I just copied them from an already existing event in another map.
pennomi, the last two numbers on event location are the tile width and tile height size of the activation area. The location (x,y) is actually the "top-left" corner of the activation rectangle.
Examples:
- A single square activation might look like 50,50,1,1
- If you want a 3x3 square centered on 50,50 it would be: 49,49,3,3
Side note: each event can have up to 8 actions. Actions are anything that's not type or location. For now, if you want a more complex event you have to overlap two or more events (see the final room of the Complex for a large example). This is silly and unintuitive so I'm going to change the 8-action limit at some point.
pennomi, I'll add you to the credits to the game. Do you want to be credited in a specific way?
Whichever way is standard is good for me. Feel free to use my real name; Thane "pennomi" Brimhall will do just fine. If there's ever anything having to do with license, just release my contributions under the same license as the rest of the game. (GPL or CC-BY).
Added you to:
http://clintbellanger.net/rpg/contributors.php
and
https://code.google.com/p/flare-engine/wiki/Credits
By the way, "Thane Brimhall" is a kickass name. Sounds like you just crawled out of a mountain with an axe stained with goblin guts.
Yeah... I was about to comment the same thing. You really won the name lottery. Would you mind if I named one or more dwarves after you in the future?
Haha, I never really thought about it, but I guess so! I'll make sure to congratulate my parents on their excellent choice!
Feel free to use my name as you like! The only thing I'd ask is you send me a message notifying me when you do it, so I can brag to all of my friends. ;)