Core to the idea of Bigcanvas is that it’s a shared space, where everyone can draw at the same time. Much as it would on a real canvas, this means people can interfere with each other. Properly handling this and making sure that everybody’s brush strokes made it onto the canvas turned out to be a fairly tricky problem.
How does one store the contents of an infinite canvas into a computer’s finite memory? One cheats. In this case, by taking advantage of the fact that the canvas may be infinite, but people’s drawings are quite finite. We simply don’t store the empty regions.
Remember Bigcanvas? The infinite online canvas that anyone can draw on, which I launched in 2013? I didn’t do anything with it since, but the idea has always been at the back of my mind, biding its time. The most fun games for me are always those which give you creative freedom (RollerCoaster Tycoon, Minecraft, Kerbal Space Program, SimCity) so even though Bigcanvas is not strictly a game, this is something I would love to work on. Recently, I bought the domain bigcanvas.io and started working on a second version.
Hopefully you didn’t notice, but as of now, frozenfractal.com is generated by Jekyll, the static blog generator.
Since its inception in 2010, the site had been running on my own custom-written engine, Utterson. (The name was taken from another character from R.L. Stevenson’s famous novel, since both Jekyll and Hyde were already taken.) The idea behind Utterson was that I could just do a git push to a repository on my server, and the software would take care of turning it into a blog on the fly.
It’s been two weeks since I announced that Patchy was to be featured in the Play Store. This happened roughly a week ago, and it looks like it was taken down around yesterday, so it’s time for a postmortem.
I’m proud to announce that Frozen Fractal’s first Android release, Patchy, will soon be featured in the Google Play Store! I guess that means it’ll get a big banner at the top of this page, which is sure to drive some eyeballs my way. I don’t know what it is exactly that I did to make this happen, so I’m going to document what I did, in the hope that it’s useful for other developers out there.
Setup: suppose you have a monochrome texture that contains a height map. A value of 1 is highest, and 0 is lowest. You want to use this texture as a ‘bump map’ to shade a 2D polygon via GLSL, computing light and shadow from the gradient of the height map at any given point. Let’s assume there is a single light source, infinitely far away (so the light rays are parallel). This is the setup we use in the game Aranami.
Yes indeed, Frozen Fractal’s first officially released game is there! It’s called Patchy, and it’s a retro arcade-style land-grabbing game for Android. This post is about its inception and also describes some bits of the technical implementation.
Ladies and gentlemen, Frozen Fractal presents… Bigcanvas! It’s an infinite online canvas that anyone can draw on. The ‘why’ is described within the app itself, so have a look! This blogpost focuses on the technical aspects, i.e. the ‘how’.
It’s been over two months since my last post, in which I announced that I was abandoning JavaScript for the development of Turtle Paint, and switched to Ruby instead. So far, it has been a great learning experience, and I’m loving this language more every day. There are a number of interesting technical posts that I want to write about the new internals of the game, but those are for another day.
Once upon a time, over a decade ago, I wrote a simple program in C++Builder to help my father solve crossword puzzles and cryptograms. It would let you type a word with blanks such as f....al and it would tell you which words would fit.
The JavaScript server code for Turtle Paint is becoming increasingly difficult to manage. People had warned me beforehand, but there’s no teacher like first-hand experience. The problems in a nutshell:
A good selection of words is essential for a fun drawing-and-guessing game; they must neither be too easy nor too difficult. However, I’m thoroughly lazy, so I was not going to compile a word list by hand.
No, the Frozen Fractal blog is not dead. It’s just been, well, frozen. A lot happened since the last post: I got a job at Google, moved to London, and made a little game for Ludum Dare that I’ll post about later. But a lot also didn’t happen: I didn’t finish Cart Frenzy. It turned out to be too much work to get it done before my contract at Google started, and after that, I didn’t have the time and energy to work on it any longer.
Back to work after a much-needed break, I have gained a better perspective on the current state of the game. I concluded that, if I am to finish this game on time, I’ll have to reduce it in scope significantly.
Game development can be a pain sometimes. Remember my writings on threading last week? This week has been more of the same kind of stuff: engine improvements, code cleanups, bugfixes, and only some small new features that are actually visible.
More work on performance this week. Things were getting a bit too slow for my tastes, meaning that they would likely be unplayable on medium-end phones. This work involved quite a bit of refactoring (which is jargon for “creating new problems to replace your old ones”), so I now have a bunch of screenshots of things… not working the way they should. Because this is a long and technical post, I will intersperse them for comic relief.
As announced, I made a large sprint this week to bring the artwork closer to completion. I think it’s about halfway done now, but I’m getting more and more experience with this, so the second half should go a lot faster.
Like I announced, lots of work on graphics. In-game graphics are beginning to come together, but are only halfway done, so the overall result still doesn’t look too good.
I’ve been looking at my crappy placeholder graphics for too long. Every time I launch the game, a tiny voice at the back of my mind tells me how shitty it still looks. Every time I show it to someone else, they comment how they initially only saw the red handle, not noticing that a shopping cart was attached. Clearly, it’s time to add some artwork.