Skeletons!
I just finished adding support for multiple enemy types. The maps now have both zombies and skeletons. There are weak, strong, and boss versions of both. You can infer what kind they are by how fast they move and where you encounter them.
I just finished adding support for multiple enemy types. The maps now have both zombies and skeletons. There are weak, strong, and boss versions of both. You can infer what kind they are by how fast they move and where you encounter them.
I added support for map containers and switches. Currently these are all “pressure plate” type activation, where you merely walk onto a certain tile area to interact. In most games of this genre you click on objects to interact with them: I’ll add this method soon.
To accomplish these interactions I have two new Event Components for map events: mapmod (edit the current map) and soundfx (play the specified sound effect once). Each map event can have up to eight components. As an example, here are the Event Components for throwing a switch that opens a portcullis:
Thinking about Powers again. I want to remove passive powers and separate melee vs. ranged powers. The new working list:
Physical Offense - Shoot (basic ranged attack) - Rip Strike (melee attack that causes Bleeding) - Multi Shot (ranged attack that fires three missiles) - Cleave (melee attack with a wide area of effect) - Piercing Shot (ranged attack that ignores armor and goes through enemies) Physical Defense - Swing (basic melee attack) - Shield Block (raise shield to increase defenses) - Warcry (remove debuffs and scare enemies) - Charge (rush and knockback a target) - Vengeance (after blocking, deal an accurate heavy attack) Magical Offense - Lore (get more info about items or nearby landmarks) - Arcane Bolt (missile that bounces to another enemy) - Earthquake (stun nearby enemies) - Freeze Ray (slow enemies in a straight line) - Burn (burn enemies in a large distant area) Magical Defense - Return (teleport to a previously-discovered safe point) - Heal (restore health) - Magic Shield (absorbs damage) - Teleport (instantly appear at target area) - Time Stop (freeze enemies for a few seconds or until you act)
I’ll make new icons and update the Build Calculator and Powers pages soon.
I added footstep sound effects to OSARE (look at the Google Code link for the bleeding edge stuff). The game’s animations are frame-based not millisecond-based so everything slows down when framerate drops; thus I need to play a new footstep noise every time (I can’t just put it on a timed loop).
Oddly, SDL_mixer was having trouble playing sounds this rapidly (2.5 steps per second when running, it would simply skip playing some steps). I toyed with settings until something worked. On the initialization call Mix_OpenAudio(), I changed the last argument from 4096 to 1024 and it made a difference. It seems to work now in OSX and XP. But I don’t know why changing the audio buffer there makes a difference.
I started having the same problem when adding new sound effects, even with the buffer at 1024. I found that reducing their quality (stereo to mono, 44k to 22k) helps. I’m not an audiophile so maybe I’m doing this the wrong way.
OSARE version 0.05 is now up.
I’m gathering my resource files (especially the Blender and Tiled files) for a new download archive. Also soon I’ll be putting stuff into Google Code for easy perusal and tracking.
I’m using Tiled to do most of my OSARE map editing. Here’s how my current process works:
There are two types of collision tiles. Empty (0) is no collision. Red (1) is full collision which blocks movement, sight, spells, arrows, etc. Blue (2) is partial collision that only blocks walking, but sight/spells/arrows/flying is still allowed. Blue is used for low obstacles the player can see over and for water/chasms.
Files:
Today I tried using Tiled to edit maps for OSARE. It took a bit of work to set up, but I think it’s worth it.
My maps use CSV for tile data. The latest Tiled release (0.4.1) supports writing map layers in CSV. So I can use Tiled to edit maps, then just grab the piece I need from the output XML file.
Tiled expects tilesets to have consistent tile sizes/spacing, but I pack tiles in my tileset to save space. So I made a new tileset image for my dungeon tiles where each tile is 64×128. Tiled handles this tileset beautifully. I still use the packed tileset for my game, for performance.
Tile index 0 is blank space in Tiled and in my engine. The first tile on the tileset image is given index 1, so I have to position the tiles accordingly.
Also, the CSV map format uses decimal; OSARE uses hex. The easiest thing is to allow map files to define the layer format it uses, that way I can copy/paste layer data directly from Tiled files.
Tiled will be great for laying out the map graphics. With a bit of tinkering I think I can make enemies and events with Tiled’s Object Layer.
Check out this map I’m working on and the accompanying dungeon tileset.
qubodup has plugged OSARE over at the Free Gamer blog. Sweet!
Collecting my thoughts on map loading. The following things have to occur to dump an old map and load a new one:
I’ve been pretty busy with life and work, so I haven’t really touched anything yet for 0.05. The first step is to narrow down what sounds fun to work on. If I think about the project as a whole it’s overwhelming, but if I focus on a short list of tasks it’s manageable.
Category 1: Map Interaction
Category 2: Menu Interaction