Leaderboards - Online

ページ 1/2
| 2

By Bengalack

Paladin (804)

Bengalack さんの画像

17-04-2023, 08:10

I have an idea for a new game (conversion of sorts). Thing is, part of the driving force is the score, or even, each score for each individual level. Leaderboards will be instrumental.

And… online leaderboards would be absolutely fantastic. Online solution would be limited to the few who has network connectivity of course, but I wonder, is there any MSX game that ever tried this successfully?

Cheating: It will be a honeypot for “hackers” of course. Anything without encryption will not work. Encryption on the data sent is possible (ideally with a server that can send you a challenge), but that is easy to bypass unless you have additional security. Secure connection does probably not exist on the MSX (unless someone has offloaded IPSec/SSH/https/TLS to a hardware on a cartridge.)??? And lastly, as there is no digital signing support from “the OS”, and that any real-time checksumming on the MSX would be dead slow, we have another drawback.

Apart from the above, there are ways to detect cheaters as well, and delete, ban users and such. And one could reset boards weekly, and son. But it’s a lot of overhead.

But still, did anyone attempt anything in the area of online leaderboards on MSX?

ログイン/登録して投稿

By ARTRAG

Enlighted (6977)

ARTRAG さんの画像

17-04-2023, 08:45

How many machines have a network card and are actively used for gaming?

By ARTRAG

Enlighted (6977)

ARTRAG さんの画像

17-04-2023, 08:48

Maybe a better idea could be to manage the login and the input using a web form to be filled manually by the user

By aoineko

Paragon (1138)

aoineko さんの画像

17-04-2023, 09:20

For Eric Mendel's game Do The Same I helped to generate highscore code to be pushed online manually: http://ricco59em.free.fr/dts/index.php
There were about 25% of control bits if I remember well (to make sure the code was good), but with more characters (and therefore more control bits) you could have a very robust system.

I like the idea of being able to centralize high scores, but requiring the use of a network card on MSX would severely limit the users who would use it.

By Micha

Expert (110)

Micha さんの画像

17-04-2023, 10:03

I have been thinking about this, and I think highscore codes are a good idea.
But to make things much easier, it might be a good idea to display a QR code on the MSX screen that can be scanned by a smartphone and push the highscore online automatically. There are several examples of this already implemented on other platforms.

By Bengalack

Paladin (804)

Bengalack さんの画像

17-04-2023, 12:20

Hey. Cool! Just the kind of various feedback I was hoping for. So something has been done here. Codes or QR-codes is pretty nice to get all aboard, because yes, there are really few users with network connectivity, as ARTRAG is hinting (although, if more and more network features are used in our applications, then the network-cart install base would increase somewhat).

What I need to conquer then, is the use of openmsx/emulators where you can cheat, like using the PgUp key to rewind your last miss. I'll have to detect the emulator of course. Probably by finding a bug or shortcoming in the emulator that the devs will not EVER prioritize fixing Smile However. The problem with this, is that some haxx0rz dude may just use a hex-editor to bypass/fix this detection code, and use his modified .rom file when playing. It might not be that the scores from emulators should be dismissed, but they should be put into it's own category. Everybody can play perfect with rewind-button.

The code can checksum itself or parts of the code or memory and pass on to the server, but again, the hacker may be able send in correct checksums, in clever ways. To avoid using old checksums, you can make the system more robust if you get seeds from the server to bake into your checksum. But this can be spoofed as well. But it is possible to make this very hard to do.

Just as the above, the problem with checksumming (/control-bits) in the data/score sent to the server, is that the haxx0rz dude may just intercept the game code just before the data-block is constructed/sent (and replacing the current score in memory), bypassing the need to break the algorithm.

But... first we need something that stops the low-threshold-cheating. For those who really wants to cheat it is always possible, but then one might try to put in logic on the serverside that can identify cheaters. Possible in some games, impossible in others.

The problem with the manual, one-way solution, is that the rankings are not put back into the local game instance, on the user's MSX screen. That would be better though, and is only achievable with network.

By santiontanon

Paragon (1832)

santiontanon さんの画像

17-04-2023, 13:25

If someone wants to cheat, they will cheat, I don't think there's much that can be done around that hehe. I remember a while ago, I set an online leaderboard for a PC version of my Transball game, and to "prevent" cheating, I made the game deterministic and upload a "replay" to the server, rather than just the score (and then the server would analyze the replay to get the score). So, it would be harder to cheat. But then of course, you can cheat there as well (e.g., in the case of an MSX game, with the rewind feature of an emulator). I do not think that adding encryption or any other feature would prevent cheating in a setting where anyone can disassemble a ROM, patch it and run it again in an emulator Smile

So, I would suggest just adding a few checks, just enough so that the cost of cheating is high enough so that most people don't bother Smile

By Bengalack

Paladin (804)

Bengalack さんの画像

17-04-2023, 16:42

It could be smooth then, to have leaderboards in the game, supporting multiple “profiles” (that are super easy to set up, like Netflix “who is watching”) to allow for “family competition” *and* with automatic display of online leaderboards if internet is accessible, or just local (with QR-codes) when there is no internet.

Question is, is there an overview somewhere, of the various internet connectivity solutions? Would be cool to support it. I’m sure the various vendors are interested in developers making use of their HW too? Smile

By ~mk~

Champion (340)

~mk~ さんの画像

17-04-2023, 18:41

This has been discussed a lot on MAME action replay forums and special version of emulators exist so you can make cheating more difficult (see e.g. WolfMAME).
But in this case, it's a bit different, maybe even harder to solve, because there is no emulator involved.
I agree with Micha, QR or similar offline method seems appropriate otherwise only people with MSX connected to the internet would be able to submit scores.
I want to contribute with a small idea, I'm sure it can be improved, here it goes.
Cheating, in terms of tool assisted (rewinding on emulator) takes time, right?
If the game asked for input from the player (like a seed) as soon as you start a game, and this is used to encode the player name/score and TIME spent playing when the game is over, then it is just a matter of adding to the online app that keeps track of the leaderboard, a regularly updated seed, updated for example every minute.
The player would have to check before starting the game which is the current seed, enter it on the title screen (like "online tournament mode" supported by the game) and play offline of course. Then once the game is over the game creates a QR or hash that includes the name/score/time using the seed entered, and that is what you then submit to the online leaderboard application.
If you didn't cheat, with the lenght of the game and the seed you can tell if score is legit.
If you cheated, this two things would not match and the score can be rejected.
I'm sure this idea can be polished, but I think it could work as it is.

By Bengalack

Paladin (804)

Bengalack さんの画像

17-04-2023, 22:10

Thanks a lot for input!

If I understand this correctly, this would need the user to submit immediately, unless we allow for a lot of slack time. And giving extra time can hide time used to cheat in some games. So it could work in some games, but not in others. The user could of course just hack the game, and hardcode the score to be 99999999 and the game would happily just report that score :-/

But also, in my current envisioned game, entering a tournament code for every run would be massive. It's a kind of game where the levels are played over and over again. And they are short.

So I guess I need to ponder a bit more Smile

By aoineko

Paragon (1138)

aoineko さんの画像

17-04-2023, 22:51

A golden rule in the fight against cheating (and hacking): don't bother the honest user to try to prevent behaviors that you can't prevent. ^^

Your game will certainly not have the stakes of a modern competitive e-Sport game where the fight against cheating is vital.

In my opinion, make a good game that players have fun with, that's the main thing. If you want to put in some security why not, but you shouldn't make everyone's experience worse to try to prevent very hypothetical cheating.

And the more you talk about protection against cheating, the more likely you are to make people consider breaking it. Wink

ページ 1/2
| 2