Username:
B
I
U
S
"
url
img
#
code
sup
sub
font
size
color
smiley
embarassed
thumbsup
happy
Huh?
Angry
Roll Eyes
Undecided
Lips Sealed
Kiss
Cry
Grin
Wink
Tongue
Shocked
Cheesy
Smiley
Sad
12 ->
--
--
List results:
Search options:
Use \ before commas in usernames
(I put a french version of the text at the bottom for french people.)

Greetings !
I'd be very interested to make a speedrun (any%) of this game, preferably a segmented run in Insanity mode, otherwise a single-segment in Regular, but many difficult questions arise concerning the game timer. Here are the observations we can do :

  • The game timer seems accurate. It stops when the player opens the menu, but there is no reason to open the menu during a speedrun.
  • The big problem : playing time seems to be saved continuously and it does not take into account the save loads. Example: if I play 5mn, I save, continue to play for 10mn and quit without saving, the timer will show 15mn when I’ll reload my save file.
    I tried to copy the save file just after having saved the game, and then overwrite the current file from the copy I made, but that did absolutely nothing (and anyway, the operation would be too tedious in practice).
  • In the same way as for the time spent, the collected crystals (= in-game money) are saved systematically by the system, even if we don’t save the game. In fact, the save points are just like checkpoints.


From these observations, several questions appear (complex ones, from an “ethic” point of view) related to the execution of a speedrun :

1) Should we ignore the game timer and regard the save points as we would do for any other game ? Of course, only a positive answer to this question will allow to consider segmented runs.

2) If we ignore the timer, can we ignore the number of crystals possessed too ? If we are tempted to get more severe on this issue, at least for a coherence principle, it is important to note that a negative response would be totally impossible to respect in practice ; that being said, we can always work around the problem by counting the "illegitimate excess” of crystals transported and acting as if the excess don’t exist (ie, the excess of crystals generated by  automatic saves of the system must match the minimum number that the player should always have when shopping).
If we totally ignore the question of crystals (= maximum indulgence), then nothing will prevent the player to amass a huge number of crystals at the beginning of the game between two segments of the run. Allowing this would not necessarily be a bad decision though, because money management is definitively not the most exciting aspect of the game.

3) In the context of a single-segment, where these issues do not arise, can we save the game at leisure considering save points as simple checkpoints ? Knowing that they refill all character's hits points so that their use is almost inevitable - the only other way to regain hit points being to beat the boss.

Here were the questions I’m worring about, and if I was very cheerful at first, I confess to be gradually pessimist. Perhaps the best thing to do should be to contact the author himself ? I hope in any case to have been sufficiently explicit, but if a point is not clear, I'll try to make it clearer.


-----

Salut à vous !
Je serais très intéressé pour faire un speedrun (any%) de ce jeu, de préférence un run segmenté en mode Insanity, sinon un single-segment en Regular, mais plusieurs questions difficiles se posent quant au chronomètre intégré au jeu. Voici les obversations que l’on peut faire :


> Le chronomètre intégré au jeu semble fiable. Il est mis sur pause quand le joueur ouvre le menu, mais il n’y a aucune raison d’ouvrir le-dit menu dans le cadre d’un speedrun.

> Le gros problème : le temps de jeu semble être sauvegardé en continu et il ne tient pas compte des rechargements de sauvegardes. Exemple : si je joue 5mn, que je sauvegarde, que je continue de jouer pendant 10mn et que je quitte sans sauvegarder, le chronomètre indiquera 15mn quand je rechargerai ma partie.
J’ai bien essayé de copier le fichier de sauvegarde juste après une sauvegarde, puis d’écraser le fichier actuel plus tard à partir de la copie effectuée, mais cela n’a absolument rien changé (et de toute façon, l’opération serait bien trop fastidieuse en pratique).

> De la même manière que pour le temps passé, les cristaux récupérés (= l’argent du jeu) sont mémorisés systématiquement, même si l’on ne sauvegarde pas sa partie. En fait, les points de sauvegardes ressemblent plus à des checkpoints qu’autre chose.


A partir de ces constats, plusieurs questions se posent (complexes d’un point de vue « éthique ») relatives à la réalisation d’un speedrun :

1) Doit-on ignorer le chronomètre intégré au jeu et considérer les points de sauvegarde comme on le ferait pour n’importe quel autre jeu ? Bien sûr, seule une réponse positive à cette question permettra d’envisager des runs segmentés.

