Jump to content
IGNORED

Dragon Chalice (2 Player Co-op) RELEASED


Gemintronic

Recommended Posts

This is the project page for Dragon Chalice.

 

Features:

* 1 to 2 player cooperative adventuring

* Password save of current game, mode and stored inventory

* 256 procedurally generated mode B game layouts with 256 mode A variants

* Uses the multi sprite kernel for 7 objects on-screen and a modified mini kernel from Karl G to display 2 held items.

 

Should end up 32k ROM.

 

Special thanks to batari, Random Terrain, bogax, RevEng, Karl G, kisrael and AtariAge!

 

dchaliceaa.thumb.png.d175753346cfcfaaadcf9ad39e37ff81.png

  • Like 11
Link to comment
Share on other sites

  • 2 weeks later...

Got the single player and two player colors sorted.  Made the single player orange darker to match its two player shade.  Looks brighter in the screenshot but every emulator and TV is different.  Kinda split the difference.

 

Too many go-subs - especially across banks - seems to cause resets.  Not a bug in bB but I suspect bad coding practice on my part.  go-subs are to be avoided generally.  I try to use them only out of the main game loop.  Even then I try to NOT nest them as that's when the resets happen.

 

This week is getting room loading locked down.  There are 3 types that need to be considered:

 

A. Procedural worlds

B. "Limited Edition" procedural worlds

C. Beginner and Normal hand crafted worlds

 

Procedural worlds take your game seed and position items, place castles and pick room types pseudo-randomly.

"Limited Edition" worlds do the same BUT also use the Beginner world data in the seed.   This is enough for a completely different set of procedural worlds.

Beginner and Normal world maps are static.  Basically two 256 entry DATA statements.  I have to be careful when designing these worlds as there are no checks for dead ends, overlapping castle placement, etc..

 

All of them re-position the players after loading a room.  If entering the room places either player into a wall the routine slides them closer to the center until a "free" space is reached.

 

oranger.thumb.png.b337a8e60266c069034a5a6eacc6d87b.png

 

 

  • Like 3
Link to comment
Share on other sites

On 1/16/2023 at 8:11 AM, Gemintronic said:

go-subs are to be avoided generally.

 

you don't have to avoid gosubs but you do have to be mindfull of how deep you're going

 

I have sometimes wondered if it would be worth doing a bit of indirection in the returns

 

so eg you'ld define 16 return labels and implement a stack of nibbles for 4 bit return tokens

with the stacking and returns done in software

 

it would be messy and slow but you could turn 1 stack position into 4 (and would 16 possible returns be enough? could be a different 16 for each bank)

Edited by bogax
  • Like 1
Link to comment
Share on other sites

1 hour ago, bogax said:

 

you don't have to avoid gosubs but you do have to be mindfull of how deep you're going

 

I have sometimes wondered if it would be worth doing a bit of indirection in the returns

 

so eg you'ld define 16 return labels and implement a stack of nibbles for 4 bit return tokens

with the stacking and returns done in software

 

it would be messy and slow but you could turn 1 stack position into 4 (and would 16 possible returns be enough? could be a different 16 for each bank)

 

I definitely have to think about strategies like this.  The next step for bigger games has to be the multi kernel framework to get to 128k ROM.  When I jump to the next 4k section I'll probably need a "super jump" variable that directs which label within to jump to.

Link to comment
Share on other sites

19 hours ago, r_chase said:

Just a quick question: do you plan on releasing this to the AtariAge store by any chance?

 

I try to make sure Albert knows about my games.  It takes a lot of spit and polish to make it to the AtariAge store.  When my quality gets to that point I'm sure he'll notice :)

 

If you ever get the urge to be a game developer expect a lot of trial and error before you get good enough for your market.  It's better to enjoy the journey and make games you want to play  first and foremost.

 

UPDATE:  May as well show off the cart shells.  Somewhat like the handle on an Air Raid cart the two players (red and blue squares) are sticking out the top!

 

dccart.thumb.png.09efe902b373c0812a59252a116a87f5.png

 

  • Like 4
Link to comment
Share on other sites

  • 3 weeks later...

Progress!

* You can obtain all items in the overworld: chalice, sword, bait, bridge, torch, yellow key, green key and red key.

* Items get transported to the Yellow Castle if displaced from your inventory or you load a password.

* Yellow Castle implemented with rooms for each item (no chalice as that wins game so no need)

* Torch lights up the dark area.  Overworld is partitioned into: Yellow Kingdom, Green Kingdom, Dark Maze and Red Kingdom.

* Green and Red castles have interior mazes with exits leading outside every castle.

 

The overworld and castle interiors are each 256 screens big.  I just looked at Adventure and Adventure II and now I'm worried it's too large.

 

inycastle.thumb.png.3b5c5b3a30441e13e80e1dd0d98b1311.png

  • Like 4
Link to comment
Share on other sites

  • 3 weeks later...

chalice044_bas.thumb.png.e32901709fb5f62526b14886c2714ad4.png

 

Changes:

* You now play the Draggins and have to contend with a yellow, green and red hero.  ..and the bat!

* Merely obtaining the yellow key keeps the yellow castle door open.  Red and Green castles need you to have their key in your inventory.

* Changed the bait into a magnet.  If held has a random chance to make the next item needed appear in the next room.

* Sound effects for password input, failure and validation

* Can swap player 1 (left) and player 2 (right) inventory.  Useful for trading the bridge or keeping important items in hand.

* Bridge is implemented.  When held lets player move through walls horizontally.

 

Bugs:

* Red key needs to appear in the dark maze ONLY if torch is held.

* 16x16 overworld screens may be too big.  Thinking of downsizing or 8x16.

 

Todo:

* Enemy AI

* Winning trigger and display

* Implement traps (damaged players) and levers (toggles walls in certain rooms)

* Design and implement procedural rooms

* Design and implement two hard coded overworlds

* Make green and red castle more varied than overworld

 

  • Like 5
Link to comment
Share on other sites

I had a recent blind playthrough / review for a previous game almost go south due to overcomplicating things on my part.  In particular using the difficulty switches.  So, Dragon Chalice will be like Game Panic 3 in that both titles are "Couch Compliant".

 

In other news the Draggins' can now roar.  So, the FIRE button is doing triple duty:

 

Short Press - Both Draggins' roar

Long Press - Swap left & right inventory items

Hold FIRE - Return to password screen (This makes the game Couch Compliant as you can reset or load a new game without touching the console)

 

chalice045.bas_2.thumb.png.e98338f5b0d623bac3e73588755fc69d.png

Link to comment
Share on other sites

  • 3 weeks later...

I got stuck with a soft lock bug: sometimes the red key and chalice would not appear even if you held the items that made them obtainable.  Part of that was how large 16x16 rooms turns out to be.  The other was bad coding.

 

To that end I re-wrote the game design a 6th time and started from scratch.  Changes/updates of note:

 

* NTSC/PAL60 selection (one ROM for both TV types!)

* Title and password screens use shared NTSC/PAL colors ($0x, $2x, $4x and $9x series)

* 4 Kingdoms each 8x8 screens big

* Changed the sword to a shield (less hits) and bait into an all-seeing eye (see traps & chalice)

* Password font changed and can use all 16 possible characters for future expansion

 

With the new font you get A, M, C, D, E, space (" ") and the numbers that look like O (0), I (1), Y (4), G (6), S (5) and B (8).  This makes useful words like: GAME, DEMO, MODE, GOOD, BAD, etc..

 

Right now the dual NTSC/PAL60 title screen and Gemintronic ditty is back in.  The password screen is present but editing logic needs putting back in.  I'm not sure if I'll use 3 banks for NTSC and 3 banks for PAL60.  Might be able to combine but I fear all those extra IF statements if I have to constantly questions which color palette to use.

 

PRGRESS.thumb.png.18d8aa0fc83fdfaedd67eea1d237d51c.png

 

 

  • Like 3
Link to comment
Share on other sites

  • 4 weeks later...

I finally got the procedural world generation to feel diverse enough.  The macro/screenshot capability in Gopher2600 is a real game changer!  Thanks to that I was able to view entire 8x8 screen kingdoms with an eye for obvious sequences of rooms.

 

Starting to run out of room in some banks and I worry about going over cycle.  Had to work around a combination of gosubs that reset the game.  Very sure it was my use of multiple mini kernels and bad coding at work.

 

* Re-implemented the Yellow Castle Storage rooms.  The White Castle key is already owned and stored.

* Levers are implemented.  A middle length FIRE press will switch the lever.  When the lever is toggled certain rooms change.

* Castle interiors lead to other kingdoms.  Game 1, 2 and 3 have different exits.

 - Game 1 (Seed 0) Exits are laid out so you must get items in the proper order to progress

 - Game 2 (Seed 1) White Kingdom becomes the connection point between all kingdoms since it requires no key.

 - Game 3 (Seeds 2-255) Almost everything interconnected between castle exits

 

Here is a sample map from seed 4 of the Yellow Kingdom:

y.thumb.jpg.222dfb3eecae382a80a1c93f8a63f01b.jpg

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

All enemies are in!

Mimic Chest - Patrols the Yellow Kingdom and to a lesser extent Green Kingdom.  Shows up other places.  Stays put for awhile then scurries about with its venus fly trap jaws.

Troll - Patrols the Green Kingdom and somewhat less Yellow Kingdom.  Present in other places.  Randomly seeks a path near players and marches.

Wizard - Patrols the Red Kingdom and somewhat less the Green Kingdom.  Can appear elsewhere.  Alternates between wandering and seeking the players.

 

Note that ALL enemies have an equal chances of appearing in the White Kingdom.  Undecided on whether enemies can appear in spike trap rooms.  Also unsure if I should annoy the player with avoiding the bat while other enemies are on-screen.

 

Flicker mitigation consists of lowering the goal Y value until player1 based sprites are no longer on the same horizontal plane.  But, it's pretty lax right now.  Yet another reason I'm thinking of NOT allowing enemies in spike trap rooms or alongside the bat.

 

