Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

R'n'D is always evolving. Check here to see if a new version is out.

Moderators: Flumminator, Zomis

User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

The second release candidate of R'n'D 4.3.0.0 is available now:

https://www.artsoft.org/RELEASES/linux/ ... rc2.tar.gz (Linux)
https://www.artsoft.org/RELEASES/mac/ro ... .0-rc2.dmg (Mac)
https://www.artsoft.org/RELEASES/window ... -win32.zip (Windows / 32 bit)
https://www.artsoft.org/RELEASES/window ... -win64.zip (Windows / 64 bit)
https://www.artsoft.org/RELEASES/androi ... .0-rc2.apk (Android)

Or in a web browser:

https://staging.artsoft.org/rocksndiamonds/play

Main changes since RC1:

- fixed error handling when doing HTTP requests
- fixed performance problem when starting R'n'D
- fixed player ID handling when using multiple users
- moved new score server setup values to separate setup file

The last change prevents accidently wiping out the player ID when saving setup using older versions.

Please let me know if this improved version works fine for you! :-)
BryanFRitt
Posts: 219
Joined: Mon Nov 13, 2017 4:16 pm

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by BryanFRitt »

writing down comments as I try out this new version of R'n'D, sometimes coming back and typing more details down, or typing it better, etc...

'yes' 'no' 'no, quit nagging me'
default should be 'no' (aka don't do it, but still nag next time)

1st time trying to submit scores, it ends with this error...
`cat ./stderr.txt` shows
[WARN] wrong size (5) of chunk 'INFO' in tape file '/home/bryan/.rocksndiamonds/tapes/classic_boulderdash/048.tape'
[FATAL] cannot upload score tape to score server
[FATAL] aborting

should only submit scores that have been changed since they've been uploaded. (does it?, didn't test)

"- uploading score tape to score server - uploaded."

should this be hi score(s) AND tape(s)? are these verified as successful attempts?

the full screen / un full screen shortcut doesn't work while tapes are being submitted.

got a bunch of
[WARN] cannot read level '.. .level' -- using empty level

ends with...
...tapes uploaded.
===============================================================================
[WARN] cannot read level './levels/Tutorials/rnd_tutorial_niko_boehm/040.level' -- using empty level
[WARN] cannot write setup file '/home/bryan/.rocksndiamonds/levelsetup/rnd_tutorial_niko_boehm/levelsetup.conf'

--

looking forward to trying this out...

It didn't keep the last level played from the older version