2) Si l’on ignore le chronomètre, peut-on faire abstraction également du nombre de cristaux possédés ? Si l’on est tenté de se montrer plus sévère sur cette question, ne serait-ce que par souci de cohérence, il faut bien comprendre qu’une réponse négative serait totalement impossible à respecter en pratique ; cela dit, on peut toujours contourner le problème en comptabilisant le « surplus illégitime » de cristaux transportés et en agissant comme si ce surplus n’existait pas (autrement dit, le surplus de cristaux généré par les sauvegardes automatiques du système devra correspondre au nombre minimum que le joueur devra toujours posséder lors de ses emplettes).
Si l’on ignore totalement la question des cristaux (= indulgence maximum), alors rien n’empêchera le joueur d’en amasser un nombre faramineux dès le début du jeu entre deux segments du run. Cela dit, permettre cela ne serait pas forcément une mauvaise décision, car la gestion de l’argent est loin d'être l’aspect le plus palpitant du jeu.

3) Dans le cadre d’un single-segment, où ces questions ne se posent pas, peut-on sauvegarder à loisir en considérant les points de sauvegarde comme de simples checkpoints ? En sachant qu’ils rendent tous les points de vie du personnage et que leur usage est de ce fait quasi-incontournable – le seul autre moyen de regagner sa vie étant de battre les boss.

Voilà quelles sont les questions qui me turlupinent, et si j’étais très enjoué au départ, j’avoue céder peu à peu au pessismisme. Peut-être que le mieux serait de contacter l’auteur lui-même ? J’espère en tout cas avoir été suffisamment explicite, mais si un point n’est pas clair, je tâcherai de mieux le formuler.
Thread title:  
Quote from Arcanod:
The big problem : playing time seems to be saved continuously and it does not take into account the save loads. Example: if I play 5mn, I save, continue to play for 10mn and quit without saving, the timer will show 15mn when I’ll reload my save file.
I tried to copy the save file just after having saved the game, and then overwrite the current file from the copy I made, but that did absolutely nothing (and anyway, the operation would be too tedious in practice).
Does this persist across powerdowns/hard machine resets? If so... I'd say it's actually continuously saving.
Waiting hurts my soul...
it'll probably just be manually timed.
Quote from ZenicReverie:
it'll probably just be manually timed.


That gets around the timer issue, but not the crystals issue.



If we can find where the game saves your time and crystals (may be a file, may be a registry entry) then we'll be able to back that up. No idea how to find it, though.

A little experimentation reveals one useful fact: the saving isn't continuous, it only happens when you save the game or quit from the menu. If you close the game using task manager, it won't save the time or crystals. This at least means that we don't have to worry about timer innaccuracies creeping in by way of extra seconds rolling over after saving - just quit using crtl-alt-del instead of the in-game quit option and this risk is eliminated.

We still need to find where the game saves time and crystals in order to be able to back that up, though.
Edit history:
Arcanod: 2010-07-07 02:30:56 pm
Quote from Kharay1977:
Does this persist across powerdowns/hard machine resets? If so... I'd say it's actually continuously saving.


I didn't try that, but ExplodingCabbage's discovery answers the question !

Quote from ZenicReverie:
it'll probably just be manually timed.
Quote from ExplodingCabbage:
That gets around the timer issue, but not the crystals issue.


In the worst case, if it's impossible to find/back-up the file we're looking for (it's not in the game directory, by the way), it would still be possible to act AS IF we don't possess the crystals that we are not supposed to possess. Then verifiers would just have to do some calculations, but I concede it's not a great solution and SDA decision-makers might not agree with it.
Hmm, did more research on this after my previous post, only just realised that I forgot to actually post it. Sorry if I'm a bit brief, shitty notebook keyboard not great for typing.

1) When saving, the timer drops fractions of a second.
2) Using third party app Cheat Engine it's easy to find the memory addresses that store the current number of crystals and the time rounded down to a second, and to set up a hotkey that you can press whilst in the menu before retrying to set these to the correct values. However the big problem is that the game still remembers fractions of a second if you do this. So if the time is 33.8s, for example, and whilst the game is paused you change the time variable from 33 to 10 in Cheat Engine, then 0.2s after hitting Retry the time will roll up to 11s. I presume there is another variable somewhere that tracks the fractions but couldn't find it.
3) If it matters, quitting to the main menu will clear the time and crystals and they'll be stored in different memory addresses when you next load a game. Also, it resets the fractions of a second to 0, unlike the retry option of the ingame menu which preserves them.

