Jump to content

Photo

Dragon's Descent - Roguelite/Action game

batari basic 2600 game procedural roguelike

10 replies to this topic

#1 Revontuli OFFLINE  

Revontuli

    Space Invader

  • 14 posts

Posted Fri Dec 14, 2018 3:15 PM

DRAGON'S DESCENT
Direct your dragon through a sprawling labyrinth, hunting for treasure, power, and danger!

-Thousands of possible maps to explore, either randomly selected or predetermined
-Eight different types of enemies
-One mid boss, one final boss, one hidden boss
-Powerups to increase firepower or health as you delve deeper into the labyrinth
...and an easter egg or two, of course!
 
This game is, among other things, an experiment in procedural maze generation for the Atari 2600 - There are a few secrets to find, so I won't reveal everything here, but I will give a basic outline of the controls and mechanics.
 
Attached File  DragonsDescent_1_10_2019_Beta5.bin   16KB   23 downloads - Latest version.  Retry random maze option (press up or down on the Game Over screen to see the "Retry Maze" screen, press button to start again), starting rooms have no enemies, score placement adjusted.
Attached File  DragonsDescent_12_16_2018_Beta4.bin   16KB   66 downloads - Maze generation fix, random seed shown when picking random level, other small fixes
I might go into more details about what I did to fix the maze generation later - the short answer is that every seed -seems- to work now, without the hacky checker I had in earlier versions.  I also added a -little- more time solve a given level before various "complications" arise.  It can still be a little mean.
 
I'm keeping an informal version history even as I remove the older versions - I can repost them if folks clamor for the older versions, but hopefully the bugs present in them have been addressed. 
 
Version History:
12-16-2018 - Current public version.  All attempted maps seem to be solvable, certain UI color cycling adjusted.

12-15-2018 - Tentative "fixed" beta for random mazes

This version has a band-aid for the random mode bug - I'm keeping it here for the moment in case the above version has some unforseen bug or error.

12-14-2018 - Old version, only play the default mode (Left/Right switches set to "B") on this one.

I've tentatively tested it on my ol' sixer as well as the Flashback Portable, and the game seems to run ok, although I would welcome any bugs/issues found if anyone else plays.  I'm curious to see what people find!

 

Current known bugs/fixes/updates:

-You can now retry a randomly generated maze by pressing up or down on the Game Over screen - when you see words "Retry Maze," press the button to restart the game at your old starting point.

-Starting rooms on a level no longer generate enemies, giving you some time to breathe or get used to the controls.

-Hopefully the level generation bug is fixed - any random seed should generate a solvable level.  When choosing a random level, you will be shown the seed in case you want to try the level again. 

-I also fixed a flashing problem to a more pleasant "pulsing" effect for max health/fire breath.

 

I'm working on a little write up of how I generated the mazes, and programmed the game in general. Many thanks to those on this board who have posted an incredible amount of useful information, as well as those who have authored the kernels and other components on which this game has been programmed.

 

DragonsDescent Title

 

STORY

Legends speak of a labyrinth created by the mind of a dreaming elder dragon.  This maze is filled with the promise of wealth, power and danger-an endless length of corridors, with spectres and monsters appearing out of thin air, and strange happenings occurring the deeper one travels and survives.  You are a young dragon yourself, perhaps trapped here, perhaps tempted by the wealth and power that drives your kind.  Regardless, you have little choice but to find your way through the corridors and chambers of the labyrinth, finding glory, or perhaps escape...

 

DragonsDescent Gameplay

CONTROLS

Joystick - Move the dragon around the labyrinth.
Button - The dragon will breathe fire in the direction it is facing.  

SETTINGS
Left Difficulty A - Game will continue indefinitely, only ending with a game over.
Left Difficulty B - Game will end after you complete level 7
Right Difficulty A - You will start in a randomized maze.
Right Difficulty B - Maze will be the same layout each playthrough.
Game Select (Make sure right difficulty is also set to "B") - Will allow you to set the random "seed" when starting the maze.  Move the joystick left/right to select the left or right seed, each can be set to a value between 1 and 255.

