Jump to content
Jet Set Willy & Manic Miner Community

Jet Set Willy cycle randomiser - mod idea


RuffledBricks

Recommended Posts

Here's an idea I had for a mod, though I do not have the programming know-how to create this myself.

I'd be interested to play a version of JSW that was exactly the same as the original (with the pokes, natch), except all the enemy cycles are randomised, so that each enemy starts from a random position in their cycle when you enter a room.

The pros of this idea are that it would create an extra challenge in the game, as compared to the vanilla game you'd never know where the enemies were going to start from in each room and would have to adjust your timings and strats on the fly as a result.

A possible downside of this idea is that this could potentially lead to more instant death loops if the randomiser places an enemy right at the entrance of a room - for example, you could die immediately in Top Landing if the Swiss army knife enemy started their cycle right at the Bathroom door. Although this could also be seen as an upside, as it would require the player to be extra vigilant about the route they take around the mansion to avoid as many instant death 'hot spots' as possible.

Anyhow, what do you all think? Has it been done before? And if it hasn't, how feasible would it be to create?

 

 

 

Link to comment
Share on other sites

I like that idea in principle.

In theory the 'start position' could be likely placed to avoid M.W initial contact, perhaps say a choice of starting the guardian at any number of fixed blocks along its path, avoiding starting at the screen edges and/or near another entry point if MW can safely drop into / climb up into the screen too.

The alternative 'fix' would be to give him a few seconds immunity after a life loss, to allow him to get himself out of the situation but that still means its cost a life to get this reward. Modded JSW2 offers this and makes a reasonable attempt at preventing an instant death situation by restarting the last position but this can actually cause an IDS to happen sometimes! (there are two 'base modded' versions of this 'few seconds immunity' version) one that fits in to the 48K machine with just that extra and one with cheats and a teleport that needs a 128K machine, merely because there was no sane space to fit it into the 48K, but this is off topic really as the JSW2 'engine' is not quite the same as the JSW one, the latter being much easier to 'play with'

Back on topic, I do like the idea provided the starting positions are set within block limits. Some screens care would have to be taken to avoid guardian contact with each other, Forgotten Abbey would be a prime candidate for this as they do overlap each other quite a bit.

It does not sound that difficult to code in theory however it would not really be for me to decide upon that, I have a vague idea on how to set / alter the positions at random but it would likely be a mess!

Link to comment
Share on other sites

(For the unfamiliar, IDS = Infinite Death Scenario.)