Arcanod, were you planning on doing a run? If not, I reckon we should shelve the issue until someone is and figure out how to handle stuff then.
Very nice research, but I'm not sure to fully understand your 3rd point though -_-'.

Yes, I was planning on doing a run, but not before all the issues/questions are solved/answered. However, from what you said, it appears that using the in-game timer will be very tedious and time-consuming. Couldn't we use a third party application cheat engine, as you mention it, only to modify the crystals value ? (--> Qu°2 on my original post) So that the playing time would be done manually (it woudn't be less legitimite than using a third party app).

In any case, I have to thank you a lot for your help.

And by the way, but you certainly have figured it out already, the game was done using Game Maker 7 (http://wiki.yoyogames.com/index.php/Old_Game_Maker_Versions), and it's source file is available on the author forum : http://mattmakesgames.com/forum/index.php?board=7.0. It was just to mention it : this information probably won't be helpful.
Exoray
You should not depend on having to modify the game as that will most likely invalidate your run (if you plan on actually submitting). It doesn't matter that you are not trying to gain something from it, for the sake of consistency any modification of this nature (third party app) is not allowed.
Quote from moooh:
You should not depend on having to modify the game as that will most likely invalidate your run (if you plan on actually submitting). It doesn't matter that you are not trying to gain something from it, for the sake of consistency any modification of this nature (third party app) is not allowed.


I'm pretty sure Mike will allow the use of Cheat Engine purely for the purpose of setting the Crystals value correctly before reloading, since the alternative is unavoidable inconsistency. I don't see why it would be treated as any different to overwriting the save file every time you reload, which acheives exactly the same result. I'll check stuff with him whenever I next spot him on IRC, though.

Quote from Arcanod:
However, from what you said, it appears that using the in-game timer will be very tedious and time-consuming. Couldn't we use a third party application cheat engine, as you mention it, only to modify the crystals value ? (--> Qu°2 on my original post) So that the playing time would be done manually (it woudn't be less legitimite than using a third party app).


Seems like a good solution to me. You can download Cheat Engine here and if you do the tutorial you should find it pretty easy to identify the memory address where the number of crystals is being stored and set up a hotkey to change it. If you can't, I'll walk you through it.

Quote:
In any case, I have to thank you a lot for your help.


No problem.

Quote:
And by the way, but you certainly have figured it out already, the game was done using Game Maker 7 (http://wiki.yoyogames.com/index.php/Old_Game_Maker_Versions), and it's source file is available on the author forum : http://mattmakesgames.com/forum/index.php?board=7.0. It was just to mention it : this information probably won't be helpful.


Won't be helpful to me because I'm not a programmer so I won't understand it. Tongue Might be helpful to someone else, though.
Edit history:
Arcanod: 2010-07-09 12:05:21 pm
Quote:
I'll check stuff with him whenever I next spot him on IRC, though.


Alright, let us know when you're done, then ;). That reminds me that I have to contact him as well to submit my speedrun of Jumper and two other little games. :]

Quote:
You can download Cheat Engine here and if you do the tutorial you should find it pretty easy to identify the memory address where the number of crystals is being stored and set up a hotkey to change it. If you can't, I'll walk you through it.


Well... I followed the first five steps of the tutorial (the next ones are a bit tough !), and it seems to be insufficient to identify the memory address in question. I find the good number (of crystals) but there are a lot of addresses and I can't reduce them. Did you try and manage to do it ? If so, yes, your help would be appreciated.
Okay, I don't have the game or cheat engine on me right now so this is from memory:

First of all make sure you change the type of variable you're searching for to the 'any' option, because I can't remember what type it is.

Then do an exact value search for the number of crystals you have. Then pick up some more crystals to change the value, and do a second exact value search for the new number. This will probably bring you down to two variables; if not, pick up more and do a third search, which almost certainly will.

Once you've isolated two variables (you should observe both of them changing to match your number of crystals as you pick more crystals up), try both of them to figure out which one, when changed, actually changes the number of crystals you have. (The other one tracks the number actually shown on-screen; if you change it down, it will immediately change back up to the actual number of crystals you have. If you change it up, you'll see it counting down in-game until it reaches the number of crystals you have, the same way it does when you buy stuff.) Then set up a hotkey to change this variable (the other variable will change to match it).
Waiting hurts my soul...
Just do a SS run?
@ExplodingCabbage : Thank you again, it works fine now. The hotkey is really handy.