The title screen will reflect what options the game is set to - an infinity symbol for an unending maze, and an alternating maze pattern for random mazes.

 

HOW TO PLAY

Depending on your game settings, you may find an end to the maze on the 7th level, or the maze can continue until you are defeated, trying to attain the highest score!

 
DragonsDescent Diagram
A - The Player
B - Dragonfire
C - Monster
D - Firepower Meter
E - Score
F - Health Meter
G - Room exit
 

Each level of the maze is made up of several rooms - you can leave through any exit on the boundaries of the screen you find.

To make progress in the maze, find the key on each level, and then the level's exit.  The exit, resembling a door with a key imprint, will only activate if you touch it while you have the key found on the same level.  Upon each new level you will face more dangers but also potentially increased power and scoring!

 

Key

Key

 

Exit

Exit

Avoid touching walls and enemies - doing so will deplete your hit points, and eventually terminate your game!

Scoring comes from collecting gems and defeating monsters.  You get more points for defeating monsters in deeper levels, and a slightly higher score for each shot you use with higher fire breath power.

In addition to a key and exit, each level of the labyrinth has a treasure room:

 
DragonsDescent TreasureRoom

 

This room allows you to pick one of three power ups, just wait until you see the one you want:

 

Gem

Gem - increases your score.

 

Heart

Heart - increases your total hit points, while completely replenishing your health.

 

Lamp

Lamp - increases the strength of your fire breath, while refilling its supply.

Don't stay too long on a single level, or you may find things getting much more difficult!  The deeper you explore, the more monsters, dangers, and higher scores you find...

Your hit points are indicated by meter on the right, as well as the color of the dragon.  

The strength of your fire breath is indicated by the color of your score, as well as the size the fire itself.  If your firepower ever increased, you only have a limited amount you must replenish somehow - this amount is indicated by the meter on the left.  If it ever runs out, you will go back your initial, weakened fire breath.

You can find non-flashing hearts and lamps from fallen enemies, which will replenish a small part of your hit points or fire breath, respectively.

If you survive long enough, you may reach a maximum amount of hit points or firepower, in which case your health meters or score will be flashing.

 

Hints:
-Find a balance between increasing you hit points and increasing your firepower - each level gives you the opportunity to do one or the other.  
-Gems give you large amounts of points, but your forgo an increase of power for that level - they're for those brave or foolish enough to think they can survive regardless.
-The beginner mode always gives you the same maze, be sure you become familiar with the game before tackling the random mazes offered by the advanced mode.
-Each enemy has a specific type of behavior, learn all of them-and learn how to counter them!
-Time can be your enemy, but remember that you don't have to fight everything - pick your battles!
-Despite the enticement to hurry, be patient and careful!  Most situations can be escaped with a little bit of caution and forethought, and impatience has ended more games than the cruellest monster.

 

DragonsDescent Key

There are many secrets to discover within the labyrinth, so I won't tell you everything here!

 

[Ongoing EDITs for bug tracking/reporting]

 

Attached File  DragonsDescent_1_10_2019_Beta5.bin   16KB   23 downloads - Latest Version: Retry option, quiet starting room, UI adjustments

Attached File  DragonsDescent_12_16_2018_Beta4.bin   16KB   66 downloads - Random maze fix, and other adjustments, current recommended version


Edited by Revontuli, Fri Jan 11, 2019 5:40 PM.


#2 Inky ONLINE  

Inky

    Gobs of money!

  • 25,795 posts
  • Meh
  • Location:The Irradiated Wastelands

Posted Fri Dec 14, 2018 3:28 PM

Color me interested! I'll give this a shot when I get home!



#3 Random Terrain OFFLINE  

Random Terrain

    Visual batari Basic User

  • 28,815 posts
  • Controlled Randomness
    Replay Value
    Nonlinear
  • Location:North Carolina (USA)

Posted Sat Dec 15, 2018 12:15 AM

You might want to have the game check where the player is so an enemy won't spawn too close to the player.



#4 cimmerian OFFLINE  

cimmerian

    Moonsweeper

  • 472 posts
  • Location:Vancouver Canada

Posted Sat Dec 15, 2018 6:42 PM

