• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

3D Dungeon Crawler engine for 68K Macs

olePigeon

Well-known member
This looks amazing. I know from the earlier videos that it's much more capable, but I like how this particular games is being implemented in a more Bard's Tale / Eye of the Beholder style game. Very nostalgic. :)
 

BacioiuC

Well-known member
As quick update - the "inventory" system has been added together with various spells and item types. Enemies, once they spot you, will announce it via a message in the log. This is to avoid having the player constantly look around when moving in order to not get jumped by an enemy behind him.

In short, the update contains:
  • Game Over screenwith your score, the dungeon level you died on and the enemy that killed you.
    • I plan on adding a the ability to export a .txt file with move details about your journey (enemies killed, items picked up, stats, etc)
  • 9 weapon types and spells:
    • Dagger, Bow, Sword - have their own animation + variations
    • Muffle, Heal, Disintegrate, Fire Bolt, Knock, Acid Touchshare the same animation for now.
      • Since doing 6 extra animations will push me over budget, I'm thinking of doing just two more, that can be shared:
        • Touch Spells (Knock, Acid Touch) will use the default spell casting animation
        • Self spells (Heal, Muffle) will use a new animation (Think of a priest joining hands to heal)
        • Range attack spells will have a new animation (Casting one handed, moving the right arm in an arc from the chest to the target)
  • The 4 player classeshave been defined and the data can be imported from external files (this will make the addition of custom classes pretty easy)
    • The 4 classes are:
      • Warrior: Starts with a sword, high strength, high con
      • Rogue: Starts with a dagger, high dex, medium strength, Muffle Spell, small mana.
      • Wizard: Starts with Acid Touch and a dagger. High Intelect, High Mana
      • Priest: Dagger + Heal Spell + Medium sized Mana Pool
  • Enemies announce themselves when they spot you and are nearby in the form of a in-game message:
    • Vampires and Lizardmen growl
    • Slimes make a bubbly noise
    • Rats and Bats chirp
    • Humanoids yell
  • Usable items (weapons and spells for now) can be picked up from the ground and found through out the dungeon.
  • Item and potions types have been added like:
    • Healing and Mana Potions to restore them
    • Stat affecting potions (can increase/decrease base stats)
Slowly but steady the game is shaping up. I've added Gold in-game, that can be found on the dungeon (and in chests or dropped by enemies). I'm thinking of this being persistent between save files/characters with the gold collected being used when creating a new character (to buy a better weapon at the start or spend on stat points. Who knows).

I'm also happy that I manage to fix all memory leaks and problems caused initially by my inability to understand how to blend C strings with Pascal strings and have successfully completed 5 runs in a row without a single game crash or garbage appearing on screen. It doesn't sound like much, but I'm coming from C# and Lua. C strings combined with Pascal strings have been a maddening kick to the proverbial crotch.

Now I'm defining the creatures that appear in the game and on what dungeon levels + their abilities. A small concern of mine is dealing with enemies that have ranged attacks and how to display it properly. Right now, there is a "damage" animation in the form of scratches appearing on screen so I'm guess a different impact animation will be needed for range spells. To be determined...

Other than that, I'm hoping that in two weeks to place a new order for about 12 character sprites, 4 new animations and the icon + logo + main menu entry and to start writing the "manual" for game, explaining the rules, controls and offering a little bit of lore.

Features left to do are an auto-map window that can be opened side-by-side of the game for those that want to use the feature and the saving system. With a bit of luck, I can look into generating more dungeon types to make it a bit more interesting.

If anyone is curious how the character classes are defined for the game, it's pretty easy. I'm relying on CSV files so that anyone can edit/modify the game easily after it's done. So far, there's a CSV file for:
- Entities in the game (creatures, items) and their stats, abilities and effects
- Character Classes
- Dungeon details.

This makes it easy for me to balance the game and add features without having to recompile the game constantly or mess with resedit when I shouldn't have to.

Example csv files as I edit them using Excel 4:
player_classes.pngentities.png
 

jessenator

Well-known member
This is incredibly cool!
AH0nTb0.png
 

Mu0n

Well-known member
so much time elapsed between the start of this thread and my noticing of it. following!
 

BacioiuC

Well-known member
Another weekend, another small update completed. October just started so that means I'm technically just 1 month away from my target launch date (November 2nd - the 4 year anniversary of the original game Ebony Spire: Heresy).

New additions to the game include:
  • Overhauled dungeon generation algorithm. In the previous versions, things were a bit messy. A lot of "random pillars" where enemies could hide behind and a lot of zig-zags were required to advance. With the new system, the game actually follows in the footsteps of Rogue with proper rooms connected by corridors.
    • The room based approach gives me more control over placing enemy spawns, item spawns, the exit etc. It also makes for a better progression and less searching aimlessly.
    • Levels can vary in terms of room sizes and number.
    • Different themed rooms (treasure room, boss room, dark room) are a possibility with the new system. It all depends on how much time I have available and if I have the budget for more art.
  • I added the ability for the player to "Mark" walls by hitting them with his melee weapon. I dropped the idea of having an external window as a "auto-map" since it doesn't really make much sense (to me) and the idea of marking walls/objects so you don't get lost seems more intrinsic to the nature of the game.
  • Stats and Damage Calculation formulas have been finalised. Next up is following the stats progression and tuning it to control difficulty and experience.
    • The second I changed the dungeon gen formula + added the ability of enemies to announce themselves - the game got extremely easy. No longer does an enemy lie hidden behind a pillar you couldn't see. Now, tactical positioning is important, like getting an enemy to chase you through a corridor so you can blast him with arrows or spells.
  • Improved the game's rendering speed by a bit which should make it a bit more bearable on an SE-class machine, though it's still not fast enough. Something tells me the last week before release of v1 will be spent on optimising the rendering speed as much as possible.
  • Added an XP barin the lower side of the screen to keep track how much XP you have.
    • Leveling up increases your main stats and affects speed, damage, defense and mana.
    • Certain classes advance in various area of their stats more than others.
    • Stat-affecting potions can be drank to improve them outside of leveling up.
Besides wrapping up the enemy and item list + their art assets, I'll need to start implementing the save system + game menus (New Game -> Character Creation, Victory Screen, Hall of Hame) + the actual menu's that appear in the finder, to get the game to work together nicely with other apps.

Obligatory video showing about 3 minutes of playthrough with the only 4 enemies I have added to the game (out of 20):
 

olePigeon

Well-known member
Wow, that is looking awesome! I love the ranged bow attack. I also love how the walls can get damaged. You could use that feature to mark your way through a complex maze. What could be fun (and useful) that could reuse the wall damage feature would be an item that's a Piece of Chalk. Maybe a little more advanced would be to use the mouse cursor and actually draw on a dungeon wall or floor. You could use it mark secret passage ways, potential traps, etc. Or maybe to solve some puzzles (have a tic tac toe game as a "puzzle." Win the game and go through the secret door. :D)

I'm a bit thrown off by the wall perspective. It looks like the side walls are flipped vertically.

Edit: Just read about the automap feature. You could have an occasional "Dark Level" where the automap doesn't function, forcing the player to utilize the marking feature and perhaps their own piece of graph paper. Like in the old games where you had to map out dungeons.
 
Last edited:

Crutch

Well-known member
This is looking great! One question, the second time you marked a wall in the video, did it also mark the adjacent piece of all around the corner from you?

The “Dark Level” suggestion above reminds me of my favorite part of an old Infocom game, Spellbreaker, where in one particular room if you attempt to save your game, the game replies … ominously … “That spell doesn’t work here.”
 

BacioiuC

Well-known member
I'm a bit thrown off by the wall perspective. It looks like the side walls are flipped vertically.
It's a bit of a problem with the scaling on walls < 2 squares away. I wanna wrap everything else up before I'll sit down to fix it since it requires quite a few changes but It's on my todo list.
One question, the second time you marked a wall in the video, did it also mark the adjacent piece of all around the corner from you?
Yep. I'm using a single texture / square. You can imagine the walls on a tile like a cube and they share the same texture. I can do something like an array holding 1 texture / side but didn't get around to it yet since I came up with the marking system two days ago when I decided I want to drop the auto-map feature and needed a way to allow the player not to backtrack too much.
 

BacioiuC

Well-known member
@olePigeon thanks for cleaning it up but it's a wip! I just updated it with the new Spire Image and the Font is next! Good job tho :)

Right so, here's what's been added since my last post:
  • Keyboard support (as requested above)
    • WASD to move your character (adding in numpad next)
    • Space to interact with the environment or attack
  • All enemies are available in-game
    • I started working on ranged attacks for enemies. Waiting on the full screen animations for damage and spell casting
  • Saving and loading your game! Every time you climb to the next level your progress is saved.
  • Barebones implementation of the codex menu, an in-game enciclopedia showcasing all enemies, items and locations you've interacted with.
    • If you defeat an enemy, a new entry will appear in the codex.
    • If you use/pickup an item, a new entry for that item will appear
  • I started working on the character creation screen. So far it contains the 4 available character types (might expand it soon or post-release with more characters). Each character type has it's own class (Minotaur Warrior, Human Wizard, Lizardman Priest and Elf Ranger), own starting equipment and bonuses to the way stats evolve. The menu is barebones right now but will be updated with a character description in the upcoming days + stat rolling.
  • A minimap/auto map feature has been added to help navigate through the dungeon. Basic for now, but in the future it will expanded to show enemies around you, items you've passed and the staircase
  • Character stats are now viewable on the left side of the screen, beneath the portrait. It's a work in progress but it can help me finalise the UI elements and their placement. Once I reach a conclusion for the final UI I can probably order the last piece of art that's going to be needed (the in-dungeon interface). I'm leaving this up to last because it's a pretty expensive piece of art (about 500-600$ at my artists rate) and if I change things around, we'd have to redo it.
  • Enemies now drop appropriate corpses when they die. No more will a bat leave behind a humanoid corpse with long legs and arms (not a major thing but boy was it bugging me).
 

