Posts Tagged ‘threejs’

Tile Risers Postmortem

Posted by (twitter: @etodd_)
Monday, December 28th, 2015 10:25 am

Friday 21:15

Fifteen minutes after the theme announcement, my friend Ben Homan walks through my front door. Not really my front door, I’m just a subletter. But this is a first. Normally he ignores our instructions to walk in without knocking. The first time, he texted me from the driveway.


Jesse Kooner walks in, also unannounced, bearing frozen pizza. Before he can even kick his shoes off, I loudly explain the theme: a never-before-seen tie between “growing” and “two-button controls”.


Jesse has no laptop. I dig out an old one from my closet. I plug it in and start working on a few Windows updates. 72 to be exact.

Meanwhile, we decide which technology to use. Jesse’s less code-focused skillset leads him to prefer Unity, while Ben wants to use the weekend as an opportunity to become more familiar with Node.js. We decide on Node.js. Jesse will provide creative input and artwork.


My roommates, a brother and sister, arrive home from an apparently underwhelming Christmas light show. The concept of a game jam is foreign to them, but they’re good sports. We spend a half hour playing QWOP with them.


Our design parameters:

  • Multiplayer. Otherwise, what’s the point of Node.js?
  • Probably 2D due to the limited timeframe. Although Jesse is more comfortable working in 3D.

Jesse originally suggested doing this competition a few weeks ago, when he wanted to create a mash-up of “Cookie Clicker” and a tower defense game. He resurrects the idea now, only halfway joking.

Ben likes the idea of a multiplayer vine growing game. I’m partial to a text-based social game about growing a social media brand. No one commits to anything yet.

Ben is not a big gamer, so I pull up a few famous HTML5 games on his laptop. 2048. This last one interests me in particular, as it involves growing numbers.


I’m pitching Ben and Jesse on a multiplayer version of 2048. I envision a free-roaming world filled with numbered tiles to collect. Instead of collapsing numbers together against the edges of the board, players would find walls and structures within the world to collapse their numbers against.


  • How can two or more games of 2048 occur simultaneously on the same board? In normal 2048, the player controls all tiles on the board. We decide to give each player a unique color, and allow them to assimilate unclaimed, grayed-out tiles.
  • What happens when tiles from two players meet? We decide that whoever moves first gets to own the resulting collapsed tile from a move.
  • How do players traverse through the world? We toss around the idea of procedural generation, but eventually decide on hand-crafted, linear levels linked together via portals.
  • This raises the question: how do the portals work? And what happens to a player’s tiles once they exit a level?

Top right corner: our confidence that we’ll actually finish the thing.

Saturday 00:30

We’ve eaten two pizzas. We have a Git repository and a Slack instance which is ultimately only used to test out amusing Slackbot responses.

Although the game is 2D, we decide on a 3D art style with an orthographic projection, to allow Jesse to use his skills in Maya LT, which he promptly installs on my old laptop.

Ben works on the server with Node.js, while I start on the client with Three.js.


Ben heads home first, then Jesse. I pass out on my bedroom floor.

You can see we’re already struggling with the name.


I wake to find Ben working in the kitchen. He spends the morning building boiler plate for the server, while I work out some Three.js details.


I return from a run just in time to catch Jesse pulling up with donuts. After lunch, he and I spend the next few hours working out a pipeline between Maya and Three.js.


I tweet our first screenshot, featuring colorized instances of Jesse’s tree model displayed in a horribly distorted orthographic projection.


Without the server API to code against, I run out of things to do on the client. Ben finishes the data model, but he has trouble conceptualizing the rules for player movement. I haul my laptop over to indulge in some good old-fashioned pair programming.


Break for dinner. Burritos. Jokes.


Jesse continues modelling. With the basic API done, I start working to make the client consume it. Ben works on an image loader. We want to design the levels in GIMP.


Ben takes off. I’ve got player movement, animations, and tile numbers done.

Sunday 00:30

Multiplayer works. Jesse and I play a few games against each other. It’s fun! It’s a game! We work out some issues with the level loading code and try to get an interesting level loaded.


Problem: it’s pretty easy for one player to gain the upper hand and quickly assimilate all the tiles on the board, making it impossible for other players to move and grow.


Solution! Players should only control tiles within a certain radius of their “center”. Outlier tiles are grayed out, free to be picked up by other players.


Fix implemented. Jesse heads home and I turn in.


Tweet another screenshot before heading to church.

At this point, I’m having an existential crisis about the name. I fire off a few panicked texts about it.


Ben and I are back to the grindstone. Jesse arrives with sandwiches and more donuts! Ben adds a cool username feature, but we eventually axe it to keep things simple.


Tweaks and bug fixes all day. Ben works on the level format, while Jesse lays out some levels in GIMP.


More polish. I put in Jesse’s cloud models and a “connecting” spinner.


We finally brainstorm a name: Tile Risers. Jesse whips up a logo in Maya. We go through seven iterations before everything lines up in our janky export pipeline.


I spin up a Digital Ocean droplet, allocate an S3 bucket, commit the production URLs, and start filling out the submission form.


Time’s up! Fortunately, we have another hour to submit. I later found out I misread the rules, and we actually had a whole extra 24 hours. At any rate, we were done. I commit two small bug fixes after submission, which is within guidelines.


Mirrored on my blog

Post Mortem of HanniBall

Posted by (twitter: @snooze82)
Tuesday, August 25th, 2015 7:00 pm

Nearly two days later, I can call HanniBall a success.

After two finished LD’s, I gave up during LD31 and missed LD32.
But this time, I managed to finish a game. Woohoo \o/

It’s a little 2-Player Battle Game to find out, who the real Hannibal is.

