I made some discoveries about game seeds in Moonstone & their behaviour. Time to share the knowledge in this video:
tldr:
- You can get a specific game seed by starting the game at a specific time.
- It seems that you can get an unknown seed by completing a first run then starting another. At least I couldn't figure out yet which time to set to get to that seed.
- Therefore I suggest creating new categories for fixed seeds.
I added the sections in the youtube description, might as well add them here: 0:00 how to send a specific time to dosbox with faketime (linux only) 1:33 fixing a game seed by starting the game at a specific time 4:00 altering the game seed by game over screen (Q) 8:20 other time = other game seed 13:47 changing date doesn't change game seed, only time 14:40 theory for game seed after a completed run 17:20 test5: complete seeded run (18:00:10) 23:58 then run the unknown seed (looking into a few lairs for their loot) - part of test5 39:00 trying to find the unknown seed in a certain time range (18:00:10 + time it took me to complete the run) - didn't find the seed - part of test5 54:10 & 1:11:11 repeating test5: complete seeded run (18:00:10) 1:06:07 & 1:21:27 repeating test5: run the unknown seed (different seeds than 1st test5 unknown seed from 23:58 ) 1:25:20 repeating test5: trying to find the unknown seed - didn't find the seed 1:34:55 Intro influences game seed
@happycamper_ Thanks for sharing. I had some discussions about this with Tenka. Shouldn't be a problem, because one shouldn't expect to get a new PB on first attempt anyways. I was also wondering if just quitting was sufficient so it wouldn't take long to start actual attempts, but apparently not. I'd assume this would also mean that losing all lives doesn't work either? Should be sufficient to post just end of the last run in the submission, instead of the whole run.
@Habble happycamper_ probably knows better, but I'd assume so if there's a seed for the dragonstone and it's not caused by a separate glitch. Not sure how to find that seed though, without actually testing hundreds of seeds.
I assume the Dragon holding the item allocates a specifc location in memory so maybe if we figured out which one that was we could check more start time references through an external hex viewer but failing that yeah It'd have to be brute forced otherwise.
I stared my research spree beginning of January when I did a Dragonstone grinding stream with ~100 slain dragons. No Moonstone dropped. As Tenka stopped by we began asking a lot of questions...
Anyway I didn't notice at first, but both Dragonstone videos that I know of found the Dragonstone after acquiring the first key. I didn't go for a key in my grinding session. -> no possibility for Dragonstone? Another thing is that the dragons in both videos carry a good amount of loot. I noticed that when you quit a run (game over screen) instead of completing that the dragon gets more and more loot. So maybe it is a combination of a fitting game seed, "boosted" dragon loot & having a key. I only tried that a few times and haven't seen a Dragonstone yet... who knows? Anyways, Dragonstone seems not to be too straight forward.
[quote]I'd assume this would also mean that losing all lives doesn't work either? Should be sufficient to post just end of the last run in the submission, instead of the whole run.[/quote] I agree. A forced warmup run :3 I don't know / haven't tested losing all lives. But I'd guess it depends what happens. There might be some events during the game that change the game seed. If you complete a run & trigger the intro again, that works for sure.
Sorry for the late reply to this post, I've been pretty swamped lately.
So, what I propose is:
- Create a "Fixed Seed" Subcategory (in which anything goes), I'm thinking this might as well just remain alongside the main categories Standard and Dragonstone. Do we really need a non-fixed seed Dragonstone category? - I mean as insane as it is that Eino and Paul Knives both got one, I don't know if its something we need if the seed can be found.
So basically it will then be 3 main categories: Standard, Fixed Seed, Dragonstone.
- The rules I figure will be as follows: Standard
- For any run claiming a time under 7:00 you must include some proof that the run was performed from a non fixed seed. This can include showing a completed run (not a game over) before the run begins, or it can be a separate highlight which shows an extended amount of play which includes a prior completed run.
- Taking a moonstone from the dragon disqualifies from this category.
Fixed Seed
- Anything goes, you may use DosBox's Fake Time feature to simulate a fixed seed of your choice.
- Taking a moonstone from the dragon disqualifies from this category.
Dragonstone
- Anything goes, you may use Fake Time to simulate a seed or not (incase you got that god luck).
- You must get a moonstone from the dragon.
Does this seem good?
The alternative is to go double subcat, fixed/non-fixed then Standard/Dragonstone separately. To be honest I'm not that fussed if you guys prefer this method instead, I'm just not a huge fan of nested subcategories. Just let me know.
faketime is not a dosbox feature but a linux-command that I installed especially for these tests. Some quick search brought me to this as an approximation of it for windows (be careful I haven't tested it): https://renenyffenegger.ch/notes/Windows/tools/event-hooking/set-date-in-process/index It should also work if you manually set your system's time to something and then start the game manually at the time you aimed for.
My dosbox-config-file has a autoexec-section like this to start the game when I start the dosbox. mount C /home/happycamper/Games/Moonstone/GAME/ C: ms
By sheer coincidence I found an equivalent for faketime for Windows called "runasdate" in the PoP2 resources. https://www.nirsoft.net/utils/runasdate.zip They also have a guide for that: https://www.speedrun.com/pop2/guide/r8o7z I cannot test it myself, but from reading a bit in the readme it should provide same functionality. It can also run from the command shell.
So we should be able to make a very similar setup for consistent "start Moonstone" times. Or in other words: If you want to start consistently at the specified time you need to start the game immediately after dosbox starts by adding the fitting lines for your folder-structure in the auto-executeable section in a dosbox-config.
Could the same principal be done within .bat script alterations to format the date and time then launch the game for those using real hardware or a MiSTer? Using runasdate seems like a comprehensive solution for modern Windows users but it looks like it only works for Windows 2000 and up.
Probably... maybe... idk. I have no clue if anyone bothered to create such functionality for DOS back in the days. When I was searching for ways to manipulate the time I first searched for functionalities within dosbox. But I didn't find any bat-script, only some commands which are special for dosbox-x (and that didn't work for me).