Thanks a lot for your suggestions, they really are a good source of inspiration! And I really like the ideas you had regarding upload of tapes that haven't been uploaded yet, and also regarding the problem of partially uploaded tapes! Especially regarding problems like this: If somebody has a huge number of tapes, say, something like 10'000 tapes (like in your case), but has a very slow and/or non-stable network connection, so tape upload regularly fails at around 5'000 tapes, even retrying upload would not help, as the upload process fails again after some time. Any kind of book keeping (to mark which tapes have already been uploaded) would solve this problem -- you could even upload tapes in 10 runs, always uploading a few more tapes, until all tapes have been uploaded. I really like your ideas that would make this possible, and most of them require only minor coding on the client side.
and what if I user completes levels offline? Scores would be forever only local only, unless they wait for the entire tape collection to upload again.
That's right indeed -- and currently they would either be lost forever (for the server), or you would have to manually trigger a complete re-upload (which most people just won't do, as they are not able to do the required editing of setup files).
<a> option by_datetime)
This would be a very good way to upload only newer tapes, and easy to implement.
The only disadvantage I can see is that this could not be used to complete an all-tapes upload that failed halfway.
<b>option submission_status_files)
...
<c>option not_submitted_flag_files)
Both ideas look fine for its purpose; I prefer variant (c) as it does not require modifying the tape itself, but uses a separate file to flag the "tape can be submitted" state. (In fact, it's a cool idea not to use a "this tape has been submitted" file, but a "please submit this tape" file, as it does not waste file storage after upload.)
Can something like <a> be done without even modifying R'n'D code?
Definitely yes! You can initially start with "upload *all* tapes", and upload only newer files later. What you can *not* do that way would be to continue a failed "all tapes" upload.
Can one just submit an individual level/tape without replaying it?
Definitely yes, again -- it's as easy as the following commands:
Code: Select all
# Upload all my tapes for a given level set:
$ ./rocksndiamonds --mytapes -e "autoupload rnd_tutorial_niko_boehm"
# Upload a single tape for a given level set:
$ ./rocksndiamonds --mytapes -e "autoupload rnd_tutorial_niko_boehm 001"
# Upload several tapes for a given level set:
$ ./rocksndiamonds --mytapes -e "autoupload rnd_tutorial_niko_boehm 001 002 003"
Just noticed that these commands are not yet listed with the "--help" option!
Either way these sound like they might could be done without any changes to server side of things, only local R'n'D code changes. (If you hate server coding)
Definitely yes, again! No server changes required for the above ideas! (And no, I do not hate server coding, quite the opposite: It's very nice to be able to do changes that do not require rolling out a new client version, and then... writing server side code in PHP is so much faster and easier than writing client code in good old C. You can use whatever library you want, without making sure that it is available (and works) with Linux, Mac, Windows, Android... It's a lot more fun, and *much* faster to get things done.
![Smile :-)](./images/smilies/icon_smile.gif)
)
And could save the server from a bunch of unnecessary processing.
Although it does not hurt that much (my servers are fast and powerful
![Wink ;-)](./images/smilies/icon_wink.gif)
), you are right: Being able to continue uploading 10'000 tapes after it failed at tape ~9'875 would really be a good thing! (And being able to upload those tapes you solved when sitting offline in an airplane, would also be a cool thing!)
Thanks again for your ideas and recommendations!
![Smile :-)](./images/smilies/icon_smile.gif)