Home
2010/09/05
OSARE v0.09 Released
A fast release this time! Less than a week since v0.08, I've been having lots of fun coding updates.
- Games are automatically saved upon exit.
- Level Up system in place!
- You must meet requirements to equip items now
- Now you can respawn after dying
- Gold added to loot drops! Though nothing to spend it on yet...
- New map "Averguard Complex" added!
Note that bows and spells still don't yet work. These will be coming up in v0.10! So for now, you'll want to upgrade Physical and Defense skills, as the others won't help you much.
2010/09/04
Averguard Complex
Added the last wing of the Averguard Keep: the Complex. The monster composition is significantly harder than the other wings.
2010/09/03
Experience and Leveling Up
I'm on a code spree; v0.09 might come soon.
The major addition I wanted to do for v0.09 is XP and Levels. I plan to use a very simple system to start: xp granted by killing a creature equals the creature's level. So a level 5 creature gives 5 xp. This is reasonable; creature difficulty also scales linearly.
Then comes the philosophical question: how much XP to gain levels? I think I found the correct answer: "Depends on how much content there is". Basically I'm going to playtest the game, and when it feels like I should be gaining a level I'll find a nearby XP cutoff point. This point will change as I add more of the game world to explore.
The important code for XP will be on the Character menu. Each level gained (2 through 9) the player can increase one core attribute (physical, magical, offense, defense). Anytime the character menu is open and not all points have been spent I need to display [+] buttons for spending those points.
I've decided to not bother adding a respec/reset button. It's easy enough to do out of game: edit the save game file and set build=1,1,1,1. Then when you load your game you can reassign your points.
Finally I need to enforce requirements checks when equipping items. This should be easy, as I think MenuInventory already has a reference to the player's StatBlock.
[--update--]
XP, leveling, attribute upgrading, and item requirements checks added. Please let me know on the forums if you test this.
Here's what I did for now, for the XP requirements. I want the number of creatures to be killed (thus, time spent at each level) to increase logarithmically (20,50,100,200,500,1000,2000,5000). So the scale looks like this:
- 20 lvl 1 kills to 2: 20 xp
- 50 lvl 2 kills to 3: 100 xp (120 total)
- 100 lvl 3 kills to 4: 300 xp (420 total)
- 200 lvl 4 kills to 5: 800 xp (1220 total)
- 500 lvl 5 kills to 6: 2500 xp (3720 total)
- 1000 lvl 6 kills to 7: 6000 xp (9720 total)
- 2000 lvl 7 kills to 8: 14000 xp (23720 total)
- 5000 lvl 8 kills to 9: 40000 xp (63720 total)
How long does it take in a hack & slash to kill 10,000 creatures? I have no clue, really. Sounds like hours of gameplay though. I timed myself getting to level 4:
- 3 minutes to reach level 2
- 6 minutes to reach level 3
- 15 minutes to reach level 4
The number of kills required approximately doubles each level, and as expected the grinding time doubles also. Projecting the rest of the levels:
- 30 minutes to reach level 5
- 1 hour to reach level 6
- 2 hours to reach level 7
- 4 hours to reach level 8
- 8 hours to reach level 9
Total 16 hours of gameplay (not counting quests, trips to town, etc). That's a pretty solid number. I'd need a good collection of maps to make 16 hours work.
2010/09/02
Gold Coins
The latest check-in has gold coins dropping from creatures/containers. Warning: if you get over 2 billion gold you might end up with negative 2 billion :)
Respawning
The latest Google Code check-in allows respawning. Grab this updated code if you like collecting epic magic items!
Save Game Files
This makes me start to think about Save Game files. I plan on using plaintext save files. This might entice some people to cheat, but how rewarding is it for some young person to edit their own save games and experiment!
What needs to be stored in the save game file:
- Name
- Experience
- Skill points spent (PMOD)
- Equipped and Carried items (68 slots total plus gold)
- Action Bar customization (12 slots total)
- Respawn point (map name and coordinates)
- Campaign Flags and Quest data
- Achievement Statistics
Of those, the only implemented features are the items and respawn point. I will be working on gold, experience, leveling, and action bar stuff for 0.09 and at that point a save file makes a lot of sense (and should be easy to do).
I've added simple save same support added in the latest check-in. The game is saved to saves/save1.txt. Edit the file if you want to change your hero name (or cheat by giving yourself uber gear). Delete or rename the file if you want to start a new character.
2010/09/01
OSARE v0.08 "Loot" Released
The newest OSARE release is focused on loot. Over 500 items are in the game, dropped from enemies or found in treasure chests. I also added the starting logic for the Log Menu (and a heads-up log display). Finally, there is a new starting area called "Goblin Warrens" where you can fight low-level creatures to scavenge for beginner equipment.
Downloads
2010/08/30
Bug Testing for v0.08
The latest OSARE Google Code check-in is my candidate for v0.08. Included is nearly 600 game items, lootable from creatures and containers. You start without any equipment, so it's kinda fun to see how long you can survive with what items drop.
If you test it (build from source), please send feedback. If no major bugs appear I'll publish the Win and OSX binaries in a few days.
2010/08/29
Item Database
All of the coding is done for the v0.08 loot update. Woot!
What remains is adding all the starting game items to items.txt. This is impractical to create or maintain by hand. What I'm going to do is put all the item data into a MySQL database and use PHP to create the items.txt from that data.
Once the data is online, I can easily create a webpage to search/browse items.
2010/08/26
Loot Stats
Finally got all the starting loot animations done. As far as I know, this means I'm completely done with art assets for v0.08. More will be added in later releases but this is plenty for now. I checked those animations into the OSARE svn, so you can see them in action if you don't mind compiling.
Next up is adding all the item stats. I have plenty of starting stats worked out, though I need to work on item names for bows and armors. This is all stored in the /resources/items/items.txt file. I will probably create a mysql database of the items and some php to create the items.txt. Then I could make a real item database/lookup section of the OSARE website. Sounds win-win to me.
I have two major code pushes left for v0.08. First is loot from containers. This shouldn't be too bad. In the map files I assign a level to each container event (default: level 1). When a container is opened, use a similar chain of events as killing a creature to produce loot.
The second major feature, and of course the whole point, is picking up loot. Right now when the menus are closed, mouse clicks are assumed to be basic attack actions aimed at the cursor. Loot will have a rectangular click region to be picked up. When someone clicks on the playing field, I have to check all the loot to make sure the mouse click isn't aiming for loot pickup before assigning it as an attack action. Similar code will be added for the action bar (don't know if that will be added in this release).
Then it's a few tiny bits of cleanup code. I need to add % chance of dropping loot to creature definitions. Bosses will drop loot 100% of the time, weak zombies maybe 5%. This is a pretty minor update; I'll add it right before releasing v0.08 though, because testing loot is easier when every kill basically drops something.
2010/08/18
Loot Animation
Making a list of the loot animations I need. Just to keep track. Essentially every item type has a unique icon and loot animation, and possibly a character layer if it is a main/off/body item.
0.08 will contain at least these loot animations:
- Dagger
- Shortsword
- Longsword
- Greatsword
- Wand
- Rod
- Staff
- Greatstaff
- Slingshot
- Shortbow
- Longbow
- Greatbow
- Clothes
- Leather Armor
- Buckler
- Steel Armor
- Shield
- Health Potion
- Mana Potion
- Ring
- Boots
- Belt
- Generic Gem (white and shiny)
It feels like I'm putting a lot of effort into content and not into the engine itself. But, a long loot list will give me enough variables to play with to see if my implementation is flexible enough for real game needs.
2010/08/08
Loot
Lots of real life events have been overshadowing my OSARE time. Thanks to all of you who still have interest in the project.
I'm only 2-3 coding sessions (and an art/data session) away from being done with loot. Currently in svn I have a good dagger and shortsword "flying loot" animation done, and I have those dropping off creatures. The coming data push will add a couple dozen more loot animations and a few hundred items.
I still have to add the "click to pickup" mechanism for loot. It's not a particularly interesting set of code, but once that's done I should be able to use similar routines for other items. At this point I'm considering a ClickRegion struct (similar to the current Renderable struct) that can be generated by dropped loot, containers, switches, etc.
Finally I need to add support for loot to be generated from containers. I'll probably assign a loot container a level and % chance to drop an item, much like I do with monsters.
2010/07/08
Unicode
Unicode is slightly intimidating, but I think I've found the most useful way to tackle it in my game.
GNU Unifont is a GPL-licensed bitmapped font that I can work with. It is fixed height (16 pixels tall) and fixed width (8 or 16 pixels wide) so coding for the font should be easy. In C++ I could use double-width chars (wchar_t) and I should be able to find matching string functions.
Working with OpenGameArt means I'm working with artists from all over the world, and plain ASCII won't cut it for most of the people who already have direct interest in the game. If I support Unicode, at least someone could modify all my game data files to make a native translation.
Of course, just supporting a Unicode font isn't enough. I need to add RTL text support and possibly modify some menus for those languages. I need to macro lines like "Increases accuracy by 5" so the sentence can be reworked and rearranged for the target language. I need to isolate the displayed text as much as possible so that translators don't have to hunt for changes. Finally, ideally, I need to support choosing language at runtime or at least in a config file.
Language translations isn't the exciting part of making a game. My development model for OSARE has been to make the fun parts first, then make it work properly/flexibly later. Unicode/translation support might actually come once I have most everything else in place... perhaps around that phase where most of OSARE's features are complete and I need to start generating tons of game assets (more monsters/tilesets).
If I use the GNU Unifont format directly, I might not even need a bitmap version of the font. I could write out the pixels just as described in the text format. Don't know what kind of performance concerns that would create with SDL.
2010/06/27
Minotaur WIP:
2010/06/24
OSARE updates might be slow for a couple weeks while I'm apartment hunting. I am still choosing a loot system and I may have settled on something that sticks pretty close to the genre. Updates soon!
It is the business of the very few to be independent; it is a privilege of the strong. And whoever attempts it, even with the best right, but without being OBLIGED to do so, proves that he is probably not only strong, but also daring beyond measure. He enters into a labyrinth, he multiplies a thousandfold the dangers which life in itself already brings with it; not the least of which is that no one can see how and where he loses his way, becomes isolated, and is torn piecemeal by some minotaur of conscience.
- Nietzsche, Beyond Good and Evil
2010/06/21
Analyzing Loot
Choosing a loot system is probably the trickiest part; implementation is a close second. Loot affects most subsystems of OSARE: maps, camera position, renderables, mouse state, tooltips, enemies, inventory, events/containers, etc.
Here's what I plan to do with loot drops.
- Assign items a new variable: level
- Item level will determine the item's sell price and drop chance.
- Item level will also determine automatic loot tables
Item Level
First, let's talk about level. Weapons and armor will be our starting point for determining level.
- Regular daggers, wands, slingshots, and leather armor will be level 2
- Shortswords, rods, shortbows, bucklers will be level 4
- Longswords, staffs, longbows, steel armor will be level 6
- Greatswords, greatstaffs, greatbows, shields will be level 8
I'll use basic judgment to assign the rest of loot.
- Food is level 1
- Potions are level 3
- Gems are level 9
- Artifacts are base level 5
Item modifiers change the level of items. This is calculated outside of the game for now and applied directly to the items.txt file
- -1 damage = -1 level
- +1 damage = +3 levels
- -0.5 absorb = - 1 level
- +0.5 absorb = +3 levels
- +1-3 hp/mp/accuracy/avoidance = +1 level
- +4-6 hp/mp/accuracy/avoidance = +2 levels
- +7-9 hp/mp/accuracy/avoidance = +3 levels
- +1 crit/regen/speed = +1 level
- +2 crit/regen/speed = +2 level
- +3 crit/regen/speed = +3 level
Drop Chance
Now I can automatically generate loot tables for creatures, containers, and vendors. Loot will be on a basic bell curve. When loot DOES drop, what level is it?
- 1% chance: -5 level
- 2% chance: -4 level
- 5% chance: -3 level
- 10% chance: -2 level
- 20% chance: -1 level
- 24% chance: same level as creature/container/vendor
- 20% chance: +1 level
- 10% chance: +2 level
- 5% chance: +3 level
- 2% chance: +4 level
- 1% chance: +5 level
Note I can tag some monsters as "no loot" types (e.g. antlions, wyverns). Instead of dropping loot, you should find loot around their layers (in nests, rubble, dead adventurers, etc). Also I can tag some loot as "quest" types, so they don't appear in random tables.
2010/06/11
OSARE v0.07 Released: Inventory
The newest version of OSARE is ready, this time with the focus on Inventory. In game, open the Inventory (I) menu and try out some test equipment! New in this release:
- Word wrap, size calculation, and font colors on the font engine
- Created a mouseover tooltip system
- Drag and drop support for arranging and equipping items
- Item drop sound effects
- Changing hero graphics based on equipped items
- Changing combat stats based on equipped items
- Adjusted monsters based on combat stats
- Basic test items and a few low and high quality variations
Downloads
2010/06/08
0.07 Coming Soon
0.07's main focus is "Inventory". I will probably package 0.07 this weekend. The current checked-in code represents most (if not all) of 0.07. If you try it out, please send me some feedback.
To get loot drops in 0.08 I will need to decide how to animate loot drops, probably corresponding to each icon. That will be a lot of tedious work. I also need to spend a few days away from OSARE coding, maybe playing other inspirational games.
My target for 0.08 is July, with the focus on "Loot".
My target for 0.09 is August, with the focus on "Powers". That will be a huge milestone, as the core gameplay will be there to experience.
2010/06/06
Artifacts
I got artifacts working in-game. Currently they can be created to boost a few main stats: hp, hp regen, mp, mp regen, accuracy, avoidance, crit, speed. (These bonuses can be added to weapons/armor too, but would be more powerful on artifacts)
2010/06/02
Working on 0.07
I'm working on some fun interface stuff for version 0.07.
- Mouseover tooltips system (done)
- Word wrap and newline support for text rendering (done)
- Inventory display and drag/drop arrangement (done)
- Item Database (done)
- Changing hero graphic based on equipped items (done)
- Equipment stats affect combat (done)
Here's what I'm thinking for 0.08
- Loot drops from creatures
- Loot drops from containers
- Experience from creatures
- Leveling up
- Equip items requirements check
For 0.09 I will be working on Powers and customizing the Action Bar.
2010/05/28
OSARE v0.06 released!
OSARE version 0.06 is now ready for download. New in this release:
- Tweaked some sound effects due to license questions
- Added menu open/close sound effects
- Added map interactions when stepping on certain tiles
- Added opening containers
- Added throwing switches to open doors
- Added support for various monster types
- Added several varieties of zombie, skeleton, antlion, and goblin
Gameplay Video
Downloads
2010/05/27
Antlion and Goblin
Finally finished animating the old Antlion and Goblin models that have been sitting on my hard drive for a year or so. I will probably add a few new animation sequences later (e.g. the antlion needs his burrowing graphics). This means that half of my bestiary is complete (coincidentally, the half of the list that represent lower level creatures).
These low-poly, untextured models are so easy to create/rig/animate. If I tried to put too many tiny details on the model it would make the in-game renders too noisy. Sometimes I want to stop and instead create incredibly detailed 3D models, but it wouldn't add much to OSARE and would slow down my current progress. I always have the option of making better graphics later, and I'm sure the graphics of OSARE will improve as I keep making more. One thing that keeps OSARE ticking is that I just try stuff, do what's fun, and I'm not afraid to just throw something out and redo it.
2010/05/25
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.
2010/05/24
Containers and Switches
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:
- mapmod to change the switch tile from position a to b
- mapmod to change the portcullis tile from closed to open
- mapmod to change the collision under the portcullis to walkable
- soundfx to play a "door opening" effect
Powers Update
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.
2010/05/19
Footsteps
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.
2010/05/16
OSARE v.0.05
OSARE version 0.05 is now up.
- Added map transitions
- Added a starter dungeon with three wings named Averguard Hold (click for map)
- Added support for hex or dec map data format
- Changed definition files to use = instead of :
- Upgraded zombie steering AI. They now pursue to where they last saw the hero.
- Started refactoring to prepare for more monster varieties
- EnemyManager now holds enemy sound effects, so that we only load one copy of each
- I now use Tiled 0.4.1 to edit map layers
- Reminder: use the command-line argument -f (or --fullscreen) to play in fullscreen mode.
- Changed the tileset to use magic pink as the transparency and removed the tileset alpha layer. This should improve performance on most systems.
- Note to self: in GIMP set Alpha Threshold to 32, then remove the alpha channel onto magic pink.
Download
Upcoming
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.
2010/05/15
Editing OSARE Maps with Tiled
I'm using Tiled to do most of my OSARE map editing. Here's how my current process works:
- I have specially-made tileset images for Tiled. The indexes for those correspond to the OSARE tilesets.
- I edit background, object, and collision layers in Tiled.
- In Tiled 0.4.1 I use the "Store tile layer data as: CSV"
- I use a text editor to copy the three csv sections from the .tmx file into my OSARE map files
- Currently I still create the headers, events, and enemies in a regular text editor. I use Tiled's status bar to get my cursor location to get placement for events and enemies.
- Note that the Tiled tileset isn't a perfect copy of OSARE's tileset. I left it brighter to be easier to see when editing. Also some irregular shaped tiled are cropped to work in Tiled.
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:
2010/05/09
Tiled
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 64x128. 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.
2010/05/06
Town Tiles
Testing some medieval building tiles:
[--Update--]
Done! Medieval Building Tiles
2010/04/30
Dungeon Entrances
I've been working on some larger graphics for dungeon entrances and other set pieces.
2010/04/29
Free Gamer Blog plug
qubodup has plugged OSARE over at the Free Gamer blog. Sweet!
Map Loading
Collecting my thoughts on map loading. The following things have to occur to dump an old map and load a new one:
- User steps on a tile tagged with an event.
- A flag is set to load a new map, with the new map filename and position taken from the triggered event.
- GameEngine needs to check for this flag because it is the parent of the following objects.
- MapIso::load(filename)
- EnemyManager::handleNewMap() // add function to remove all enemies
- HazardManager::handleNewMap() // add function to remove all hazards
- Add logic to TileSet: if we already have the correct tileset we shouldn't reload it.
- Set the Avatar (x,y) to the trigger event's destination (x,y).
- Change MapIso and TileSet to interpret tile indexes as hex 00-ff instead of dec 00-99
2010/04/28
Looking Towards 0.05
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
- Map interaction (switch toggle, open door/chest/crate/barrel, extinguish brazier)
- Map interactions that edit the map (throw a lever to open a secret wall)
- Map "pressure plate" triggers (e.g. traps or portals)
- Runtime map unloading/loading
Category 2: Menu Interaction
- Word Wrap support for font class
- Upper ASCII on font graphic
- Draggable Icons (Powers and Inventory menus)
- Icon database
2010/04/20
Commissions Update
Several artists have contacted me in the last couple weeks to see if help is needed on OSARE. I'm already blown away with the interest in this very early project.
At this point in the project I'm not interested in forming a "team" (simply because that sounds too much like work to me). I can do a significant amount of the game art myself, and the rest I pay commissions to get specific tasks done. Especially for areas I'm not strong in: concept art (I'm a very left-brain artist, so I need creative help), music (not a composer), and items that require good painting skills (finished icons, portraits, etc).
Unfortunately, real life has interrupted my commission plans. I will have to put new commissions on hold for at least a couple months. My car died two days ago. I'm digging into my savings to get a new one. Until I get adjusted to these new payments I won't know how much I have to spend on commission work.
In the meantime I can work on getting more features into the engine. Really, the bulk of the commission work will happen when OSARE is in beta (mostly feature complete) and production on an actual game begins. At the current pace, OSARE will be close to feature complete in Fall 2010.
2010/04/14
OSARE v0.04 Release
OSARE v0.04 is ready for download. New to this version is font support and basic menus. I spent a lot of time in the last few weeks creating several iterations of the graphics for the font, menus, and icons
Features
- NOTE: now runs in windowed mode by default (apologies to XP users, windowed mode seems to change the desktop resolution). To run in fullscreen mode use -f or --fullscreen options at command line (easier to use options coming in a future release)
- FontEngine is a class that handles drawing of a bitmap font, with support for left/center/right justify (word wrap coming in a future release)
- Finished the icons for Powers. Commissioned Blarumyrran to finish the icons for the basic set of weapons/armors.
- Character Menu displays the proper info based on the Avatar's stats (level up coming in a future release)
- Powers Menu displays the Avatar's build (dragging powers to the action bar coming in a future release)
- Log and Inventory menus are mostly static. Inventory drag/drop and equipping coming later. I still haven't settled on a design for the Log, which will contain quest info and achievements.
- I refactored all the menus and hud under a MenuManager class. That class controls which menus should be displayed. In a future release it will handle drag/drop between the Inventory, Powers, and ActionBar menus.
- When the core menus are open (Character, Log, Powers, Inventory) the game action is paused.
- The actionbar hotkeys work but clicking on the action bar doesn't work yet. Also, still no way to change the default key bindings. All this coming in future releases.
Download
2010/04/06
Blarumyrran (from #opengameart on freenode) has taken on a commission to put some polish on my equipment icons. Thanks, Blarumyrran!
[--Update--]
And they turned out amazing!
2010/04/05
Font and Menus
I've been doing lots of work on OSARE and 0.04 is just around the corner. Most of my work has been outside of code: designing icons, menus, and a font.
I have the basic font class working and it's nice. I'm using an ascii-based bitmap font. Right now I have lower ascii, but it should be easy to add upper ascii. At the moment I'm not too interested in unicode support; that might be a sin but I don't care (yet). I have routines to write out text with left/center/right justify. I don't yet have smart word wrapping (I'll save that for when I actually need it, probably once I start doing the dialog engine).
I've been drawing up the four main gameplay menus: character, inventory, powers, log. The first version of the Character menu is done: it displays the avatar's StatBlock properly (a second version will handle level-ups and resets). The Powers menu shows the build correctly (a second version will allow dragging powers to the action bar). The Inventory and Log menus are basically blank for now. I also created a MenuManager to hold each of the menus and govern their opening/closing. I also changed the HP/MP bar and the Action bar to "menus" and put them under the Menumanager class.
The proficiency icons on the Character menu are the stock weapons/armors I have for the current male hero. Maybe the icons should be something more generic (a barbarian or samurai would have very different base items).
I will create Powers-style icons for the C,I,P,L menu buttons on the bottom-right of the action bar. Maybe make them clickable. Maybe add a very simple MenuToolTip class. Once I feel at a good stopping point I'll release 0.04.
OSARE Blog
The OSARE project has a new blog. I've imported previous news items and the conversion is complete.
I spend a lot of time thinking about my programming projects (not just OSARE). As the projects grow it's impossible to keep all those thoughts organized between releases. This blog will probably be barely-edited ramblings of ideas, dev updates, etc.
2010/02/28
Version 0.03 Release
Version 0.03 is up! The core gameplay is starting to emerge.
- Combat to the death. You can kill zombies and they can kill you.
- Added combat sound effects.
- Added a health and mana bar
- Left-mouse click is now an aimed sword attack (1-key will instead attack the way you're currently facing)
Although the RPG combat mechanics aren't in yet (accuracy, dodge, absorption, weapon damage, etc), basic melee values are hardcoded in for this demo. The zombie has a high chance of being crit, along with a satisfying crit death animation and sound. Next to the health/mana bar is a slot for a 32x32 pixel character portrait.
I added a lot of memory cleanup in the class deconstructors. Please let me know if you encounter a game crash on exit.
One user has reported it doesn't work under Vista (hard lock, requires reboot). It works on my XP and Win7 systems. I'm compiling the Windows version with MinGW on XP. If anyone has tips on SDL with Vista please contact me.
2010/02/15
Version 0.02 Release
Version 0.02 is up! Things are finally starting to get interesting.
- Re-rendered all assets using Blender's CatRom AA setting. The result is much sharper.
- Added SDL_mixer support and background music by Remaxim
- Added the bare bones for the Action Bar
- Set Action Bar slot 1 to melee attack (no customization yet)
- Added (much hardcode) a basic zombie creature. The zombie will pursue and try to melee attack.
- Bug: fixed an issue in the Collider class with a variable not initialized
Although the hero and zombie can try to attack each other, I haven't yet implemented the attack collisions, damage, dying, etc. That will probably come in 0.03. Zombies make a great starting creature because it's okay if their AI is oversimplistic. This zombie will pursue if in range, stop once it gets to melee range, and try to melee attack. After some melee attacks it will try to bite. The current zombie gets stuck behind walls a bit too easy. Right now he chases the player directly and can basically see through walls; in 0.03 he will not see through walls and pursue the spot where he last saw the player. This will make his pathing appear slightly more intelligent, but still as unintelligent as a Walking Dead should be.
The other major addition is background music. In the map.txt file you'll see a line that says music: dungeon_theme.ogg. If you want to hear remaxim's other tunes in game, change that .ogg file to one of the other songs included in the music folder.

