nostr:npub15fkerqqyp9mlh7n8xd6d5k9s27etuvaarvnp2vqed83dw9c603pqs5j9gr symptoms of using the rand() call because they didn't know any better.

Tip though of you ever want to put RNG and stuff you do: you really need to put in anti-streak mechanisms. The way I do it is that I have the outcomes have counters and each time you get that outcome it gets some percentage less likely that you'll get that outcome, changing the weights each time.

So of you start with A/B with a 50/50 chance, of you hit A the offs next time will be 45/55, then hit A -> 40/60, then hit B -> 45/55. That makes it no longer true random but computer RNG does not at all resemble real life probability in the short term and this is a smoke and mirrors fix for it.

Note that this is bad for security it just feels good.

Reply to this note

Please Login to reply.

Discussion

that's basically what I imagined I would do when I was running into this problem, with the addition that I'd probably guarantee success after a few fails depending on the circumstances (above some threshold base chance, for high value things)

so for example in this game, repairing animal skin clothing requires more animal skins. some of them are easy to come by, some aren't, but all require a lot of time to cure. and that means it's going to feel like shit if you have a ~75% chance of success and you lose three hides in a row trying to repair something. it starts to look like a better idea to just make a new item than try to repair them at all, which it in fact is at lower levels of mending skill

another mechanic might be to have a temporary skill modifier for that specific task, explicitly stated to the player, after each fail. because in real life, even if you're not very skilled at something, if you try repeatedly to do the *exact same thing* you'll probably get it right eventually

so then the player could choose to burn 5x the resources guaranteeing success, if they wanted to. of course to avoid exploits there might be things that mechanic wouldn't apply to

never had any reason to implement such a thing though