Quote from ZenicReverie:
Just do a SS run?


Perhaps, but it's secondary. I'm primarily focused on a segmented run in Insanity difficulty, which I somehow consider to be the ultimate challenge for 2d plateformer games. I'm not sure if I'll be able to beat the final boss, though. -_-'
Mike okayed the use of Cheat Engine (as long as it's only used for correctly setting your number of crystals, obviously).
Quote from ExplodingCabbage:
Mike okayed the use of Cheat Engine (as long as it's only used for correctly setting your number of crystals, obviously).


Okay, so I'll take a deep breath and begin the run !
Go play spacechem !
Quote:
If we can find where the game saves your time and crystals (may be a file, may be a registry entry) then we'll be able to back that up. No idea how to find it, though.

One way to find what modification it makes on the hard drive is to install sandboxie.(http://www.sandboxie.com/)
[tt]Sandboxie runs your programs in an isolated space which prevents them from making permanent changes to other programs and data in your computer. [/tt]
You then run the game with it, do what you have to do then quit. All file modification/creation will be listed in the sandbox folder, if there is a savefile it will be listed there.(the sandbox will have the same filetree as the one on your computer for the affected files).

Sanboxie also use an alternate registry and saves the modification in a special hive located in the sandbox "reghive" folder. I use "Windows Registry Recovery" to read the file (http://www.mitec.cz/wrr.html) (after opening the file, click on raw data on the left).
You can now see all the registry modifications (in a folder tree view), there will be plenty because windows loves to write things in it.

Of course all this applies only if the game is for windows  Wink
Yep, this game is for Windows. Thanks for the link, it should be helpful.

BTW Arcanod, have you started the run yet? I haven't seen a topic in the PC board.
Until now, I have essentially worked on the planning : creation of a giant map made of the screenshots of the game, counting of the cristals left by the bosses... Currently, the content of the first 4 segments has definitively been decided (I think no error is possible on these ones).
I made a few attempts for the first segment, but none has been successful for the moment (the first segment is long and extremely difficult at full speed).

By the way, Fraps has a strange behavior. It records the size of the screen instead of just the game window (which requires to resize the video afterwards), aligns the game window in the upper left corner, and displays under some circumstances (loading a game file / picking heart or ability) the red number of the framerate. Nothing serious, mind you, but I still wonder whether I should post or not a sample video showing these anomalies.

I will create a topic in the PC section of the forum when the first segment is done, and edit the post for each future segment (with the corresponding video uploaded on YouTube, so that members can comment the progression).


@zoonel : thank you for your help. However I will use the previously mentionned solution, which is handy and functional. What you said is good to know, though.
Go play spacechem !
hi,
Its a great game, and hard Smiley (i played it on normal, now that's what normal difficulty should be)
anyway now that i know the game i've found another solution for the saving problem than the one with cheatengine.  8)

The solution is to switch between readonly and not readonly for the savefile (UntitledSave1, 2, 3). (an autoit script is in attachment, dont know if it will be allowed, though)

to use the readonly trick you must first set a savefile to readonly, then continue the corresponding game and then directly quit to the menu. An error screen will be prompted, answer 'abort'. You can now freely switch the readonly attrib to on/off and still beeing able to die or quit and restart from last save without weird bugs or errors. Do this each time you launch the game executable.
If you dont do this first and try to save at a savepoint while the savefile is in readonly then not only will you see the error screen but answering abort will either kill the game or introduce bugs (invisible egg).

Of course if the file is in readonly, nothing will be saved, and if you switch to not readonly then it will act like normal.
What you can do is run in readonly, and restart from last save (or die and hit continue) till you do a successfull run and quickly switch to not readonly before saving.

I've made an autoit script to assign hotkeys for switching between readonly and not readonly. Lauch it first to create the config file (a .ini file), modify the AUSreadmode.ini to set the gamepath, hotkeys, etc... Then launch the script a second time.
Files are in attachment (you dont need the source files but if you wanna know what i did you can).
zoonel, clearly my understanding of when stuff gets saved to the save files was wrong since if I was right, it would be impossible for your solution to work. Yet it does. Tongue I'm a bit confused because we established that the saving of time and crystals isn't going on continuously (because if you kill the game from Task Manager, when you next load it they'll revert to their previous values), so I guess that what must be going on (when playing the game normally) is that when you Retry From Last Save, the game first saves your Time and Crystals, then immediately loads them from the same file. That's a bit odd but I don't see any other explanation. Do you agree or have I missed something?

One thing worth noting: though using your method makes the whole numbers of seconds on the timer reset to their saved values when you reload, it doesn't change the fractions of a second. So even with your method, the in-game timer can't be used, which is a pity.

While your solution is certainly functional and I do prefer the fact that it works just by making save files read-only (which feels more legitimate somehow than using memory modification), I think the Cheat Engine solution is still fractionally better because your method introduces an extra thing for the runner to think about at the end of the segment (toggling read-only off) which could be a distraction if there's something complicated and difficult immediately before the save point. My way has a button press on every attempt instead of just the successful one, but the button press is in the menu, not during the segment itself. Of course it's up to the runner which he prefers and he now has both choices.
Go play spacechem !
Quote from ExplodingCabbage:
I'm a bit confused because we established that the saving of time and crystals isn't going on continuously (because if you kill the game from Task Manager, when you next load it they'll revert to their previous values), so I guess that what must be going on (when playing the game normally) is that when you Retry From Last Save, the game first saves your Time and Crystals, then immediately loads them from the same file. That's a bit odd but I don't see any other explanation. Do you agree or have I missed something?

I agree, as you i dont see any other explanations.
The game is saved when :
  you quit the game
  you quit to menu
  you quit to last save point
  you die
  you save at a savepoint

And each time you retry or continue it'll reload the save.

Quote:
Of course it's up to the runner which he prefers and he now has both choices

Yep, now he has the choice :p
To praise for my church, my method only involve one button press versus a lot, usually there is nothing hard 'just' before a save point, and you can use a save point to replenish your life without saving if you want to Smiley
But i must admit i didnt try the cheatengine method which must be good if the game saves only the gems and the time. The only advantage i see for the readonly method is to use savepoints without saving and if other things are saved.
Edit history:
JosJuice: 2010-07-29 05:14:31 am
I looked a bit at the source code that was posted earlier (it's a rather complex game!), and it seems like there's a part of the code that loads the save file, replaces the values of crystals, playtime, deaths and damage (total damage taken, not current health), and then saves it back to the file. Afterwards, another part of the code either loads the file again (Retry From Last Save), restarts the game in order to open the menu, or exits the game. I made a simple hack that makes the game not run the script that updates crystals, time, deaths and damage in the save file (while still loading the previous file if Retry From Last Save is selected). The fixes related to saving work fine, but the font is very odd-looking for some reason (maybe it wasn't installed on my computer when compiling). I'll post the hack when I get that to work correctly.

EDIT: I can't seem to find the font or even the name of the font... If someone knows about it, please let me know and I'll try to compile a better version. For now, I'll post it in not so beautiful Arial which is also too large for some unknown reason and probably not usable for an SDA speedrun.
[link deleted, updated version is available in my next post]
This is the whole .exe file (7.14 MB). You still need the "BGs" folder from the actual game in order to play.
Go play spacechem !
check here :
http://mattmakesgames.com/forum/index.php?topic=755.msg26885#msg26885
Thank you. I've updated the exe.
http://www.mediafire.com/download.php?ly5wy9gwk4xqm55
Quote from JosJuice:


Awesome, this makes my Cheat Engine solution completely redundant, although zoonel's method is still potentially useful in the unlikely but possible situation that the runner wants to use a save point to replenish health without saving.

What would be extra awesome, if it's possible, is if you could change the 'Retry From Last Save' code to function in the same way as quitting to the menu and then loading a save, since that has the effect of resetting the 'fractions of a second' value in the game's memory to 0 (see my discussion of why the in-game timer is unusable earlier in the thread if you don't know what I'm talking about - based upon crude testing just now I think the problem persists with your hacked exe). That would make the in-game timer usable, which would be a good thing for multiple reasons.