Fixed Martin Brentnall level 14 "Let Them In"

Found a bug in R'n'D? Report it here!

Moderators: Flumminator, Zomis

Post Reply
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Fixed Martin Brentnall level 14 "Let Them In"

Post by filbo »

Hi! I'm really glad to see this forum back up, and RND back under development!

I modified level 14 "Let Them In" of the Martin Brentnall set in the DX Boulderdash levels -- filename:

levels/DX-Boulderdash/dx_martin_brentnall/014.level

The original had the following problems:

1. The timing of the level is controlled by a yamyam bouncing around in a set of one-way reflectors, releasing sets of stored rocks. The yamyam may randomly skip one or more of these reflectors. If so, when the next set(s) of rocks are released, they do not reach the player, being blocked by the previous unreleased set(s) below. To successfully play the level, most or all of the stored rock sets must be released.

Fix: added to each "release the rocks" bomb fuse a side-fuse which releases the previous set; these chain backwards, so even if the yamyam skips all but the last set, they are all released. As far as I can tell, this can no longer go wrong: even if the yamyam skips directly to the final "trap the yamyam forever" arrangement, he bounces across to trigger all the releases before returning to get trapped.

2. The last two "release" bomb sets do different things: release a flock of bugs and other pests (to make life more difficult); and finally, blow up the exit (to add a "race" element to the action). These two parts of the level were not working due to use of non-falling "stable bombs". Also, one of the fuse-starter columns was the wrong height and did not successfully light its fuse.

Fixed these by using a few regular falling bombs + redesigning the problematic fuse.

3. The penultimate action, releasing the bugs, did not work because a rock will not slide from a slippery wall ("normal wall, BD style") to an adjacent "quicksand (empty)". The released rock was landing in the wrong place. I could have fixed this by removing or moving the "quicksand (empty)" down one; instead, I added an extra slippery wall to redirect the falling rock to the right target.

I will upload the modified version -- this will be my first upload to this forum, so we'll see if I'm successful. The upload is further modified by the editing process in that:

4. It's in a different save format (probably RND native instead of whatever the original was -- except that `strings` on the original says "ROCKSNDIAMONDS_LEVEL_FILE_VERSION_1.4", while the new doesn't have that at all, so I'm not sure what's going on...)

5. The NAME and AUTH fields are "Mod: Let Them In" and "Bela Lubkin (ed.)" instead of "Let Them In" and "Martin Brentnall".

Attached: archive of:

./levels/DX-Boulderdash/dx_martin_brentnall/014.level.orig
./levels/DX-Boulderdash/dx_martin_brentnall/014.level.converted
./levels/DX-Boulderdash/dx_martin_brentnall/014.level
./levels/DX-Boulderdash/dx_martin_brentnall/tapes/014.tape
  • The original level, as extracted from rockslevels-dx-1.0.tar.gz http://www.artsoft.org/RELEASES/unix/ro ... 1.0.tar.gz
  • The original level, reformatted, after saving from within RND 3.3.0.1 (comparison base)
  • The updated level
  • A tape of my successful completion of the level, including witnessing the release of the bugs
I wasn't sure whether to post this here in "Bug Reports" or in "Level and Artwork Design" forum; but the latter seems to be entirely about new development (and mostly, release) of level sets.

I am also going to attempt to inform Martin Brentnall, I *think* I've found the right guy with a bit of google searching. Don't know if he still cares about BD-style game levels decades later...

>Bela<
Attachments
DX-Boulderdash-dx_martin_brentnall-014.7z
(3.49 KiB) Downloaded 393 times
MartinBrentnall
Posts: 1
Joined: Tue Sep 02, 2014 11:38 am

Re: Fixed Martin Brentnall level 14 "Let Them In"

Post by MartinBrentnall »

Sorry to resurrect an old topic, but I just found this and thought I'd chime in. :)

Firstly, thanks for making the effort to maintain my levels; it's always nice to see that people are still interested so many years later. With regards to the actual fix, maybe it's worth explaining the root cause of these problems.