Looks awesome Revontuli! We'll be playing Dragon's Descent LIVE on the ZeroPage Homebrew Twitch stream on December 28 at 12PM PT/3PM ET. Hope you can make it to watch us play it on the show, if not it'll be posted to our YouTube archive the next day.

 

Twitch Livestream Channel: https://twitch.tv/zeropagehomebrew

 

EDIT: Updated to video of episode

 

 

 

DRAGON'S DESCENT
Direct your dragon through a sprawling labyrinth, hunting for treasure, power, and danger!

 


Edited by cimmerian, Sat Dec 29, 2018 6:22 PM.


#5 Revontuli OFFLINE  

Revontuli

    Space Invader

  • Topic Starter
  • 14 posts

Posted Sun Dec 16, 2018 12:11 AM

Post with a small update and responses...

 

Looks awesome Revontuli! We'll be playing Dragon's Descent LIVE on the ZeroPage Homebrew Twitch stream on December 28 at 6PM PT/9PM ET.

 

Awesome, thank you!  I'll try and be catch the stream!  Let me know if you have any questions, this game is brand new so I'm still seeing how it plays.

 

You might want to have the game check where the player is so an enemy won't spawn too close to the player.

 

This is partially by design :evil: but I'll see how players handle it  - you have a bit of warning to get out of the way, and if you're bold you can run through them before they're done materializing - I've dashed through quite a few rooms like this!  Enemies only spawn near the walls in the 4 cardinal directions, so there is some strategy to get into the room quickly and anticipate where the enemy might appear, or maneuver and attack quickly if you're about to be ambushed. 

 

I'll also admit I'm very nearly out of ROM in the banks I'm devoting to the game loop and graphics, and adding in a few more checks for enemy positioning would be harder than it sounds, but part of the design is to keep the player moving. Enemy spawning ends up being just one of the ways to keep the player on their toes and encouraging them to find the exit quickly - there are others as well.

 

As for the maze generation bug, the quick fix I made still seems to be the best one.  I thought I found two or three causes for the problem, and..."fixing" them made the problem worse.  Part of the issue is that I use bit-shifting as part of the maze generation process, and that's a little tricky to use in Basic.  If anyone stumbles on a crash, or a maze that they're absolutely certain they can't solve (i.e. no key or exit to find) please let me know.  I'm working on a more detailed explanation of my process in a future post, but in theory the mazes should all be solvable (I place and connect the rooms explicitly).  That said, I literally found my first "broken" maze minutes after posting, after playing dozens of levels over the last few weeks. 


Edited by Revontuli, Sun Dec 16, 2018 12:22 AM.


#6 cimmerian OFFLINE  

cimmerian

    Moonsweeper

  • 472 posts
  • Location:Vancouver Canada

Posted Sun Dec 16, 2018 1:29 PM

You've got a pretty good writeup of the game in the top post but if there's anything additional you'd like me to mention about the game during the stream, just let me know! :-)

 

We love trying out new games in progress and give feedback to the developer on how it plays! :-)

 

Awesome, thank you!  I'll try and be catch the stream!  Let me know if you have any questions, this game is brand new so I'm still seeing how it plays.

 



#7 Karl G ONLINE  

Karl G

    Dragonstomper

  • 654 posts

Posted Mon Dec 17, 2018 10:26 AM

This is a pretty cool game!  I like the movement, and how there is some momentum so that it really does feel like you are flying instead of walking.

 

The flashing score is very annoying and distracting, though.  I'm sure RT will be along with a related link before too long, but it will be distracting for some, and make it completely unplayable for others.



#8 Revontuli OFFLINE  

Revontuli

    Space Invader

  • Topic Starter
  • 14 posts

Posted Mon Dec 17, 2018 1:24 PM

The flashing score is very annoying and distracting, though.  I'm sure RT will be along with a related link before too long, but it will be distracting for some, and make it completely unplayable for others.

 

Hm...one problem with testing the late game on an emulator (and an iffy monitor) - I thought I only shifted the color a little bit.  It's also one of the last features I put in.  I'll tone it down/take it out in the next version.

 

