Enemy Powers
Playing with enemy powers is far more fun than I expected.
If you check out the latest update you’ll find a few bizarre monster combos. My favorite is teleporting antlions.
Playing with enemy powers is far more fun than I expected.
If you check out the latest update you’ll find a few bizarre monster combos. My favorite is teleporting antlions.
v0.10 added hero powers in a pretty crude way. I added power variables as needed until the entire first set was complete. With that finished, now I need to move all the powers out to config files.
Power config files will contain variables like name, description, requires_mana, animation type, graphics and sounds, etc. Then I’ll have to modify the PowerManager class to handle any variation on powers, instead of branching on specific powers. PowerManager will also handle an arbitrary collection of images and sounds.
The Powers menu will be changed under the hood. A config file will allow slotting any power into the given slots. Powers could be swapped out. New powers could be added for even-numbered stat combinations. In the future, the entire layout of this menu will be configurable (but probably constrained to the given window size).
Each power will still rely on a base type. Current base power types:
New power types will simply be added as needed. I don’t mind having base types that are very niche (only used by one power) but it would be nice if I can generalize them (e.g. turn Missile x3 into MultiMissle that can handle X missiles separated by Y degrees. Should be possible to make a multimissle spell that, for instance, shoots missiles out in a complete circle around the player). Ground Ray will still be pretty niche, but at least similar powers can be done with a different visual style (e.g. a flame wave or shockwave).
Hooks will need to be added for powers that work in special ways. E.g. Block is an entire state, not just a power that occurs briefly. Vengeance is a power that is activated and expended in areas of the code unrelated to Powers in general. In the case of Block, it might simply need to be its own power type. Vengeance could belong to a new class of powers that trigger upon attack (Life Stealing could be added to this type).
All this effort so that we can easily slot powers for monsters…
Enemies don’t have PMOD stats in a meaningful way. Instead, enemies will have four fixed slots for powers.
Furthermore, enemies will have % chance per frame of activating these powers. This % can be zero (e.g. some creatures can simply have no magic, or no ranged). First, the enemy will determine whether he’s in melee range or physical range. Then, a random chance to active the appropriate powers.
Each power (in the config file) will have a unique numeric ID. Then, each enemy file will allow assigning these power IDs into the four creature power slots.
Further behavior will be determined by simple % chances to act. E.g. some creatures will favor staying at ranged, so they will not approach the hero (instead, staying back and using ranged powers).
The “Tilesetdef” file for the Cave tileset is complete and checked in.
For those wondering, this is the file spec:
The first line is the name of the .png file for the tileset. It’s assumed this file will be in the images/tilesets folder.
Each line after that contains the following data:
where
Tilesets are not arranged exactly the same way each time e.g. swapping tilesets on a map does not yield a usable map. But the tiles are put into these basic categories. (The categories above 0f are not enforced in any way, this is just to help keep them organized)
The first version of the Cave Tileset is complete. Check it out over at Open Game Art! I still need to create the tilesetdef file so it can be used in-game. I might get around to that tomorrow.
Rather than create full cave maps now, I’m sort of doing cave room sketches in Tiled. Putting together interesting set pieces. Then, later, it’s just a matter of copy/pasting and connecting them up to make larger, thematic caves.
In the above render I’m experimenting with a serene sort of cave with a monolithic rock surrounded by water. I love when game maps have landmarks that don’t require explanation but instead leave you in wonder. Also, you see I’m using cave litter sparingly. Too much and the scene is cluttered; too little and it seems empty and unfinished.
Here’s a hub room for a mining operation. Would work great as a classic “first dungeon” for a young, frightened adventurer.
You are in a maze of twisty little passages, all alike.
I made two small changes in some of the file formats. I wanted to make these changes now before too many people rely on them. Basically these new values make much more sense.
If you try the latest code and want to preserve your save game, simply delete the entire line that starts with “spawn=”. This will cause you to spawn at the beginning of the starting map, with everything else intact.
I put up a new Google map showing contributors from around the world. It’s rather blank so far; I’m contacting major contributors now to get permission to pin them to the map! (If you have contributed, please contact me!)
Added a tutorial on how to create good-looking isometric 2D tiles using Blender. This should help anyone get started in making custom art for OSARE (and most other isometric games).

I have next week off from work. Staying at home. Letting the brain rest. So I’m also putting a moratorium on new osare code next week.
Instead, I’ll spend the week relaxing and making osare art. I’m hoping to put together the beginnings of two new tilesets: grasslands and caves. I started making grass and water tiles way back, but I think I can improve on them now.
Version 0.11 will likely center around monsters. Now that the hero has Powers, it’s only fair if we get skeletal archers and goblin witch-doctors.
Features coming up soon that will probably go towards 0.11
Anything much further ahead is wildly subject to change, but here’s a rough roadmap to the future. Some of these might be broken into multiple releases.
New in this version: