Jump to content
IGNORED

Boulder Dash™ 2 - a new engine in development


Andrew Davie

Recommended Posts

Revised firefly.

I also changed diamond colour use from 2/3 to 1/3 so that the brighter colour (#2) would give a more pre-eminent flash/sparkle. Seems to work better under all colour schemes.

 

 

 

What next? I think I'm putting off doing sprites, so that should be it. I'm planning of smooth-scrolling (i.e., pixel-scrolling) the player as he moves, instead of clunk into the next square. That would increase the resolution/finesse 8x in the horizontal, and 21x in the vertical. I think that will make a huge difference on the visuals. We shall see. But who knows; maybe it won't work with the animations and especially with the smooth scrolling. Meanwhile I have a research assignment due in a few days and I'm desperately putting it off...

 

 

  • Like 1
Link to comment
Share on other sites

Preliminary implementation of a "look-around" function. At the moment, a long-press of the joystick button will turn it on and place an icon lower-right. Then you can literally "look around" the board with the joystick (and button held). Release the button and it auto-scrolls back to where the player is. I will have a go at putting the enable on a double-click and disable on a single-click instead of release. The magnifying glass is a sprite, so it won't be too long until I have the player in there, too.

 

 

Edited by Andrew Davie
  • Like 3
Link to comment
Share on other sites

Here are a couple of videos of amoeba logic.

 

I have set the maximum amoeba size to 20 cells; if it exceeds this, then it changes into boulders.

 

 

If the amoeba is fully enclosed, and cannot grow, then it changes to diamonds.  Seems to be working OK.

 

 

That might be about it for the amoeba object. Explosions and stuff are to be dealt with by the objects that explode (e.g., butterflies).

 

  • Like 1
Link to comment
Share on other sites

7 hours ago, Andrew Davie said:

OMG I'm gonna be so rich! Gotta get 'em all!

 

 

 

 

Most of the diamonds flash like a light bulb about to break, a few of them have a much better animation (with the flash moving from the inside to the outside)

Link to comment
Share on other sites

9 hours ago, Al_Nafuur said:

Most of the diamonds flash like a light bulb about to break, a few of them have a much better animation (with the flash moving from the inside to the outside)

You work on something long enough, even the bad seems OK.

Right, so I've reworked the diamond animations/graphics with an attempt to give the impression of sparkling "facets".

 

  • Like 1
Link to comment
Share on other sites

More work on the diamonds. One of the things I've been trying to avoid is having all the diamonds on the screen flash/sparkle in synchronicity. But I only have one animation index for each creature type, so I'd been trying to "hide" the synchronous nature by adding random values, etc. It didn't really work well. To have a separate animation counter would cost 880 bytes of RAM (one per cell), and I wanted to avoid that. I finally figured a way to get what I wanted (mostly) and have random-ish sparkling, happening all over the screen but not too in-your-face.  I also modified the animations a bit to make them a little more "factet-y" and hopefully this is near to final.  In the video I'm waiting for a (super-fast) amoeba to fill the screen and change to diamonds. Look at all that stuff going on on the screen!! Incredible what you can do with a little support on-cart.

 

  • Like 2
Link to comment
Share on other sites

Hi Andrew, I remember the first thing that I noticed when seeing Boulder Dash 2600 for the first time, is how well the graphics match that of the C64 version... except for the diamonds.

 

I'm sure a lot of alternatives for the diamond graphics were tried before, but did you and Thomas ever try a more skewed shape like this:

image.png.9982e0bb51e66bd3c23a8ece6b3303f9.png 

instead of

image.png.3b9d2ca41fa43ddf55cee0917984f8e5.png

?

 

Stacked together, it would look something like this:

image.png.f2b66a18b1d14a1f6d2477195e995f58.png

Link to comment
Share on other sites

1 hour ago, Dionoid said:

 

 

I'm sure a lot of alternatives for the diamond graphics were tried before, but did you and Thomas ever try a more skewed shape like this:

image.png.9982e0bb51e66bd3c23a8ece6b3303f9.png 

instead of

image.png.3b9d2ca41fa43ddf55cee0917984f8e5.png

 

The meeting of the left/right edges makes them hard to distinguish. Many people had a go way back; these days I actually quite like "my" diamonds.  You bring up an interesting point, though. BD1 was an effort to look "as much as possible" like the C64 version. With this new engine, not being bound to a particular implementation/machine/game, my approach is -- make it the best implementation of th concept as I can. That means abandoning efforts to match colours and shapes exactly.


Here're your diamonds, for the most part...

 

1445780271_ScreenShot2021-04-08at10_24_17pm.thumb.png.5e873374995413d9a12608fc2e8fa40c.png

  • Like 1
Link to comment
Share on other sites

12 minutes ago, Andrew Davie said:

The meeting of the left/right edges makes them hard to distinguish.

Yes, I agree that when stacking a lot of diamonds, your triangular shape looks much cleaner and easier to distinguish. I guess it's just because I was used to the shape of the diamonds in the C64 version ?.  The sparkle-animation that you added is really effective, btw.

Link to comment
Share on other sites

This is looking fantastic!

 

One cool thing-- I had no idea that there were legitimate sequel games to Boulder Dash until this thread (I had only ever played the NES one-shot version myself).  As a noob to the latter entries in the franchise, did the sequels add new features / components above the original?  Or are they just new maps using the original's components?

 

Link to comment
Share on other sites

21 minutes ago, Propane13 said:

This is looking fantastic!

 

One cool thing-- I had no idea that there were legitimate sequel games to Boulder Dash until this thread (I had only ever played the NES one-shot version myself).  As a noob to the latter entries in the franchise, did the sequels add new features / components above the original?  Or are they just new maps using the original's components?

 

TY. Yes, there are extra doo-dads.

Slime (in addition to amoeba).  Not sure what else, really - haven't investigated much. I'll be adding whatever I can from the sequels.

And maybe new stuff -- who knows. We'll see what's possible. Some non-franchise versions add other stuff, but I'll be unable to do those.

 

 

  • Like 1
Link to comment
Share on other sites

OK, I need to move on from the diamonds. I've added a fade to the sparkle; don't ask how! I've much-improved the randomness. The diamonds sparkle frequently, but when there's a whole screen of 'em hopefully it's not too intense, and certainly should be hard to discern a screen-wide pattern.

 

  • Like 3
Link to comment
Share on other sites

Having said "no screenwide pattern", I've just added a sort of diagonal "hotspot" that sweeps across the screen. Diamonds within the diagonal band are more likely to sparkle/flash. It's subtle, but means that you do get "groups" of diamonds sparkling together (but not in-sync, just about the same), and that looks rather good.  Look for it in the next video.

 

  • Like 1
Link to comment
Share on other sites

Here's the "final" version of the diamonds. Pretty happy with it; random enough but not overpowering. I think.

Next up... I should really get some sprites in, I think.

 

 

 

I had to film this with my phone, offscreen - the screen grabber only does 38Hz on my machine, and I needed 60Hz to show the diamonds in all their glory, as there are a few single-frame transitions in the sparkle.

Edited by Andrew Davie
  • Like 7
Link to comment
Share on other sites

BD2 is a bit of a problem-child. It seems that the original cave data is nowhere to be found.  Why should this be a problem, when there are plenty of screenshots?  It's because how caves are stored/unpacked. The original file format essentially used a predictable random number generator, and a starting seed. The seed might, for example, say that the random numbers for "boulders" starts at value $F3.  Then the boulders are generated based on this seed, and you get a predictable pattern.  Now, we know the pattern; we don't know the seed. Same for other objects like butterflies, fireflies, and diamonds. The rest of the cave is generated with some "hardwired" placement of stuff -- horizontal/diagonal/vertical walls, and rectangular areas with/without content, for example. Not having the original source data is a pain.


But further to that, subsequent usage has seen a "boulder dash cave file format" (BDCFF) been used by most modern implementations. This simply represents a cave as an N x M array of characters with each character representing (in ASCII) some item in the cave (think "w" for wall).  So this is an easy way to share/exchange caves; the problem is that for a standard cave this is 40 x 22 (880) bytes. That's too much to be able to fit multiple caves into the game.

 

So, I'm thinking (a) reverse-engineer the seed for caves, or (b) switch to BDCFF and find an efficient compression algorithm. I'm thinking, for example, treat the boulders/diamonds/etc, each as a single "plane" with only on/off (880 bits).  Then RLE-encode the 880 bits to get an "efficient" packing. Us the most frequent object first. Then the next objects skip squares that already have content. So, if you put down 200 boulders, you only need 880-200 bits (680) for the diamonds, say. And you RLE that, bringing it down to (say) 25% of that, so 170 bits.  And repeat for other objects. I think this would be sufficient to allow multiple caves in the ROM and not be difficult to implement. Then we could work with BDCFF compatibility, which would be a bonus.

 

But my focus is on how to get BD2 caves in.  Not sure which way to go. Can anyone find the original cave data?

 

  • Like 1
Link to comment
Share on other sites

Using the site Thomas posted, I went through to try to find "new" elements of BDII/BDIII:

 

 * BD II : Cave C / Cave M = "blue slime"

 * BD II : Cave O = "the growing wall"

 * BD III: Intermission 1 / Cave O: Not a new element per se, but notes that these level use a "bug" in the BD 1 engine where if an amoeba touches an active magic wall, the amoeba will turn to diamonds. 

 * BD III: Cave H = I don't remember if this is new behavior or not, but if you have multiple magic walls, a boulder falling through becomes a diamond, and a diamond falling through becomes a boulder.  This makes for interesting scenarios with multiple magic walls where elements convert back-and-forth.

 

 

  • 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...