[EDIT] OK, that was an overlooked typo/bug - the flashing score is changed to a hopefully more pleasant "pulsing" when you max out on fire breath or health, which was the plan in the first place.  Let me know if it's still an issue, but it's not the nasty strobe that I had earlier.

 

I also uploaded the latest version - The random maze generation should be more stable now, with any level being solvable.  I also show the player the random seed when they choose a random level, so they can find it again using the Select mode.  I also added a few other adjustments to the post Level-7 experience that I swore were in there earlier but somehow weren't added to my latest source code.

 

Thanks to everyone for their feedback so far, let me know how this latest version works!

 

[2ND EDIT] A hastily made screenshot map of level 001-001, the maze you play if you start with the default settings:

 

Level 001001 of Dragon's Descent

 


Edited by Revontuli, Mon Dec 24, 2018 11:11 PM.


#9 cimmerian OFFLINE  

cimmerian

    Moonsweeper

  • 472 posts
  • Location:Vancouver Canada

Posted Sat Dec 29, 2018 6:19 PM

We had a ton of fun playing Dragon's Descent on ZeroPage Homebrew yesterday, thank so much for making it Revontuli! Here's the archived version of the Twitch stream for anyone who couldn't catch it live:

 


Edited by cimmerian, Sat Dec 29, 2018 6:23 PM.


#10 Revontuli OFFLINE  

Revontuli

    Space Invader

  • Topic Starter
  • 14 posts

Posted Mon Jan 7, 2019 8:22 PM

We had a ton of fun playing Dragon's Descent on ZeroPage Homebrew yesterday, thank so much for making it Revontuli!

 

It was great to see people playing it!  I'm doing a few adjustments based on what I saw and comments made - the next build of the game I post will include a fast way to quickly restart a randomly generated maze, from the Game Over screen. 

 

Folks were wondering about the starting difficulty being a little too tough - I might modify the difficulty, but for the moment I'm keeping the player starting at 2 hit points.  If you play the basic mode, the first power up is only two screens away, and you can boost yourself to 3 hit points (or increase your firepower) there.  The random maze selection is a more advanced mode, when a player has mastered the basics and is ready for whatever the game might throw at them.  "Roguelike" can mean a whole lot of different things, but in this context I tend to think of their difficulty requiring an 80's music montage - each time you play you get a little better, you learn a little more, and you finally get past obstacles that once seemed unfair or impossible.  Upbeat pop music track optional but recommended.  The ZeroPage stream got to the midboss after a few tries, which seemed like a good pace.  I wanted to make this game potentially last more than an afternoon, with a few possible ways/strategies to play.

 
From the comments above it seems at least a few people have gotten pretty far - I'm curious if anyone has found some of the hidden stuff, or if they recognize it as "hidden" (some secrets can be easy to find by accident!)  Anyone get to/past level 7?  What kind of scores are people getting? 
 

I also posted some of how the maze generation system works on my developer blog.



#11 Revontuli OFFLINE  

Revontuli

    Space Invader

  • Topic Starter
  • 14 posts

Posted Fri Jan 11, 2019 5:49 PM

I posted an updated build to the original post (1_10_2019 is the date on the binary).

 

The latest build has a few little interface fixes, taking into account observations/feedback I've had of people playing:

-You can now restart a randomly chosen maze by pressing up or down from the Game Over screen, and then pressing the button when you see the "Retry Maze" screen.  This saves a lot of time over have to re-input the seed number in the title screen.
-The starting room on each level does not spawn enemies, giving you a little bit of a breather, and makes the very beginning a little less intense. 
-Health meter moved slightly to the right, making the meters and score a little more centered.
-Shifted the colors on the title screen/score to have a little more consistency.

As usual, let me know if you find any bugs/issues, I'm at the point in the project where it can be hard to add/fix something without breaking something else!  That's also why I'm keeping the older build posted a bit longer, if one doesn't work the other hopefully should.

 

I'm playing with the idea of getting this onto a physical cartridge, after some more testing to make sure everything works.  Quick fixes can be dangerous at this point, so I like to make sure a build can survive in the wild before doing further adjustments.







Also tagged with one or more of these keywords: batari basic, 2600, game, procedural, roguelike

0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users