nightingale

Well-known member
Your progress on this is really impressive... I assume you're recording these videos on your "SE/40" with the accelerator card. Curious if you've tested this on a 68000 yet? Your older posts say you're hoping to be able to run it on a Plus at a lower resolution.
 

BacioiuC

Well-known member
Your progress on this is really impressive... I assume you're recording these videos on your "SE/40" with the accelerator card. Curious if you've tested this on a 68000 yet? Your older posts say you're hoping to be able to run it on a Plus at a lower resolution.
I'm actually developing it on an SE/30 with a 68030 and a Color Classic II with a 68040 upgrade. It's running nicely on the SE/30 at 16 Mhz (stock speed) though it's been a few weeks since I tested it at <30Mhz 030. With the optimisations I did on sprite rendering it should technically run even better at stock SE/30 speeds than last time I tested it.

This being said, I haven't tested the game on a 68000 in a few months (I don't have any 68000 machines left). The problem isn't the 68000 itself but more like - the lack of an FPU since I am doing a lot of calculations using doubles due to the rendering algorithm I was familiar with. Just for entertainment purposes, I had a friend test it on his Mac II with a 68020 + FPU and it ran without problems at regular screen size. So I have a feeling it might run decently on a FPU equipped Macintosh Classic (though I need a volunteer to test this).

As the game becomes feature complete I'll move more and more towards bug hunting and optimisations. Crutch gave me some good suggestions a while back on how to improve performance and I'll try them out as soon as I can. The idea is that I want to get the game done before I start making a mess out of the rendering code.

I'm ready to unbundle a ton of loops just to shave off some ms's and make it even faster so with a little bit of luck, it might just run on a SE-class machine. Bonus points if I find the time to transition from doubles to Fixed Point (I tried it 4-5 months ago and it wasn't a good experience, though I am not sure why).
 

BacioiuC

Well-known member
A bit of an updated + some news:

I was planning on having the game ready by this point but sadly, my artist is down with a case of covid. I managed to use some of the UI elements designed to update the game's interface. I also did some more optimisations and fixed a bit of the texture mapping issues with the walls (they now go together okay when showing adjacent faces).

The game runs about 40% faster on a stock SE/30 and reports from a Mac II are also really good. As soon as I'm done updating the sprite rendering routine the game is going to be blazing fast (might even be playable on an SE-class mac, but I've yet to test it).


Regarding the physical edition, I'm in talks with the owners behind Bitmap Soft to have them publish the physical release of the game! Fingers crossed the talks will continue to go well and a professional team will deal with manufacturing the big box + manual + floppy's.
 

BacioiuC

Well-known member
Since I'm waiting for new graphics and animations and not much else critical to do, I went back over the rendering code to fix the wall distortion issue I was having. Reread my discussion with @Crutch from about a year ago and it finally hit me what I was doing wrong!

Long story short, texture mapping 100% done and complete with proper scaling and aligned view port:
esq_mapping_correct.jpg
 

BacioiuC

Well-known member
Time for an update!

Anthony has began to recover from covid and delivered the final UI, which is now in the game. He began work on the final animations (2x spell casting animations, 1 melee animation, trap trigger anim and spell damage feedback) and items for the game (swords, maces, bows, potions, stats improvements).

For the first time I manage to do a complete run of the game without cheats or developer tools using the Lizardman Priest class and it took quite a few attempts. Quite happy with this class's balance. More balancing needs to be done on the remaining classes but I suspect a lot of the issues I'm noticing will go away as soon as the new items are added in.

From my understanding, BitMap Soft has begun designing the manual and box for the physical release. As soon as I have the design and protoype in my hands I'll share it with you guys. I'm actually excited to have them handle the physical release and I cannot wait to see how it goes.

In the meanwhile I'm focusing on squashing bugs and adding more content to the game. I'm expecting to be content complete by the end of the month and I can switch focus to doing the Shareware version of the game. If the physical release is pushed towards end of January/February it means I'll get more time to polish the game and add more art (walls and environments for example can do with a bit more variation).

I tried the game in an emulator today (Basilisk II, 7.5.5) and recorded a tiny bit of footage using the Medium Graphics settings (High Quality wall rendering, medium quality sprites, low rendering distance).
 

BacioiuC

Well-known member
Awesome demo. Looks pretty challenging.
Should be pretty easy once you get the hang of it. The tougher part kicks in once you get to higher levels (7-8) and Summoning Creatures become a thing. Spells like Knock can help a ton to use your environment (traps for example) to dispose a lot of enemies by pushing them into said traps.

That being said, the plan isn't to make a brutal/hard game. I started wanting to make games for 68K macs after I ran across Darkwood. The game was so simple and so engaging and my goal was to design a similar game but to spice it up a bit in the graphical department.

Hopefully, by the time people get to play - I'd manage to achieve the goal :D
 

olePigeon

Well-known member
I didn't even know there was a retail release of Darkwood. I only ever downloaded it from Infomac or my friend's AOL.
 
Top