TODO:

* Integrate the encounter system

* Implement winning condition and winning animation (Return to Yellow Castle with Chalice)

* Game 1 and Game 2 hand designed maps

* Bat encounters and thievery

* Possible hurt walls and additional events in event rooms

 

Now that I think of it..  with those 5 items out of the way it's feature complete!!

 

worstcase.thumb.png.c6647e01792aab34f61f827d5354db9a.png

 

 

  • Like 4
Link to comment
Share on other sites

On 4/26/2023 at 3:00 PM, gambler172 said:

Like I said...playing is better than only watching videos and pictures.

BTW...I would also buy a rom, if you plab to offer this.

 

I hear you.  I guess I didnt make it clear that this is not ready for public consumption.  I talk big but things like how monsters follow you from room to room are not figured out.  Digital downloads will definently be a consideration after physical copies.  I'd like at least a demo ROM but I'm prone to take too much on and complete nothing.

  • Like 1
Link to comment
Share on other sites

16 hours ago, Gemintronic said:

 

I hear you.  I guess I didnt make it clear that this is not ready for public consumption.  I talk big but things like how monsters follow you from room to room are not figured out.  Digital downloads will definently be a consideration after physical copies.  I'd like at least a demo ROM but I'm prone to take too much on and complete nothing.

That is one thing I had to figure out for Space Peril. In case you aren't aware of how "vanilla" Adventure handles it and are interested, each of the dragons has its own trajectory until they encounter something that changes it (an item they like and want to guard, an item that they fear, or the player). If they encounter an item they like or the player, their normal direction gets ignored in favor of moving towards the player or item while on the same screen. If the player or item of interest leaves that screen, then the dragon immediately resumes in the original direction from the point where they are now. This may or may not be the same direction as the player, so it appears as if the dragon is following the player only some of the time. It's simple, and it works pretty well, I think.

 

 

 


 

  • Like 3
Link to comment
Share on other sites

2 hours ago, Karl G said:

That is one thing I had to figure out for Space Peril. In case you aren't aware of how "vanilla" Adventure handles it and are interested, each of the dragons has its own trajectory until they encounter something that changes it (an item they like and want to guard, an item that they fear, or the player). If they encounter an item they like or the player, their normal direction gets ignored in favor of moving towards the player or item while on the same screen. If the player or item of interest leaves that screen, then the dragon immediately resumes in the original direction from the point where they are now. This may or may not be the same direction as the player, so it appears as if the dragon is following the player only some of the time. It's simple, and it works pretty well, I think.

 

Right now each enemy has an alert level.  When the player enters a new room there's a chance the alert level will increase (based on the monsters affinity to the current kingdom).  When the enemies alert level maxes out they are guaranteed to appear in the newly loaded room.  I check for which direction the player came from and have the monsters travel in from there.

 

..or, so I hope!  The implementation is giving me headaches.

Link to comment
Share on other sites

  • 2 weeks later...

Dragon Chalice is now feature complete!  The major hurdle now is making sure there are no unknown unknowns left.

 

Changes since last update:

* Limited edition flag removed so difficulty mode is saved

* "Event rooms" implemented that can curse players with blindness, trap spawns and changing walls

* Attract mode that shows off random rooms and monsters

* Better adherence to Novice (B) and Expert (A) mode implementation

* Animated game over screen wherein the bat drags you off

* Animated winning screen with new music and completion time rating

* Preemptive screen rolling fixes (more drawscreens during room setup)

* Repeatedly toggling your lever might do something magical..

* Red key may appear in other kingdoms in order to mitigate soft lock situations

* Spike rooms now spawn fast falling stalactites

 

rc1dc.thumb.png.5237426be3a990abd225224291e59285.png

 

Notes on screenshots:

- The C in DC was made by blocking out the mirrored vertical line of the D with a black colored sprite.

- The bats only appearance is when he drags you back to the password screen after losing all your HP

- The brown poop/tornado-like thing bottom left is a stalactite.

- Castle stairs would glitch themselves into the attract mode.  So, I changed them into DEMO signs! 

 

  • Like 1
Link to comment
Share on other sites

Playtesting forced my hand so I had to add quite a few features.

 

* Animated intro.  The bat steals the chalice.  Draggin chases it.  Wizard gets angry.

* Secret Bat Item Shop.  If you can't find an item kill a quota of baddies and seek out the bat shop.

* Blue Maze.  Hidden area.  You don't want to be there :)

* Introducing our Yellow Castle Endless Chicken Drumstick!  9 HP at any time of day!

 

dragcrc2.thumb.png.0231238dcc163aed3c4bd1413994adaf.png

  • Like 4
Link to comment
Share on other sites

  • 2 weeks later...

EXCLUSIVE WORLD PREMIERE of DRAGON CHALICE

TOMORROW on ZeroPage Homebrew

 

ZeroPage Homebrew is playing the Exclusive World Premiere of Dragon Chalice on tomorrow's ZPH stream LIVE on Twitch, hope you can join us!

 

Games:

 (WATCH AT 1080P60 FOR BEST QUALITY)

 

 

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...