Place — a testament to computer science in general, really


Place?—?a simple game based off of the subreddit /r/place. You must have heard of that subreddit by now.
And we all know how simple the concept is: just download an image from a server, let people place a few pixels on it from time to time, then save it again. Simple, right?
Well, yes, under any reasonably suitable web platform, this isn’t a hard task at all, ignoring the management of millions of requests sent to the server and whatnot. You could probably make a version of it in about an hour. But, this was created and hosted on the Roblox platform, which is really not suited for anything like this at all.
You see, Roblox provides a simple saving system; data stores. You can use them a bit like a JSON file; you have names with values, of various types. So, as you’ve probably guessed, maybe that’s not the best way to save an image. At least it’s all nice and organi-
It’s limited in size. That makes this a small bit difficult, and I ended up cutting the size down from 1024px to 500px to compensate. At least it’s all nice and smalle-
It’s also rate limited. This thing needed to update in real time, across all servers, with as little overhead as possible, no lost data, and almost no conflicts. But it’s rate limited quite low, making this extremely hard?—?as I found out in the first week after launch.
Everything was going well. Lots and lots of hits and a sharp popularity spike. Servers were alive with people collaborating. Perfect! I joined in, joking and talking about the development process, and how it really was that simple, promise. Secretly, behind the curtain, the server was dying and spitting out tons and tons of errors. I had gone over the limit for sending and retrieving data without realising?—?and I was about to pay for it. The server restarts, and we all flood back on; but most of the data was lost. Oh dear.
It takes me a long time to nail down a solution to this, to stay just under the rate limit. I eventually do this successfully by keeping queues of instructions?—?essentially a journalling system, and push the changes every 90 seconds. That works quite well, but it’s too late; the popularity spike had been hit, the reputation earned and lost, and I was back to square one with a cool product, newly fixed, but the interest wasn’t there anymore. People did pop on irregularly to make small things, but that was that. It’s now closed, but you can see the final canvas here if you want: https://www.roblox.com/games/722538196/place
Thanks to everyone who did join in though, without people this wouldn’t be possible!
Powered by WPeMatico