Jump to content
Jet Set Willy & Manic Miner Community

andrewbroad

Contributor
  • Posts

    108
  • Joined

  • Last visited

Reputation Activity

  1. Like
    andrewbroad got a reaction from jetsetdanny in Jswed2 Suggestions   
    Shift + left click works for me.
  2. Thanks
    andrewbroad got a reaction from Spider in Jswed2 Suggestions   
    Shift + left click works for me.
  3. Sad
    andrewbroad reacted to geoff in The Annual JSW&MM Day Out - Play Expo, 2021 !   
    I love the thought of me signing autographs!!! Unfortunately, at present and for the foreseeable future I am unable to travel due to long-term illness, but I'm happy for a live-size cardboard cutout of me to be there in my place.
  4. Like
    andrewbroad reacted to Richard Hallas in Illuminated flashing Willies   
    Just as a quick follow-up…

    I finally got it! 🙂 My own Willy with crash helmet, as seen in Join the Jet-Set!. I requested the 'one foot in front of the other' pose, as I prefer it to the striding position.

  5. Like
    andrewbroad got a reaction from jetsetdanny in Some Speccy Hardware pics   
    These two pics give me a warm nostalgic glow. I acquired a Spectrum +2 in 1988 after my 48K Spectrum died, but the Datacorder didn't like my JSW II cassette. Then in 1991, I managed to load JSW II into the +2 after copying it onto another cassette.
  6. Thanks
    andrewbroad got a reaction from Spider in Some Speccy Hardware pics   
    These two pics give me a warm nostalgic glow. I acquired a Spectrum +2 in 1988 after my 48K Spectrum died, but the Datacorder didn't like my JSW II cassette. Then in 1991, I managed to load JSW II into the +2 after copying it onto another cassette.
  7. Like
    andrewbroad reacted to MtM in [File] Manic Panic   
    Norman, how about a tennis themed set of screens somewhere? Seems timely at the moment with the French open, and Wimbledon approaching, and I am sure Andrew Broad would like that too 😉
    I have downloaded your latest file and will give it a go tonight on the old Next. Thanks for all your top work.
  8. Like
    andrewbroad reacted to Spider in Technician Ted   
    Going back to 'Ted for a moment (sorry)
    Small vid, sorry audio did not record for some reason!
    622kb / 1m20s , "Search Loader"  🔨 broken 😮  🙃
    😉 😄
  9. Like
    andrewbroad reacted to Spider in Some Speccy Hardware pics   
    Some hardware pics taken yesterday. I'll replace this line of text with a link or two later today or tomorrow.
    +2A







     
    ----------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------------------
     
    +3







     
    ----------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------------------
     
    48K Plus / Microdrive / Kempston



     
     
  10. Like
    andrewbroad reacted to crem in Automated generation of Jet Set Willy speedrun/walkthrough   
    I considered it, but the problem is that routing is not really a travelling salesman problem (it's easy to "reduce" TSP to what is needed for JSW routing, but in opposite direction it's not so):
    In JSW, "visit" happens on edges rather than vertices.
    If this along would be a problem, it could be worked around by inserting a fake vertex inside the edge with item collection. There are several edges (in-room routes) that have the same label (collect the same item).
    In TSP it doesn't matter from which edge you came to a vertex, all outgoing edges still available and have the same cost.
  11. Like
    andrewbroad reacted to crem in Automated generation of Jet Set Willy speedrun/walkthrough   
    It indeed happens sometimes that hobby project suddenly starts to feel like a second job. At some moment you realize that you "have to" do something, and that instantly kills all the motivation. That's why I'd like to say that it's very possible that I'll just drop the idea or suddenly pause it for years. Having this option actually makes it less likely to do so.
    But the JSW route finding project is currently nowhere near feeling like an obligation. I enjoy the process of solving it a lot, and also like the fact that the results turn out to be useful. Actually, the result itself is not that important to me (i.e. I'm not that curious myself what is the fastest way to finish the game, but I like that other people are).
    I also try to structure it that way that I'm learning something useful for the next projects, so that it doesn't feel like I'm wasting time for pure joy. 🙂
  12. Like
    andrewbroad reacted to jetsetdanny in Automated generation of Jet Set Willy speedrun/walkthrough   
    My understanding is that crem is doing it because he wants to and I hope he's enjoying it (just as one can enjoy struggling to solve a forbiddingly difficult and frustrating JSW game, like one of Dr. Broad's extreme challenges 😉).
    For my part, I can say I'm enjoying following his updates and learning about the developments of the situation. Certainly, I would not encourage crem to continue his quest just for the sake of this enjoyment of mine, but I do trust he's enjoying it, too 🙂 . And the results, as Ian mentioned, may be useful by revealing manoeuvres and timinigs that human players have not come up with so far 👍.
  13. Like
    andrewbroad reacted to crem in Automated generation of Jet Set Willy speedrun/walkthrough   
    A message of assorted topics about how everything is failing but there's hope. 🙂

    (1) It is clear now, that the attempted brute force solution to build the route doesn't work.
    It may find good enough walkthroughs and maybe even better than the currently best known routes, but it surely won't find the optimum.
    My nightly attempt to re-run the same Warpless+Maxlives lives turned out to give even longer (by 23 frames), despite having much wider search (7'571'762'474 states instead of 2'439'193'796) and entire evening to fighting algorithm's memory hunger.
    The route is slightly different, here it is: https://www.twitch.tv/videos/1023369202 (I found that the easiest way to record and share the video is to stream on twitch).
    I won't try any complex improvements to this algorithm. Instead I'll do one small tweak (point 3 below), run the algorithm for all the categories (4), and then probably will try a different approach (6).
     
    (2) Combining the spliced walkthrough to the proper one didn't work for some of room transitions.
    (technical stuff hidden in spoiler)
    Anyway, that's an easy thing to fix. I split such problematic entryways into several and recalculate affected routes. This is what's happening now, should take 1 day.
     
    (3) The current algorithm is too greedy, I'll try to come up with better game progress metric, which should help but not by much.
    The algorithm prefers to grab lots of easy items right away, and then struggles with the remaining ones.
    Currently, only "number of collected items" is used as a metric to track progress. Replacing it with a better one can improve things. I'll try to do the following:
    Make items valued differently (e.g. Ballroom West items are cheapest as they are easily accessible and plentiful). Penalize some sets of remaining items (e.g. if two remaining items are in different corners of the map). That will require some manual judgment though.
     
    (4) I'm still planning to generate all the speedrun categories using the current algorithm.
    But first I'll have to fix issues (2), (3), and for the realtime runs, do the (5).
     
    (5) For In-game-time optimization, I use number of frames. For Real-time runs, I'll need number of CPU cycles.
    My plan is to measure number of CPU cycles for every of ~250000 routes that were generated (including time to draw the next room) and use it as the edge cost in the algorithm. I expect this process to take ~3 hours.
    Some notes regarding that:
    I'm not sure how precise is the emulator library that I use. I surely don't emulate any input or memory delays, but otherwise it should be fine. What to do with variable number of lives affecting speed? I can either test a few routes and come up with a formula how number of lives affects frame time, or I can run all routes for all number of lives. Then it will take ~24 hours, still probably that's the easiest. 🙂  
    (6) Second attempt will be an AlphaZero-style neural network (if there will be a second attempt).
    If the results of the current algorithm won't be satisfiable, the next thing I'll try (given enough time and enthusiasm) is to try a AlphaZero-style reinforcement learning.
    For approach I'm very confident that it will work when implemented, but it's not very fast to write. Probably 1-2 months worth of winter evenings, which translates to 3-4 months of summer evenings.. But depends on weather. 🙂
  14. Like
    andrewbroad reacted to crem in Automated generation of Jet Set Willy speedrun/walkthrough   
    I'd like to share some stats about how the search is going so far (and some issues), for it to make sense, here is a bit of information about the algorithmic aspect of the route finding.

    Most of "dynamic programming"-based route finding algorithms find shortest route from one source state to all possible states (i.e. it takes roughly equal amount of time to find the shortest batch from A to B, and all shortest paths from A to all B and C and D).
    It would be easy just to run the shortest route search for the entire game, but the need to collect items in arbitrary order rather than just running to the end as quickly as possible actually makes the game a travelling salesman problem (something that doesn't have fast solution), not the shortest path problem.

    What I do instead, is take all possible entrypoints¹ of all rooms, and generate all shortest routes in this room which start at the entrypoint and end either with a life loss or with transitioning to another room, for all possible² collected items variants.

    ¹ All possible entrypoints are determined from possible "exitpoints" of previous searches.
    ² It's not as bad as it sounds. If at given point the search finds out that there is a state strictly better than another one (exactly same Willy location at exactly same frame, but more items collected), it drops the worse state from the database.

    As a result, I expect to find the set of in-room routes in the following format:
    From this entrypoint of the room It's possible to collect items X and Y. And end up in that exitpoint of the room (or loss a life; needed for Any% run) In Z frames (and later I'll annotate all those routes with number of CPU cycles, to support RTC speedrun rather than IGT). Here is the route: L L L . . . (keypresses per frame) Ones I generate all such routes, I won't need to emulate the game at all, and will be able to work with the routes as a set of edges. This both reduces the state space, and makes all the algorithms much faster. Instead of generating 5000 frames per second, it will be possible to get to process tens of millions room walks per second.
  15. Like
    andrewbroad reacted to crem in Automated generation of Jet Set Willy speedrun/walkthrough   
    The approach I've picked supports both, but as counting frames is much easier than CPU cycles, I'll start with the in-game time.
    It also supports all Any%/Warpless/Max Lives categories, so I'm planning to do all that (in-game time first, then real time later).
    It's not possible to process WRITETYPER run with this approach though, but I have a different idea how to do that, so unless I lose enthusiasm by then, after normal JSW runs I'll also generate the WRITETYPE route.
    The most labour-intensive part of the realtime-clock-based run generation will be to gather per frame timings:
    "Base" time for one frame per room (which will be different as there will be different amount moving objects) How much extra time does every extra life add. How much time it takes to switch a room. (if there's a difference of speed depending on number of displayed collectible items [which I assume there is, but hopefully negligible], I'll have to ignore that due to the way the algorithm works).
  16. Like
    andrewbroad reacted to IRF in Automated generation of Jet Set Willy speedrun/walkthrough   
    Are you going for the fastest 'real world' completion time, or the earliest finish according to the on-screen clock (i.e. the fewest number of frames/ticks/passes through the Main Loop)?
    The merits of climbing up the Bathroom ramp at the start of the game, in order to access the Top Landing item, were discussed at an earlier stage (around the time that RuffledBricks first posted his speedruning video), and I think the consensus emerged that that early decision could have a bearing on the completion time, depending on what you're trying to achieve.
    If it's the earliest finish according to the on-screen clock (fewest frames), then it stands to reason that you should collect the Top Landing item as the second item (after the Bathroom tap), so that Willy isn't wasting frames walking back into the Bathroom at the end of the game to access the ramp up to the upper levels of Top Landing.
    If it's the fastest real world completion time, then RB pointed out that the game runs faster at the end (assuming you've used up all your spare lives by that point 'kamikazeing' items), because the execution of the drawing of spare lives on the status bar during each frame, slows down the game to a degree which is perceptible over the course of a whole game.  So the fact that Willy has to take a longer route (more frames) to collect the Top Landing item at the end, is outweighed by the fact that the game runs quicker at that point if you haven't got any spare lives left.
    ****
    Incidentally, if it's the fastest real world completion that you are trying to achieve via your algorithm, then you would need to get it to release and then press 'ENTER' in the first two frames of the game, in order to turn off the in-game music.  Because the playing of the in-game tune further slows down the running of the game.
  17. Like
    andrewbroad reacted to Richard Hallas in Illuminated flashing Willies   
    Greetings all,
    I'm posting this at the suggestion/request of Spider.
    Recently on Facebook, a guy called Alan Grier advertised some LED lamps he'd created that feature Miner Willy in his Jet-Set Willy guise. Here's the thread:
    Facebook thread on JSW LED lamps
    He'd only made five of them, and they all sold out within minutes. I was lucky enough to get the last one. However, he's making more. Should anyone here want one, it's probably best to approach him via Facebook (direct-message him). However, he divulges his email address on ordering, so I have that too. I don't want to publish his email in public here, but if necessary (e.g. if someone tries to contact him via Facebook and can't get through), contact me privately on this forum and I'll supply it.
    The lamps cost £15 each, inclusive of everything (even postage via Hermes) – which seems like excellent value to me.
    Here's mine, illuminated blue in a dark room at night with the other lights off:

    It appears a little over-exposed here, but in real life it looks fantastic. It's illuminated from below by a row of LEDs, and they're surprisingly bright and distribute the light pretty evenly. If I were being picky, I could say that there's a slight dimming in the centre of Willy's head and a touch of extra reflected brightness at the top of his hat (which you can see in my photo), but that's being overly critical. It's not bad enough to worry about, and the lamp looks really great. Also, the lamp is bright enough to be very easily visible and solidly coloured in full daylight.
    The lamp arrives as the plastic base unit and the clear perspex 'tongue' containing the engraved artwork, which just pushes into a slot and is then quite secure. (But also easily removed, if you happen to have more than one insert and want to swap them.) Also included is a USB cable and an infra-red remote control (with battery already included).
    The engraved perspex tongue is very nice quality: extremely clear and ideal for its purpose. The base unit is just plastic and not especially high quality plastic, but it's perfectly fine for the job. It's maybe a little lightweight, but it's heavy enough to do its job, and won't blow over if you walk past it too fast!
    The base unit can be powered by the USB cable or you can instead insert three AA batteries into a compartment underneath.
    There's a touch-sensitive on/off control on the front (which you can see easily in my photo): holding a finger over it will power the lamp on/off, and touching it briefly will cycle through a series of steady colours.
    For full control of the lamp, you need to use the infrared control unit, which offers a surprising range of options, as follows:
    • On/off buttons.
    • Brightness control buttons (seven levels, from 'clearly visible' to 'very bright', though the levels only appear to work with steady colours).
    • Solid colours: White, plus three 'scales' from R to Y, G to C and B to M, each with three intermediate steps. In other words, there's a grid of colour buttons with RGB at one extreme and CMY (in the order YCM) at the other, and three intermediate buttons between each of those colour pairs. Plus White. So, there's a choice of 16 steady colours if you don't want the lamp to flash.
    • Four animation effects: Flash, Strobe, Fade, Smooth. These all appear to work at full brightness only. Their effect is as follows:
    † Flash: Makes the lamp rotate through the solid colours Red, Green, Blue, Yellow, Magenta, Cyan, White, spending about a second on each colour.
    † Strobe: Same as Flash, except that it only uses the colours Red, Green and Blue. A bit boring.
    † Fade: Makes the lamp cycle slowly through the same set and order of colours used by Flash mode, but this time slowly fading from one colour into the next. Each fade takes about four seconds (with one second spent in each colour-stop), so the lamp is constantly changing but in a very non-distracting way. Also, because the fades are so smooth, you get some nice colours along the way (e.g. on the way from Red to Green you get a brief orange and yellow). It looks really great.
    † Smooth: This uses a similar fade effect to Fade mode (though faster, at only about two seconds), but it only alternates between two colours: pure white and deep blue. A bit boring, frankly.
    So: two good animations and two ho-hum ones. Flash is good if you like flipping between seven solid colours; Fade is good if you prefer a slower and gentler fading version of the same thing.
    I personally like Fade best: it's nice and gentle and non-distracting, but allows you to see the full range of lovely rich colours. (And they really are lovely and rich, especially red, which seems incredibly intense.)
    As a final note, Alan Grier has reacted positively to the idea of doing alternate and/or custom designs. So I intend to get him to produce a version featuring Willy wearing a crash helmet, as designed by me for use in my own game, Join the Jet-Set!. If I do get such a version, I'll post a photo of it here.
    Anyway, I think the lamp's great. I'm really pleased with mine and plan to leave it on all the time. I've got it plugged into my Mac and it continues to illuminate even when I've put the Mac to sleep, so it also acts as a night light during the small hours and possibly helps to avoid stumbles on the way to the toilet!
  18. Like
    andrewbroad reacted to IRF in Some Jet Set Willy technical questions   
    I can't think of a way in which #8C01 is bypassed when losing a life.
    When you've observed it happen, does the program bypass the 'fade to black' screen effect?  If so, maybe a bug in your code means that you have an entry point into the routine at #8C33?
  19. Thanks
    andrewbroad reacted to darnkitty in Preserve darnkitty.com data?   
    Here's a zip file containing the room images from the JSW Map (http://www.darnkitty.com/jsw/jet-set-willy-map.php). There's also a TXT file containing the comments people have left, and some PHP code which links the room name with the room number I used internally. As those of you who got to play the remake probably knew, there were a few extra rooms that I added in there - spoiler alert, their images are included in the ZIP file 🙂
    There's not that much in the ZIP file really, and I don't know what other information people want to preserve. But happy to help where I can.
    I previously ruled out rewriting the JSW remake in another technology... but I was thinking last night, Java is still around, it just doesn't run in browsers any more. I'm quite keen, if I can find and compile the original source code, to compile a version of the JSW remake which could be downloaded and run locally on somebody's machine as an EXE. I think that would still be possible.
    darnkitty-jsw-rooms.zip
  20. Sad
    andrewbroad reacted to darnkitty in Preserve darnkitty.com data?   
    Hi there,
    I'm Matt, and I ran the darnkitty.com site. I was sad that it had to close down, but once the last browser stopped supporting Java a couple of years ago, nobody was able to play JSW on my site anymore, and now Flash is going the same way, so there's not really any more point keeping the site going.
    For now I have at least re-enabled the JSW section of the site: http://www.darnkitty.com/jsw/. But there isn't a browser out there anymore that runs JAVA (in particular Java applets), so I would be very surprised if you could get the game itself to load.
    I can upload a zip file if people would like, containing the room images and comments, etc. But it would take a couple of days.
    Matt
  21. Haha
    andrewbroad reacted to Spider in Meanwhile, over in Belgium   
    Thoughts of making the JSW title screen contain two stacked 'triangles' spring to mind for a moment, then I could not deal with thinking about it! 😄
  22. Like
    andrewbroad reacted to IRF in Meanwhile, over in Belgium   
    That's two impossible triangles, impossibly stacked one on top of the other...
  23. Wow
    andrewbroad reacted to Spider in Meanwhile, over in Belgium   
    😮
  24. Like
    andrewbroad reacted to jetsetdanny in Two suggestions regarding the website   
    Would it not distract one from reading the site's contents? An "overfocus on Willy"? 😉
  25. Like
    andrewbroad got a reaction from nw24576 in Developing a new JSW-like game in C   
    Fascinating project. I too have plans to develop a JSW-like Spectrum game from scratch, possibly in the 2040s, but I plan to write my H* game engine in Z80 machine code, even though I have some experience in C from of old.
×
×
  • Create New...

Important Information

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