RB's idea wouldn't necessarily set up an IDS if Willy entered a room at a point where a guardian started its path, because after losing a life and the room being refreshed, the random start position of that guardian would most likely be somewhere else (whilst Willy's start position in the room would remain the same).

One possible scenario you might get in, say, Forgotten Abbey, could be two monks in sync directly above/below each other, and remaining that way (assuming their horizontal trajectories are of the same width), making it impossible to jump over the lower one without Willy's head hitting the upper one's legs!  But if you walked out of the room and back again, they would reset to different start positions so the problem would be resolved.

Link to comment
Share on other sites

Just now, IRF said:

(For the unfamiliar, IDS = Infinite Death Scenario.)

RB's idea wouldn't necessarily set up an IDS if Willy entered a room at a point where a guardian started its path, because after losing a life and the room being refreshed, the random start position of that guardian would most likely be somewhere else (whilst Willy's start position in the room would remain the same).

One possible scenario you might get in, say, Forgotten Abbey, could be two monks in sync directly above/below each other, and remaining that way (assuming their horizontal trajectories are of the same width), making it impossible to jump over the lower one without Willy's head hitting the upper one's legs!  But if you walked out of the room and back again, they would reset to different start positions so the problem would be resolved.

This is a good point. In my head I hadn't really settled on whether the randomiser would apply once per game (i.e. the positions are randomly set before the game starts and are then fixed once you start) or whether the randomiser would apply every time you enter a room. I hadn't considered that the latter would help to avoid the IDS.

 

Link to comment
Share on other sites

I like this idea definitely in principle, but IRF has said what I was thinking, it strikes me it would make some rooms

impossible with baddie movement. Perhaps walking out and then in again into a room would be a fix. Hmm. Is it

possible that you could become trapped in a room and not be able to get out again maybe, thus forcing a loss of

life? The temporary immunity is perhaps another solution, hmm. I would like to see it, something that could as you

say build on the JSW we all know and love but offer a new challenge perhaps. It seems more consistent to me if

every game and every screen entry had the random elements. Could we have the in game tune similarly changed

too, I definitely like the idea of that, some of the most creative mods I think are the ones where the music is

responsive, I think JSDanny did a good one, Madame B was it? where the music changed a lot. I expect Norman Sword

will have an opinion on this randomising idea too.

Edited by MtM
Link to comment
Share on other sites

Easy to randomise the sprite start positions within their paths. JSW128VM runs a similar set up. (just not obvious it does so)

The major problem beside IDS and sprites starting in the entry position of a room. (which causes one death) is the paths of sprites that do overlap with each other.

The monks in the forgotten Abbey will collide with each other.--- (are there other rooms?)

What you have suggested is to me, very easy to do.  Even adding a period of immunity is very easy to do (for me).

Having said the above I have no plans to write such a game.

 

Starting in a random place - ignoring the other aspects of the game. When the room has been generated and it normally returns to the main part of the game. Instead for each sprite call the movement routine for that sprite a random number of times.

 

 

 

Edited by Norman Sword
Adding information.
Link to comment
Share on other sites

Further elaboration on starting in a random place.

When the room has been drawn and all the room data has been drawn. In jsw128VM, VK and VL a routine is called that moves the start position of designated sprites. For a working example. I will describe the sprites in the attic. In jsw128Vm they are all the same sprite.  The program only stores one sprite and not the sprites that the standard JSW stores, which is one sprite entity per part of the body.

For each part of the body the horizontal position is changed (as normal for a sprite) The vertical part of each sprite position is fixed. The program calls the movement routine a specific number of times for each part of the body. This repeated calling allows the start position of each part of the body to be moved a set distance from the original start position. The sprites are finally drawn when the room is drawn with all the parts having been moved from the single entities start position. This might sound like it will be slow to execute. Yet I have never witnessed a delay jumping from room to room in JSW128vm and no one has even hinted that a problem occurs in the time taken to move from room to room.

These type of convoluted and extended routines are not part of the main game playing loop, The amount of processing that can be undertaken when jumping from room to room is massive. In JSW128VM the amount of room generation code is massive, but as stated it is not a problem.

Link to comment
Share on other sites

23 minutes ago, Norman Sword said:

For each part of the body the horizontal position is changed (as normal for a sprite) The vertical part of each sprite position is fixed.

Question: shouldn't that be the other way round for the Attic Centipede? i.e. the horizontal position of each segment is fixed, whilst the vertical position varies?

Link to comment
Share on other sites

In jsw there are less than 128 entities. The entities are jiggled around and form all the sprites in JSW. When an entity is defined it defines certain parameters. The parameters it defines for a sprite that moves vertically is the upper and lower points and its vertical start position. The entity can then be moved horizontally to its start position. The centipede in the attic has an entity defined for each and every part of the centipede because it can not move the vertical start position. 

The routine I wrote uses the move start position (as written above) to move the fixed start position of one entity to duplicate the original multiple entities defined.

So yes the statement I made was correct.


I will check ---- If the above is correct.

 

 

 

Edited by Norman Sword
Caterpillar / centipede / millipede consistency of notation.
Link to comment
Share on other sites

7 hours ago, Spider said:

Some screens care would have to be taken to avoid guardian contact with each other, Forgotten Abbey would be a prime candidate for this as they do overlap each other quite a bit.

I would keep the guardians in phase, by advancing each guardian’s position the same random number of times before the start of play in a room.

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

Important Information

By using this site, you agree to our Terms of Use.