I believe (I'm not in a position to verify this myself right now) that most of the levels within my set are broken within Rocks 'n' Diamonds. The levels were originally designed in DX Boulder and converted to Rocks 'n' Diamonds years before I even became aware of Rocks 'n' Diamonds. Part of the design in these levels relied on exploiting very specific quirks in the behaviour of DX Boulder. Where such behaviour differs in Rocks 'n' Diamonds, the level mechanisms simply fail to function correctly and often result in the level becoming impossible or more easy/difficult than intended.

As an example, the cause of the first problem is that the YamYams in DX Boulder would always take an adjacent diamond after hitting a wall, even if the next movement was not in the direction of the diamond. Of course, in Rocks 'n' Diamonds, this is not the case.

The optimal fix may be to modify the path of the YamYam to hit each diamond as it moves left in the zigzag path (rock-containing quicksand blocks can be used to replace the rock stack in this case). This would ensure that the triggers are still activated in the intended order.

Anyway, regarding the whole level set... maybe I'll make some time one day to get DX Boulder running again in WINE or a Virtual Machine so I can play the original version of this entire level set, then fix everything properly in the Rocks 'n' Diamonds version once and for all (and who knows, I might even make some more). :)
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Re: Fixed Martin Brentnall level 14 "Let Them In"

Post by filbo »

MartinBrentnall wrote:Sorry to resurrect an old topic, but I just found this and thought I'd chime in. :)
Hi Martin -- I must apologize for not actually having tried to email you outside of this forum, like I said I was going to. I was going to do it eventually, but I'm glad you found your way here without my tardy prompting...

This is by no means an "old" topic on this slow-moving board. We're talking about levels with 1999 time stamps (and those probably indicate when they were format-converted to RnD, not when they were created). A 10-week-old conversation is quite fresh! :)
I believe (I'm not in a position to verify this myself right now) that most of the levels within my set are broken within Rocks 'n' Diamonds.
Not so -- I have solution tapes for all but 4 of the levels dx_martin_brentnall/(0..22) found in the RnD repository:

- 0 because no player appears (some engine incompatibility?)
- 5 because the horizontal wall refuses to grow when exposed (and I don't think I could beat it even if it did: there aren't enough initial diamonds & emeralds, and I don't see anything that can blow up the bugs) (oh wait, I solved that -- but still the horizontal wall won't grow after having been blocked by a wall; had to at least change the blocking wall to an emerald -- another engine incompatibility?)
- 14 for the reasons in this thread
- 15 I'm not sure, thought I'd solved it or at least saved a tape far into it, but I have no tape at all(?)

Some of the tapes I have don't work on RnD 3.3.1.2, but do work on older versions -- this is due to recent RnD timing changes and possibly bugs in tape saving/loading, nothing to do with your levels themselves.

And of course I have no way of knowing whether my solutions are "as intended" or if the levels are harder or easier in RnD due to engine differences...

(Of course, technically I could test that by running DX under WINE, as you suggest. -- And similarly, if you have WINE then you surely have a system that could run RnD, so you could verify behaviors if you had the time...)
The levels were originally designed in DX Boulder and converted to Rocks 'n' Diamonds years before I even became aware of Rocks 'n' Diamonds. Part of the design in these levels relied on exploiting very specific quirks in the behaviour of DX Boulder. Where such behaviour differs in Rocks 'n' Diamonds, the level mechanisms simply fail to function correctly and often result in the level becoming impossible or more easy/difficult than intended.
Yes, this sort of issue is expected with levels imported from different engines. Holger has gone to great lengths to increase compatibility with other engines, in some cases going as far as to port the core engine code into RnD from the old game; but it is always possible that further incompatibilities come to light.
As an example, the cause of the first problem is that the YamYams in DX Boulder would always take an adjacent diamond after hitting a wall, even if the next movement was not in the direction of the diamond. Of course, in Rocks 'n' Diamonds, this is not the case.
This sounds like something that Holger has probably heard of before, but perhaps should be raised to the level of an actual "bug":

BUG: RnD yamyams only eat diamonds when they choose to turn in their direction, whereas in DX-Boulderdash they always ate a diamond which was in reach (after being stopped).

I know you said "after hitting a wall", but is it possible that they would also eat diamonds they were simply passing by? Suppose a yam was moving horizontally on row 10, while diamonds were sitting in row 11 (on top of walls in row 12). As it passed above those diamonds would it eat or ignore them? If it ate them, did that delay its ongoing motion?

Also: suppose it was stopped at a point where two diamonds were available:
yamq.png
yamq.png (2.09 KiB) Viewed 5263 times
It's going to choose to turn left, turn right, or bounce back (up). If it turns, does it still eat the diamond that is (after the turn) "behind" it? If it bounces, does it eat both diamonds? Do they disappear simultaneously with no delay, one-by-one with some delay, or what?

FIX? For compatibility with DX levels, add a "yams are greedy" flag (similar to the most-monsters "can move into acid" flag) (incorporate the correct behavior regarding 2-diamond turns: not yet defined, asked above). Seems like this should be set automatically for levels imported from DX, but maybe should also be an available flag for standard RnD levels (giving level designers some extra flexibility).
The optimal fix may be to modify the path of the YamYam to hit each diamond as it moves left in the zigzag path (rock-containing quicksand blocks can be used to replace the rock stack in this case). This would ensure that the triggers are still activated in the intended order.
Well, I quite liked my workaround :) But you're the original creator, so if you submitted an implementation of how you'd like to see it done, it would make sense to incorporate that into the RnD level distribution.

I wonder if you might address my problems #2 (non-falling stable bombs making the last-released sections of the level not work) and #3 (released rock landing in the wrong place)? These could represent further points of incompatibility with the DX-Boulderdash engine (in which case maybe they can be fixed). Or alternatively they may be parts of the level that never worked in DX, but weren't really important. Obviously if they failed the same way in DX then it would be a mistake to change RnD engine to try to "fix" them!
Post Reply