Play and Rate it here :)



What went wrong

  • I was not prepared enough, I struggled the first 2 hours with bringing a simple box with a light to the screen, just because I forgot, how to do so. And it took forever to record the few seconds of annoying music.
  • I didn’t invole people for playtesting or give me some advises or ideas. Aftwards, friends came up with nice little ideas, which would have made the game real fun to play.
  • I lost a couple of hours doing nothing. Or watching a movie. I could have use my time for creating properly 3d models – Now, I have only balls.
  • The floating island is dynamically generated, because I thought it would be more fun/ challenging. But no one noticed it. I would have saved hours, if I simply would have modelled it with blender.
  • Although I was streaming the whole progress on twitch, I had nearly no visitors. I should have advertise this more, and do more socializing on IRC, Twitter, etc.

What went right

  • I chose the most simple idea. And it was one of the first idea – playing with the name “Hannibal” (my girlfriend is currently reading the novels) seeded into this game. No, it’s not shoehorned.
  • To chose plain JavaScript and the incredible THREE.js framework was the right decision. I loved to come up with such a nice result despite not using a full featured game framework
  • I finished the gameplay development first, and had afterwards enough time for building up the floating island, making music and to add the postprocessing.
  • It’s a game I can play with my 7y old daughter – despite the theme :)
  • My PC was capable enough to do a FullHD stream to twitch while developing with WebGL stuff. Nice baby :)


  • JavaScript, THREE.js
  • THREE.Terrain
  • gimp
  • bfxr, bosca ceoil, audacity (see the tools section)

See you next time <3 

After one and a half day, I’m giving up

Posted by (twitter: @snooze82)
Sunday, December 7th, 2014 8:29 am

“The Return Of The Snowman Colossus” is unfortunately nothing you can play tomorrow :/

Neither it’s because of the theme (I liked it, and I planned a plot twist toward it) nor is it because of wrong tools, falsey time management, or something like that.

Unfortunately, I got a headache and felt dizzy.
I went to sleep for a couple of hours during afternoon (it’s 4pm here), but my body and my mind are telling me, that I have to stop now :/

My last broadcasts on twitch:
The code on github (Javascript, WebGL/Three.JS):

See you next time and good luck to everyone who is still sitting in front of his/hers computer 😀

Spot the Santa!

Spot the Santa
Halfway to his goal - the head of snowmanGiant Snowman ColossusScreenshot (4)

Santa vs. Snowman Colossus

Posted by (twitter: @snooze82)
Saturday, December 6th, 2014 2:11 pm


Without any texures yet, but coming along :)

Suddenly, a giant snow colossus appeared

Posted by (twitter: @snooze82)
Saturday, December 6th, 2014 8:57 am


Okay, Winter setting is ready.

Posted by (twitter: @snooze82)
Saturday, December 6th, 2014 6:09 am

Hopefully, it will become a mix of a 3d third person “jump’n’run” and Shadow of the Collossus.


I’m currently streaming on twitch:

My code is on github:

I’m Preparing!

Posted by (twitter: @charlottegore)
Thursday, December 4th, 2014 7:28 am

Three.JS isn’t a game engine. It’s great for very easy 3d in browsers, but… sheesh… you kinda have to do everything else from scratch.

To get ready for this Ludum Dare I want to already have the ability to import geometry from Blender and then actually interact with that geometry. Three.JS doesn’t have any collision detection stuff built in so… a bit of work is required.

So I found a cool javascript SAT library and a nice Spatial Hash grid implementation then wrote some code to convert the imported geometry into SAT convex polygons and generate bounding boxes for the grid. I threw it all into my stub game library thing and I got:


It kinda feels like cheating though, doing work like this before the competition itself. If I used Unity I’d get this sort of thing for free though.. so it’s okay, right? Right? *guilt*

unnona – Post Mortem

Posted by (twitter: @snooze82)
Sunday, August 31st, 2014 12:48 pm

Screenshot from 2014-08-31 21:34:21

A little late, but you can read my just-published (second) LD Post Mortem here:

I didn’t post it here, because it’s german (my english is far from good enough to express my thoughts) :)

Beside the post mortem, you can play and rate my entry here:

I would also love to play your games, if they are playable on a linux machine :)
Leave a comment!

dunno – unnona

Posted by (twitter: @snooze82)
Sunday, August 24th, 2014 5:34 pm

Wooohooo, my (second) entry ‘unnano’ is ready to get played by you.

Screenshot from 2014-08-25 02:09:28

Play & Rate it, please:

Unfortunetaly, I didnt have enough time for music or special effects :/ I wasted my time with collision detection and animations 😉

And the second disclaimer: you can shoot the big balls, but they neither fight back nor hurt you :)

I hope you’ll enjoy it as much as I enjoyed the last 47.5 hours.


Still no name for this entry..

Posted by (twitter: @snooze82)
Sunday, August 24th, 2014 1:52 pm

.. but I’m coming along anyway 😀


If you’re curios, the game scenario goes here:
You’re trapped and have to find all keys, to get out.
Some keys are behind locked doors (which you can open with one of other keys).

Sounds easy, but the same world exists multiple times in an multiverse scenario – and there are the other keys.
You reach them by going through portals.

But there is one more thing, you know.. the time ..
Now, go, and get the right key, while it’s there – maybe in another world, you have already taken it..

I still have four hours, have I?

Little steps with ThreeJS

Posted by (twitter: @snooze82)
Saturday, August 23rd, 2014 9:53 am

My progress so far:


I hope to finish all game mechanics (time & space traveling thing) today, so I can start modelling tomorrow \o/

I’m updating my github repository ( ) regularly, if you want to follow my progress 😉

[cache: storing page]