5 ms·
Agreed that 3D is overkill. I'm fastest at prototyping in Unity though and this was only a couple day project, so I'm unlikely to port it to anything else. Pro
by igpay 2y ago
Agreed that 3D is overkill. I'm fastest at prototyping in Unity though and this was only a couple day project, so I'm unlikely to port it to anything else.
Probabilities are mostly randomized during board generation but skewed in a way to make gameplay feel a bit better. There's a cap on the likelihood of the neutral event, and a bias towards the good event rather than a bad one.
- zachmu 2y agoI got the die to settle on an edge in the corner of the playfield, which triggered a re-roll. Is this actually simulating a d20 with physics?
- Laremere 2y agoCan you please share the specifics? I'm trying to make my own AI for this game, and would like to compare mine against random play to estimate its strength. Also, in your listing of your ai beating the random, how are you counting drawn games?
- its_ethan 2y agoWhy an AI? Just for the fun of implementing it (totally valid, just curious)? Given the probabilities of the outcomes couldn't you just "solve" for the best way to play it based on expected value? If there are 65% and 50% to complete a row in one direction, and a 35% and 20% in another direction, you don't really need AI to tell you which one would be more advantageous to go after?
- Laremere 2y agoYes, I've made what is intended to be a perfect solver (Although it in some testing it's clearly making mistakes, so I have some debugging to do yet). I'm making it because I was nerd sniped into thinking through how to handle some of the trickiness with the solving. It's not an AI in the LLM or machine learning sense, but in the previously common use of the term (eg, deep blue), or in the video game sense.
- its_ethan 2y agoVery cool! Best of luck working on it!
- igpay 2y agoThe current code for board generation is as follows: var neutralChances = Random.Range(1, MaxNeutralChances + 1); square.GoodChances = Random.Range(MinGoodChances, 20 - neutralChances); square.BadChances = 20 - (square.GoodChances + neutralChances); MaxNeutralChances and MinGoodChances are both set to 6 in the release build. Note that one chance is equal to one face of the die, so 5%. Also, this overload of Random.Range() has an inclusive min value but an exclusive max value. I guess I didn't include ties in that little blurb I wrote up, but the real results of my 10k trials were around 5:1:11.5 (lose:tie:win) for the AI vs random actor. Would love to see your AI when it's done! Please shoot me an email if you want. My email is in my profile / in the site footer.
- JKCalhoun 2y agoThat's cool — use what you're comfortable with. Myself, I am trying to create lightweight 3D code to sit on top of Canvas and HTML5. That may be why I was sensitive to the "overkill", ha ha. https://github.com/EngineersNeedArt/Phosphor3D https://github.com/EngineersNeedArt/Phosphor3D