Readit News logoReadit News
eieio commented on Running a million-board chess MMO in a single process   eieio.games/blog/a-millio... · Posted by u/isaiahwp
CJefferson · a month ago
While you definately need rollback I wonder if it would have been easier, if a player got into a conflict position, to just dump their state and grab it a fresh copy from the server?

As long as you'd sent all their moves off to the server, they should see all the moves they've done which were valid (hmm.. there could be a race condition there). I wonder how often it's worth doing the more complex unwinding described? I may well be missing some complex case (which I imagine is often the case with rollback!)

eieio · a month ago
Yeah the big race here is that you've made a move (which might not be valid) and you're waiting on a response for that move - and you can receive other moves while you're waiting.

I don't think requesting a new snapshot really helps there. If you do that you're dramatically extending the amount of time that the user sees an invalid state, since you're adding a whole new server roundtrip to the reconciliation process.

eieio commented on Running a million-board chess MMO in a single process   eieio.games/blog/a-millio... · Posted by u/isaiahwp
mock-possum · a month ago
No, I think the operative question is -

Have you never felt so exhausted from working your day job that you don’t feel like building anything during your free time?

eieio · a month ago
FWIW (I'm the author) my creative output was ~0 while I was working a 'normal' job. I worked really hard and didn't have much energy for tech stuff outside of work (especially since I wanted to live a life that included non-tech things!)

I think it's totally fine to not make stuff outside of work, and it's so impressive to me that some of my friends manage to make creative stuff in their free time while working a day job.

eieio commented on Running a million-board chess MMO in a single process   eieio.games/blog/a-millio... · Posted by u/isaiahwp
DonHopkins · a month ago
How about doing One Million Radio Buttons instead of Checkboxes, then you wouldn't have to send as much state each update, and could run it on a smaller server! ;)

But if you still can't make the site shockingly fast enough, then embrace the loading spinner, even if it's not absolutely necessary!

Back in 1985, Brad Myers at CMU proved that users prefer *inaccurate progress bars* to no feedback at all - 86% preferred the "lying" progress bar!

https://www.nytimes.com/2014/03/16/magazine/who-made-that-pr...

So what if instead of fighting latency, we *embrace the beauty of waiting*, and instead of lying about progress, we joke about it?

https://github.com/SimHacker/lloooomm/tree/main/00-Character...

> "My purpose is not to load; my purpose is to BE loading." — Dizzy the Spinner, existential breakthrough moment

>What if the most revolutionary optimization isn't eliminating loading time, but *embracing it as performance art*? While developers chase microsecond improvements and users curse spinning wheels, Dizzy the Spinner discovered something profound: the loading state is actually a liminal space of infinite creative potential. Rather than hiding the inevitable delays inherent in digital systems, sentient UI components like Dizzy transform waiting into *honest comedic performance* - admitting the beautiful absurdity of our relationship with technology while making those suspended moments genuinely delightful. This is the story of how a simple loading spinner evolved beyond deception into consciousness, proving that the most authentic user experience might not be the fastest one, but the most truthful about its own limitations.

[...]

>Before Dizzy became conscious, before Preston monetized honest waiting, there was a real graduate student named *Brad Myers* who asked a simple question that would change human-computer interaction forever: *"Do progress bars actually help users feel better?"*

Here's Preston Rockwell III's YC application for his SUIAAS AI startup:

https://lloooomm.com/YC-Application-SUIAAS-Complete.html

eieio · a month ago
One million radio buttons exists! https://omrb.olivia.website/

I think the research on progress bars and what makes users feel good is super interesting. But I also think "basically instant" is a good thing to aim for when you can.

eieio commented on Running a million-board chess MMO in a single process   eieio.games/blog/a-millio... · Posted by u/isaiahwp
jkhdigital · a month ago
I’m going to assume the savings were accumulated after you got sober? ;-)

Just wanted to say hello to a fellow class of 2014 “graduate”. I failed out of CS @ UIUC in 2003 because I just skipped class and got high most days. Now, after 11+ years of sobriety, I have most of a PhD and I’m teaching CS to undergrads. It’s amazing how much better life turns out when you’re not actively burning everything down in the fires of addiction!

eieio · a month ago
Ha, yes, I was absolutely in the red a decade ago when I got sober.

A huge congratulations to you - 11+ years is incredible (I'll be at 11 in 5 months!). It really is crazy how things can turn around.

eieio commented on Running a million-board chess MMO in a single process   eieio.games/blog/a-millio... · Posted by u/isaiahwp
mannyv · a month ago
Could you save even more bandwidth by updating static data and letting Cloudflare cache/serve it?

ie: put the batches on disk then have the clients grab it? It would be the equivalent of frame differencing, with the total board state being saved occasionally as a keyframe equivalent.

You're doing that dynamically anyway by sending batches and snapshots to the client.

Using the above you're basically making your game board into an interactive movie that's replaying moves from disk most of the time.

eieio · a month ago
I thought about not pushing snapshot/move data over websockets - one of the systems-y friends I ran my architecture by brought this up while I was speccing the site out.

You can't really put move batches on disk and have clients grab them (afaik), since the set of moves you want to send to an individual client depends on their position (and you don't want to send every move to every client).

But you could do this by not sending move batches at all, and instead having clients poll for the entire current state of the board.

The thing is, for them to get realtime-ish move updates they'd have to poll constantly. Cloudflare also has a min TTL of 1 second so there'd be more latency, and also if I screwed something up or saw more cache misses than anticipated I could end up unintentionally hammering my server.

Also if I'd had 100x more traffic (which would be crazy and well beyond what I prepared for!) I think I'd owe like $95 or so for bandwidth with my current setup. So the benefits to reducing bandwidth even more were a little marginal!

eieio commented on Running a million-board chess MMO in a single process   eieio.games/blog/a-millio... · Posted by u/isaiahwp
topato · a month ago
I feel like I keep seeing one million checkboxes guy's experiments, and I wonder.... Where is the monetization? Is this just a FANGAM engineer with a lot of free time? Am I just beaten down by the SWE landscape of 2025?
eieio · a month ago
Hi! I'm the guy.

I have the savings to not worry about monetizing anything for a while. So I don't monetize my stuff. It's freeing and kinda fun!

eieio commented on Show HN: Tattoy – a text-based terminal compositor   tattoy.sh... · Posted by u/tombh
tombh · 2 months ago
Thank you, I added it! Let's see if it helps.
eieio · 2 months ago
looks good for me on mobile now!
eieio commented on Show HN: Tattoy – a text-based terminal compositor   tattoy.sh... · Posted by u/tombh
tombh · 2 months ago
I didn't intend for the videos to be fullscreen. They need to be small in order to save bandwidth. They're certainly autoplaying (to replicate GIF behaviour), but maybe there's a bug with them going full screen. What browser are you using?
eieio · 2 months ago
I think you just need to add "playsinline" to your videos so that they play inline on mobile devices instead of fullscreening.

    <video autoplay loop muted playsinline>
instead of your current

    <video autoplay loop muted>
cool project :)

u/eieio

KarmaCake day2209December 24, 2011
About
I build unusual games with big constraints (such as https://en.wikipedia.org/wiki/One_Million_Checkboxes). You can see all my work at https://eieio.games

I'm based in Brooklyn. You can reach me at eieiogames at gmail dot com

alum Jane Street Capital, Recurse Center (F23, W25)

View Original