ALL LEVELS ARE ALL 100% DIRT :(
exited
started again...
it looks like it's resubmitting everything again
looks like submitting again ends the same way as it did last time
ALL LEVELS ARE STILL 100% DIRT
exiting and restarting, this time selecting 'No' to (re)submitting, now the levels are back, and it's not prompting me to resubmit at startup

looks like the number reported as submitted is way lower than the number of tapes I have

looks like Hall of Fame has times only, what happened to scores?, ok... maybe it was just those levels?

is there any way to view other's tapes?

I noticed for some there are several of a persons hi scores listed, perhaps it should only show the best for each player
BD2K3, level 42, has like 18 high scores for 'BRYAN' (EDIT: does it only show multiple ones for the current player?)

is there a way to turn off/on just the hall of fame music?

it would be nice if I could easily see which levels have been beaten by others, but not by me (new color scheme?) (also I've beaten that no one else has, levels that I and at least one other have beaten, levels that no one has beaten; 2^2=4; 10^10=100 binary)

what happens to these scores and new scores, if I change my name?, or if I've changed my name in an earlier version? case insensitive?

what about two or more people having the same name?

when does it get others scores?
seems to be when I look at scores it keeps it from there
what If I want to go offline and still see scores of levels I haven't looked at scores for?
do the scores get updated, if I look at it again?

-

Anyway, it's definitely nice seeing others scores on levels :)
Life is partially trying to strike a balance between generating new things/ideas, and making sure they are good/organized. These extremes can be said to between gibberish mess and nothing said/done.
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

Hi BryanFRitt, thanks for your detailed report of your test of RC2! :-)

It already helped me improving the score/tape upload error handling!
'yes' 'no' 'no, quit nagging me'
default should be 'no' (aka don't do it, but still nag next time)
Not sure about this one ... do you mean the "upload tapes to server" dialog at the very first start of RC2?

Well, R'n'D only supports "yes/no" or "confirm" dialogs. And there's no default -- "Return" is "yes", "Escape" is "no".
1st time trying to submit scores, it ends with this error...
`cat ./stderr.txt` shows
[WARN] wrong size (5) of chunk 'INFO' in tape file '/home/bryan/.rocksndiamonds/tapes/classic_boulderdash/048.tape'
[FATAL] cannot upload score tape to score server
[FATAL] aborting
Very strange! Any more info in "stdout.txt"?

At least, the "[WARN]" warning message about that tape file should not have caused this. Nevertheless, being unable to upload a score tape should not bring R'n'D to a fatal halt. I've fixed this, so it now shows a message dialog in such cases and continues.
should only submit scores that have been changed since they've been uploaded. (does it?, didn't test)
Offering to upload score tapes at program start happens only once; when done, it won't be offered again, and once the upload was successful, it won't be available anymore from the setup menu. Any further uploads will be done after a level was successfully solved then.
"- uploading score tape to score server - uploaded."
This looks like at least one score tape was successfully uploaded to the server (and I can indeed see a lot of successful uploads on the score server for a user "bryan" between 2021-10-08 and 2021-10-10). So I really wonder what might have caused that fatal error. :-o (I also cannot see any error messages on the server side.)
should this be hi score(s) AND tape(s)? are these verified as successful attempts?
After solving a level, score and tape is submitted, while initially only tapes are submitted (as there is no link between local tapes and score entries, unfortunately). All scores and tapes are verified on the score server.
the full screen / un full screen shortcut doesn't work while tapes are being submitted.
That's right -- during tape upload, no events are processed.
got a bunch of
[WARN] cannot read level '.. .level' -- using empty level
That's expected behaviour for all level sets with missing levels (like many sets from the EMC collection).
[WARN] cannot read level './levels/Tutorials/rnd_tutorial_niko_boehm/040.level' -- using empty level
This is strange, as this level set *has* a level 040. Is this file missing in this level set's directory, maybe?
[WARN] cannot write setup file '/home/bryan/.rocksndiamonds/levelsetup/rnd_tutorial_niko_boehm/levelsetup.conf'
I have no idea why this warning message was issued. :-|
It didn't keep the last level played from the older version
Usually it does -- I assume this was due to the fallback to the first valid level set after the "fatal error" (which is "Niko Böhm's Tutorial" in many cases).

As failed uploads are handled better now, this should not happen again.
ALL LEVELS ARE ALL 100% DIRT 
exited
started again...
it looks like it's resubmitting everything again
looks like submitting again ends the same way as it did last time
ALL LEVELS ARE STILL 100% DIRT
exiting and restarting, this time selecting 'No' to (re)submitting, now the levels are back, and it's not prompting me to resubmit at startup
Again, very strage -- was this *after* restarting R'n'D after the "fatal error" (which should end the program)?

I hope this will also not happen anymore now.
looks like the number reported as submitted is way lower than the number of tapes I have
Does this mean that you managed to successfully finish the uploading process somwhow?

Again, I wonder what might have caused that fatal error, as many tapes seem to be uploaded.
looks like Hall of Fame has times only, what happened to scores?, ok... maybe it was just those levels?
Some level sets (mainly Supaplex) do not have scores at all -- these are not "faked" for the Hall of Fame anymore in 4.3.0.0. So you now have level sets with scores, and level sets with times (where lower times are better).

Future versions of R'n'D may contain a score details page which also shows the time for entries which have a score.
is there any way to view other's tapes?
Not yet. :-) (In fact, I'm planning to add this feature for one of the next versions.)
I noticed for some there are several of a persons hi scores listed, perhaps it should only show the best for each player
BD2K3, level 42, has like 18 high scores for 'BRYAN' (EDIT: does it only show multiple ones for the current player?)
It only shows the best score for each player for scores on the server, but it will always show all scores for your local players. Maybe I should add an option in the setup menu to also only show the best local players scores.
is there a way to turn off/on just the hall of fame music?
No.
it would be nice if I could easily see which levels have been beaten by others, but not by me (new color scheme?) (also I've beaten that no one else has, levels that I and at least one other have beaten, levels that no one has beaten; 2^2=4; 10^10=100 binary)
Yes, this could be interesting! Any suggestion how this could look like in the game?
what happens to these scores and new scores, if I change my name?, or if I've changed my name in an earlier version? case insensitive?

what about two or more people having the same name?
All existing tapes are uploaded with your current player name (as the tape does not contain the player name, unfortunately). All new tapes are uploaded also with your current player name. If you change your name locally in the game (and you are not offline), it will also be changed on the server, for all players accessing the score server. (If you were offline when you changed your player name, just change it again when your back online and it will also be changed on the server this time.)

If somebody else should have chosen the same name as you have, their name won't be changed (and vice versa), as every player also has an anonymous, but unique ID on the server.
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by filbo »

> After solving a level, score and tape is submitted, while initially only tapes are submitted (as there is no link between local tapes and score entries, unfortunately). All scores and tapes are verified on the score server.

If the same level is solved twice, are both tapes & scores uploaded?

I often rerun a level to intentionally end it a certain way (like, blowing up the exit by carefully exiting at the exact moment a bug or spaceship is touching it). These crafted tapes tend to have a slightly lower score since the time factor is usually slightly worse. But they represent my preferred 'solution', and the one tape which ends up saved locally. Which one ends up saved remotely? Any way I can control it?
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

If the same level is solved twice, are both tapes & scores uploaded?
Yes!
But they represent my preferred 'solution', and the one tape which ends up saved locally. Which one ends up saved remotely? Any way I can control it?
Here's how it works from 4.3.0.0 on: Whenever you solve a level, the corresponding score and tape are send to the score server, to be verified there, and to be stored there (even if verification failed). When somebody enters the Hall of Fame for that level, the score server is asked to return the 100 best scores for that level, but only returns the best level for each player, depending on the score. This means that people would get your "best" score in your example, but not the score from your preferred solution tape (as it has a slightly lower score here). Future versions might get an option to get the best 100 scores from *all* tapes (which may theoretically be from only one single player who played a level 100 times, each one with a higher score than anybody else).

On your own computer, the best 100 scores and all tapes for solved levels are stored. It works like this: The best 100 scores are stored in "<scores>/<levelset>/<nr>.score", while all corresponding tapes are stored in "<scores>/<levelset>/<nr>/<yyyymmdd-hhmmss-namehash>.tape". In addition, a single tape is stored in "<tapes>/<levelset>/<nr>.tape" -- this is the "personal solution tape" that was always stored after asking if you want to overwrite an existing one (if one already exists). So this would be your "preferred" solution tape in your example.

If you solve a level more than 100 times, the lowest score will be removed from the score file, but the corresponding tape will still be stored in your file system. However, a future version of R'n'D that might offer playing tapes from the Hall of Fame won't be able to see or access this tape file anymore.

Currently, the default behavior of showing scores in the Hall of Fame is to merge all existing "best of player" scores from the server for the current level with *all* of your own, locally stored scores. There is an option to only show local scores (which would result in the behavior before version 4.3.0.0). It may make sense to add another option to only display scores from the server, and totally skip your own, local scores. Other combinations may be possible, and may make sense. Not sure about that.

What's currently not possible: Telling the server that a certain score tape is your "preferred" score tape, in a way that this would be the tape to return to other players (despite having a tape with a higher score on the server).
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by filbo »

Hmmm, I'm not real happy with that. That means in a typical case for me, it's going to upload 2 tapes: one with a higher score, that I never wanted to save in the first place, and a 2nd one with my preferred ending and a slightly lower score. These will be nearly identical tapes with only the last bit spliced differently. (Not every level, of course, but somewhere between 10 & 40% of levels, at a guess...)

I'd really appreciate if there was some sort of preferred tape control. In simplest form, if the server simply reflected my most recent saved solution tape, rather than all of my solution tapes, that would work for me.

=====

Meanwhile, I just looked at the local storage system for saved tapes and I'm not too happy with that either. There's a directory for each levelset -- good. There's a single .score file for each level within a levelset -- good. Then there's a subdirectory of tapes for each level -- not so good. On my filesystem (ext4), directories are 4KiB even if they only have one file inside. The files within are more like 1K each, so this is a 5:1 bloating of the storage. On Windows systems I think directories can be up to 32KiB or more, depending on the blocking. I would rather have a single directory with N .score files and N*M .tape files; this:

Code: Select all

-rw-r--r-- 1  173 Oct  9 01:01 scores/emc_haunted_mine_3/022.score
-rw-r--r-- 1 1457 Oct  9 01:01 scores/emc_haunted_mine_3/022-20211009-010133-59e21de2.tape
-rw-r--r-- 1 1465 Oct  9 01:01 scores/emc_haunted_mine_3/022-20211009-010143-4623f2c3.tape
rather than this:

Code: Select all

-rw-r--r-- 1  173 Oct  9 01:01 scores/emc_haunted_mine_3/022.score
drwxr-xr-x 2 4096 Oct  9 01:01 scores/emc_haunted_mine_3/022
-rw-r--r-- 1 1457 Oct  9 01:01 scores/emc_haunted_mine_3/022/20211009-010133-59e21de2.tape
-rw-r--r-- 1 1465 Oct  9 01:01 scores/emc_haunted_mine_3/022/20211009-010143-4623f2c3.tape
This results in a levelset directory with more entries than the current way, but only by the count of extra runs of each level. i.e. if each level was solved exactly once, the directory would have the same number of entries as before (tape subdirectories replaced by a single tape each).

The directory can, of course, grow without bound if the player repeatedly plays the same levels; but this is also true in the current setup -- they just have to focus in on one single level. They are the same order of infinity. In either case, it might be good to do some sort of local management like retain only the 10 'best' (by whatever criteria, possibly even 'most recent') tapes per level. Then the directory can't get bigger than 11x #levels, which shouldn't bother any sort of vaguely modern filesystem.
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by filbo »

> to be stored there (even if verification failed)

That seems like a potentially interesting signal. Do you tell the user about it? Report it to you as a potential bug to investigate?
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

I'd really appreciate if there was some sort of preferred tape control. In simplest form, if the server simply reflected my most recent saved solution tape, rather than all of my solution tapes, that would work for me.
I have thought about this for quite some time now, and I think I have found a solution that could work. It's based on the fact, that there is one tape for each score entry that is sent to the server (saved locally in the "scores" directory), but only one single tape that the player decided to keep even if a level was solved several times (saved locally in the "tapes" directory).

So the player indeed already makes a decision which of the played solutions is his or her "preferred" solution, and this decision can also be submitted to the server, by just adding a flag "tape was saved or not" when submitting score and tape.

With this information available on the score server, the following possibilities of selecting high scores can be used:

- showing the "highest" score for each player (the way it is done now)
- showing the "preferred" or "player selected" score (by using the latest score with "tape saved" flag)
- showing the "latest" score for each player (just show the last submitted score, to get the most recent entries)

A new setup option would then make it possible to choose which scores are selected and shown in the Hall of Fame.

In addition, it would be possible to show scores and tapes (if available) for all three selection schemes on a player score details page, to see scores and times and be able to replay tapes for all up to three different score entries.

=====
Then there's a subdirectory of tapes for each level -- not so good. On my filesystem (ext4), directories are 4KiB even if they only have one file inside. The files within are more like 1K each, so this is a 5:1 bloating of the storage.
I have thought about this issue even longer, and did some additional research. As far as I could find out, the additional size for a directory (empty or not) for the following systems is like this:

- Linux / ext4: one inode, which is usually 4096 bytes (as you already wrote)
- Windows / FAT32: apparently this is as large as 32 KiB
- Windows / NTFS: apparently this is 4096 bytes
- Mac (must be HFS+ or APFS, not sure): wasn't able to finally find out for sure, but probably not less than around 4 KiB

As tapes are less than 4 K in many cases, this would indeed be a size in the same order of magnitude as the directory they live in. Together with the assumption that 99 % of players will most probably play and solve 99 % of levels only once, this would indeed mean than we will have a directory with a single file in it in most cases (and a file taking up less space in the file system than the directory itself, in many cases).

All put together, your suggestion is indeed quite reasonable. And I have changed it now, just like you have suggested it (as this wouldn't be that easy to change once the new version is out, at least not without either adding compatibility code, or being unable to access already existing score tapes anymore).

I really struggled to make this decision, as I really think that the previous file system layout was more clean (and was the same as the one that is used on the server, and the one that will be used in the local score cache directory when later supporting download and replay of score tapes from the server-- which obviously is not the same, as in both these cases far more than one or two tape files will be stored in these level number sub-directories). And even with the previous file system layout, it would still consume only a few megabytes for thousands of tape files, which is nothing on today's terabyte hard disks. But, on the other hand, I also heavily dislike bloat and mindlessly wasting system resources, so I can't help but agree here. :-)
In either case, it might be good to do some sort of local management like retain only the 10 'best' (by whatever criteria, possibly even 'most recent') tapes per level.
I think that this won't be needed in most cases, as there won't be that much score tapes for a single level (at least for most level sets and most levels). At least those tapes that are related to scores which "expired" from the score file (due to being at position 101 when a new score enters the score table) should be deleted, as they would then be not "logically accessible" anymore from the local score table for that level either.

=====
> to be stored there (even if verification failed)

That seems like a potentially interesting signal. Do you tell the user about it? Report it to you as a potential bug to investigate?
Yes, it is (an interesting signal). And no, I cannot tell the user about it, as the verification process does not take place in realtime (else waiting for verification for a tape for "zelda2" could easily take half an hour), but is run every five minutes now by a cron job.

But yes, that verification script sends a mail report every day to myself, so I can see what might have been the cause for failed verifications (which is a missing level set on the server in most cases, so I can add that set and re-run the verification process for the affected score tapes).
BryanFRitt
Posts: 219
Joined: Mon Nov 13, 2017 4:16 pm

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by BryanFRitt »

'yes' 'no' 'no, quit nagging me'
default should be 'no' (aka don't do it, but still nag next time)
Not sure about this one ... do you mean the "upload tapes to server" dialog at the very first start of RC2?
Yep, I was referring to the 'upload tapes to sever' dialog.
Well, R'n'D only supports "yes/no" or "confirm" dialogs. And there's no default -- "Return" is "yes", "Escape" is "no".
I was calling whatever pressing the 'enter' key does as default here, although others could call what happens when 'esc' the default. Perhaps the word default shouldn't hove been used here, and just said 'enter' key, or 'esc' key.
Very strange! Any more info in "stdout.txt"?
I suppose I could have backed it up, but I didn't. ~/.rocksndiamonds/stdout.txt is blank now, don't remember if there was more in this file at that time.
[WARN] cannot read level './levels/Tutorials/rnd_tutorial_niko_boehm/040.level' -- using empty level
This is strange, as this level set *has* a level 040. Is this file missing in this level set's directory, maybe?
Looks like I don't even have a '~/.rocksndiamonds/levels/Tutorials' folder, but I do see 'TUTORIALS' in the levelset menus
ALL LEVELS ARE ALL 100% DIRT
exited
started again...
it looks like it's resubmitting everything again
looks like submitting again ends the same way as it did last time
ALL LEVELS ARE STILL 100% DIRT
exiting and restarting, this time selecting 'No' to (re)submitting, now the levels are back, and it's not prompting me to resubmit at startup
Again, very strage -- was this *after* restarting R'n'D after the "fatal error" (which should end the program)?
This hasn't happened since I selected 'no' to (re)submitting tapes.
looks like the number reported as submitted is way lower than the number of tapes I have
Does this mean that you managed to successfully finish the uploading process somwhow?
It only crashed the 1st time I ran the RC, after that, no more crashes. The two times I chose the submit after this said something like 1k submitted when I have like 9k tapes.

In Linux bash you can find how many tapes R'n'D has for you with something like:

Code: Select all

/usr/bin/find ~/.rocksndiamonds/tapes -name '[0-9][0-9][0-9].tape' | /usr/bin/wc --lines
or to include tapes you may have manually renamed, but kept the .tape extension...

Code: Select all

/usr/bin/find ~/.rocksndiamonds/tapes -name '*.tape' | /usr/bin/wc --lines
is there a way to turn off/on just the hall of fame music?
No.
Ok... I'll make this a feature request. :)
it would be nice if I could easily see which levels have been beaten by others, but not by me (new color scheme?) (also I've beaten that no one else has, levels that I and at least one other have beaten, levels that no one has beaten; 2^2=4; 10^10=100 binary)
Yes, this could be interesting! Any suggestion how this could look like in the game?
I was think in the pick level screen the level names would be colored based on completion status. like maybe
'green' for you, and others have beaten the level,
'orange' for others have beaten the level but not you,
'purple' for you, and no others have beaten the level,
'red' for no one has beaten the level.
'yellow' for you've attempted it, but not solved it, while others have solved it
'dark yellow' for you've attempted it, but not solved it, while no others have solved it either
*by beaten the level I'm referring to only submitted/local as there's no way to know non-submitted/non-local beaten status of others.
*by 'you' it the above, I mean the player
[edit: added in colors for levels attempted, but not solved]

UPDATE: I wrote this after RC3 (, and RC4?) came out, but I haven't tried those yet.
Life is partially trying to strike a balance between generating new things/ideas, and making sure they are good/organized. These extremes can be said to between gibberish mess and nothing said/done.
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

I suppose I could have backed it up, but I didn't. ~/.rocksndiamonds/stdout.txt is blank now, don't remember if there was more in this file at that time.
Could you please repeat the uploading process, as described in the announcement for RC3, but with RC2 (which still caused the program to exit, instead of recovering from the error as RC3 does)? And could you then please send me the resulting files "stdout.txt" and "stderr.txt" from your ~/.rocksndiamonds directory?

When done, could you please repeat it all with RC3 (or RC4, does not matter) and send me the mentioned files again?

That would be most helpful to try to find out what's going on here.
[WARN] cannot read level './levels/Tutorials/rnd_tutorial_niko_boehm/040.level' -- using empty level
This is strange, as this level set *has* a level 040. Is this file missing in this level set's directory, maybe?
Looks like I don't even have a '~/.rocksndiamonds/levels/Tutorials' folder, but I do see 'TUTORIALS' in the levelset menus
No, the Tutorials level sets are in the R'n'D program folder, not in your personal R'n'D data folder.

Could you please check if level 040 of that level set exists in the directory "levels/Tutorials/rnd_tutorial_niko_boehm" of the R'n'D program folder of the instance of R'n'D you used when you got that error message? It looks like this level file is missing, but I really cannot imagine that this is really the case, so there might be somesthing else going on. But answering that question could help with the debugging process.
The two times I chose the submit after this said something like 1k submitted when I have like 9k tapes.
Yes, you submitted 1005 tape files in each run of the upload process, according to the API database.

But apparently you have a lot more tapes that were not uploaded. OK, what is R'n'D doing exactly here? It works like this:

When starting the batch upload process by selecting "yes" in the dialog, R'n'D processes all level sets it has read on startup. For each level set, it checks for each level if there is a corresponding tape in your personal tapes directory. If it can find it, it tries to upload it to the server and gives a success (or failure) message. If it cannot find a tape, it prints a warning.

Therefore, after the upload process was finished (and you confirmed the dialog that tells you how many tapes it has uploaded), you have two files "stdout.txt" and "stderr.txt" in your personal R'n'D directory. These files contain a log of the whole process. You can see there for which level sets R'n'D attempted to upload a tape file, and if it succeeded or not, and if not, why not.

So, if you have over 9000 tapes, but only around 1000 tapes were uploaded, there must be a reason for this. That reason should be visible from the log files (hopefully). One possible reason might be that you have lots of tapes for levels that are currently not available to R'n'D (because you might have removed that set from your personal levels directory).

So you can do the following: Just find at least one single tape that was not uploaded (according to the log files), and check if the corresponding level set was part of the uploading process, according to the log files.

More on the color scheme idea later (which probably is worth it's own post/thread in the "new ideas" section, I think).
BryanFRitt
Posts: 219
Joined: Mon Nov 13, 2017 4:16 pm

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by BryanFRitt »

I suppose I could have backed it up, but I didn't. ~/.rocksndiamonds/stdout.txt is blank now, don't remember if there was more in this file at that time.
Could you please repeat the uploading process, as described in the announcement for RC3, but with RC2 (which still caused the program to exit, instead of recovering from the error as RC3 does)? And could you then please send me the resulting files "stdout.txt" and "stderr.txt" from your ~/.rocksndiamonds directory?
Did this edit

Code: Select all

test.ask_for_uploading_tapes:           on
test.provide_uploading_tapes:           on
went to rocksndiamonds-4.3.0.0-rc2 compile directory and ran ./rocksndiamonds from there
I let it submit tapes, and it said the same number tapes submitted as it always has, but this time I had solved one more level that wasn't solved before, (played it using rc4?)
stderr.txt is 1 108 020 bytes
stdout.txt is 2 427 806 bytes
These two are attached.
There wasn't a crash, brief glance it looked like levels were an "empty default level", at this point. (I bet when I say 'no' to resubmitting tapes, these will be back to normal)
exited R'n'D then went and found those files...
No, the Tutorials level sets are in the R'n'D program folder, not in your personal R'n'D data folder.

Could you please check if level 040 of that level set exists in the directory "levels/Tutorials/rnd_tutorial_niko_boehm" of the R'n'D program folder of the instance of R'n'D you used when you got that error message? It looks like this level file is missing, but I really cannot imagine that this is really the case, so there might be somesthing else going on. But answering that question could help with the debugging process.
It's there with a size of 646 Bytes.
So you can do the following: Just find at least one single tape that was not uploaded (according to the log files), and check if the corresponding level set was part of the uploading process, according to the log files.
not sure what to do/how to do this
I do see stuff like:
...
Tape 019: (no level found)
Tape 020: (no tape found)
...
In stdout.txt after line 2535 it looks like it quit saying
- uploading score tape to score server - uploaded.
and started saying
Tape NNN: (no level found)
for everything
Attachments
stdout.txt
(2.32 MiB) Downloaded 224 times
stderr.txt
(1.06 MiB) Downloaded 229 times
Last edited by BryanFRitt on Tue Oct 19, 2021 2:43 am, edited 1 time in total.
Life is partially trying to strike a balance between generating new things/ideas, and making sure they are good/organized. These extremes can be said to between gibberish mess and nothing said/done.
BryanFRitt
Posts: 219
Joined: Mon Nov 13, 2017 4:16 pm

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by BryanFRitt »

In stdout.txt after line 2535 it looks like it quit saying
- uploading score tape to score server - uploaded.
and started saying
Tape NNN: (no level found)
for everything
This stops off at rnd_alan_bond 002.tape being the last "- uploading score tape to score server - uploaded." one.
There are tapes 001.tape to 030.tape [inclusive inclusive] in
~/.rocksndiamonds/tapes/rnd_alan_bond/

Code: Select all

/usr/bin/find . -type f -printf "%12s -- %p\n" | /usr/bin/sort -k3
366 -- ./001.tape
1804 -- ./002.tape
1886 -- ./003.tape
1086 -- ./004.tape
1245 -- ./005.tape
...
in ~/.rocksndiamonds/levels/Contributions 1995 - 2006/Contributions_2002/rnd_alan_bond there are 'graphics' and 'tapes' subdirectories
files have "-r--r--r--" permissions with $USER as owner and group (me)

Code: Select all

/usr/bin/find . -printf "%12s -- %p\n" | /usr/bin/sort -k3
4096 -- .
1388 -- ./001.level
2244 -- ./002.level
1396 -- ./003.level
2244 -- ./004.level
---
4096 -- ./graphics
42530 -- ./graphics/Boulderdash.pcx
14564 -- ./graphics/graphicsinfo.conf
4970 -- ./graphics/RocksHeroesBD.pcx
219 -- ./levelinfo.conf
4096 -- ./tapes
254 -- ./tapes/001.tape
1064 -- ./tapes/002.tape
1028 -- ./tapes/003.tape
514 -- ./tapes/004.tape
...
I've solved all 30 of these.
at least levels 001-003 tapes playback to the end, just now redid 004, 006, 014, 026 because tapes didn't finish and/or are bad. (rest seem ok?)
HALL OF FAME does show another user as having beaten these levels.
Last edited by BryanFRitt on Mon Oct 18, 2021 8:56 pm, edited 1 time in total.
Life is partially trying to strike a balance between generating new things/ideas, and making sure they are good/organized. These extremes can be said to between gibberish mess and nothing said/done.
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by filbo »

1005 uploads then 'file not found' type errors sounds like a file descriptor leak & a 1024 descriptor limit...
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

1005 uploads then 'file not found' type errors sounds like a file descriptor leak & a 1024 descriptor limit...
I've thought about this the whole day long (while working in the house and garden), and I totally had no clue what might have happened here, as R'n'D apparently suddenly stopped being able to read level files that seem to be there.

R'n'D running out of file descriptors (for whatever reason) indeed seems to be the only plausible explanation! :shock:

I will both do some more checks, and check the affected code. Really can't imagine that R'n'D is leaking file descriptors, but then, a small bug would be enough (like failing and returning without closing the file just being processed)...
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Rocks'n'Diamonds 4.3.0.0 Release Candidate 2 released!

Post by Holger »

OK, just did a semi-heavy "upload all tapes" run for testing:

Code: Select all

SUMMARY: 610 tapes uploaded.
Well, not *that* many tapes, and well under 1024 (and I still have to check my current fd limits), but this is bad:

Code: Select all

$ ll /proc/6389/fd | wc -l
631
$ ll /proc/6389/fd | grep socket | wc -l
615
So apparently it's not files that are leaking, but sockets (which both count as "open files" here)! :shock:

And here's the limit in Linux (at least for my system):

Code: Select all

$ ulimit -a | grep "open files"
open files                      (-n) 1024
Seems that I have to check my HTTP crap again... :oops:

Thanks again, filbo, for pointing me into the right direction!
Post Reply