Tag Archive: Caromble! Fridays

Evolution of Caromble!

Last week, we stumbled upon some old gameplay videos of Caromble!. It is fun to see how the game has progressed over time. Some feature changes I couldn’t even remember. For example, I forgot we ever had red bumpers. This made me curious and I looked for even older footage. The oldest video I found was from INDIGO 2011, where Caromble! was playable for the very first time. To show the evolution of Caromble!, I created a small video to show the different versions side by side, with the same levels being played:

The most striking difference are probably the graphics. The paddle is different, some better lighting is added and of course, newer textures. Also, we’ve improved some of the feedback to the player: the paddle reacts to its own movement and ball collisions, we’ve added camera shake and there is an effect when a ball hits a wall. Gameplay wise, you can see that the camera is positioned higher in the newer version, which gives a better view of the action.

I must admit that I kind of liked the very fluorescent yellow boxes in the older version. Because of the higher contrast with the floor, they really stand out as something you need to destroy. However, with a more ‘realistic’ style in mind, we felt that those kind of boxes wouldn’t fit in anymore. Mmmhh… perhaps we could still squeeze them in somewhere:)

We are working steadily towards the next step in the evolution of Caromble! and expect to bring Caromble! ‘Sapiens’ into your living room in the beginning of 2014. Stay tuned!

A brand new Render Core

Six weeks ago, I wrote a post on this blog about rewriting the render core of Caromble!. Back then, I thought I was only a few days away from finishing the project. But it turned out to be quite a bit tougher than expected. It seemed that every corner we cut during the past couple of years, came back to haunt us and delay finishing the rewrite.

But just a few hours ago, we finally managed to merge the changes back to the game, and that means that the old renderer is history. I will now briefly explain how the new core works. If that sounds too technical, just scroll down to look at the screenshot that proves that the Caromble! can now run on MacOS. Yeah!

For Caromble! we are using the Ardor3D engine to power the graphics. Ardor is quite flexible, shielding programmers from the exact versions of OpenGL they were using. This is a great way to keep games running on old hardware, while still allowing programmers to add new features for newer devices. The big drawback of this approach is that it mixes fixed function OpenGL stuff with the newer stuff. And that makes it impossible for programmers to explicitly use one or the other. Which is exactly what we needed to do if we wanted to have the game running on MacOS. Because for MacOS only OpenGL 3.2 is currently supported (if you want to use any of  new stuff). For Windows, we’ll mostly be using OpenGL 3.2, except for the Intel HD embedded GPUs, which support only OpenGL 3.1.

The nice thing about OpenGL 3.1+ is that it will allow you to have very precise control about where data lives and how it is transferred to the rendering pipeline. For instance, in the old days if you wanted to specify the normals per vertex, you would have to tell a special “normal-pointer” function that the current buffer is used for normals. Later, during rendering, the gl_Normal variable would be magically available to read back these normals.

In modern OpenGL these special variables no longer exists. If you want normals you have to bind the normal buffers to a generic target, and then bind the generic target to the input that you’ll use for normals. It is a bit more work for the normal case, but it gives you much greater flexibility and allows you to write much cleaner code (more stuff can be shared).

So that means the core of our renderer will boil down to the following.

For each mesh that you want to draw you do the following during initialization:

  1. Create a Vertex Array Object. Confusingly named, this object will hold all pointers to all data describing you mesh.
  2. Gather all your vertex data (positions, normals, texture coordinates, …) and put it into Vertex Buffer Objects. Upload these to the graphics card.
  3. Explicitly bind these buffers to inputs of your vertex shader. (No more magic values such as GL_Normal).
  4. Upload the textures you’ll need an keep track of them.

During rendering we first activate the shaders we will be using for this renderpass (deferred shader, light shader, transparent object shader, etc).  Then, for every mesh we need to draw we do the following:

  1. First we upload the relevant scene information to the graphics card (such as matrix transforms and the near and far plane). Strictly speaking it is a bit of a waste to do this for every mesh, but we have yet to make that optimization. (And we pixel shader limited right now anyway).
  2. Now we look up the textures that belong to this mesh, and bind them to the correct texture slots.
  3. We now bind the correct Vertex Array Object and tell OpenGL it is time to draw something

In a nutshell, that is how our current render-core works. Of course there is a more to it, but this is the most important bit.

For us an import advantage of our new render-core is that it is much smaller than the old core. There is only one code path that all objects take, and that will make it much easier for us to optimize the game during the last phase of development that we are now in. So while it took a lot of time and effort to port our render core to support OpenGL core-profiles, we are confident the investment will pay out by making our code much easier to maintain.

And with the promised screenshot, that will be all from me for now  🙂

Caromble! on MacOS

Caromble! on MacOS, please ignore that I lost the ball.

Graphics Effects

Since most of us working on Caromble! are programmers, it shouldn’t come as a surprise that we wrote our own game engine for the game.
In the animated image below we show a few of the effects we apply to Caromble! to get it to look the way it does.

Graphics Effects

Click to enlarge

In the first of the images you see the scene with no texturing and only the main light applied, in the next image you see the same scene with secondary lights and the specular map enabled.

After that, we add bump mapping, basic colors, shadows, bloom & depth of field, ambient occlusion, reflections and soft particles.

On low end machines, you might have to disable some of these effects to get to run the game with decent speed. But on high end machines, we still got some room to spare. Maybe, very maybe, we just might add motion blur to get the game to look even better….

Making a video game trailer

How to make an awesome trailer? That’s the question. Last Friday we discussed our upcoming trailers. We try to release a new trailer soon!

According to Kert Gartner’s helpful blog post there are some important rules of thumb when creating a video game trailer. In my own words those are: entertain, shoot quality footage, tell a story, keep it focussed and short.


When I stumble upon a new video game title – for example, on a video game website – I skip the text and I first watch the video game trailer. If the beginning isn’t entertaining I probably move on to the next article. For me, a trailer is THE source of information about a video game and the first seconds are crucial.

Of course it’s hard to entertain everybody. But, when the quality and tone don’t match the actual game, it might work against the game.

That’s why we concluded that we must take the time to create some quality trailers. In particular because a good, entertaining trailer contributes to letting the world know that Caromble! is a great game!

Thankfully, for our next trailers we will get the help of our friend Jasper who happens to have studied Film and Television Studies and who likes to create and edit movies.

Brainstorming about trailers

Shoot quality footage

Although I like pixel art and the pixelate effect we use in our game, it’s expected to have a high resolution trailer with a minimum of 720p. This means capturing insane amounts of raw data on a machine that doesn’t drop frames while recording.

Caromble! is not yet finished. We would really like to release a new gameplay trailer soon, because we made a lot of progress since our last trailer in February. However, at this point we can’t capture all the footage we would like to put in our next trailer.

Tell a story

In its simplest form this means to structure the trailer. Give it a beginning, a middle and an end.

Caromble! has a story which we incline to focus on in our upcoming trailers. However, while brainstorming about our trailers we discovered that the game’s story still has some gaps… So, before storyboarding the trailers we have to finish our writing.

Keep it focussed and short

This is a general rule in communication and it also applies to video game trailers – and blog posts.

The end.

Steam in the Livingroom


We always planned to release Caromble! on PC, Mac and Linux. But right now it might just be that we’ll be able to launch on a console as well.

While Microsoft and Sony are preparing for the next-gen console war, this week Valve showed it too has some tricks up its sleeve. The people behind Half-Life and Steam made three announcements that might one day completely blur the lines between consoles and desktop computers.
Gabe Newell, the owner of Valve, already made clear he wanted Steam to be an open platform, accessible to everyone. The first move in this direction was the launch of Greenlight, opening up the Steam store for Indie Developers. In the light of an open platform, launching a closed console like Microsoft and Sony are doing seemed an unlikely choice for Valve.

The first announcement was Steam OS: a Linux-based operating system to play steam games and stream media. A few days later it became clear that the rumors about a SteamBox we’ve been hearing for a while were true. But instead of the SteamBox being a closed console, Valve is working with multiple partners to bring a variety of console like machines (running Steam OS) to the market in 2014. Heck, it’ll even be pretty easy to build your own SteamBox.SteamController

The main problem with using a desktop computer in the living room is that you have no place to put your mouse and keyboard, so it’s no surprise at all what Valve announced last: a controller. But instead of playing it safe and going for a Playstation/Xbox-like controller, they are making a controller with multiple trackpads. This has the advantage that the Steam controller will be able to simulate mouse movements and is therefore compatible with all Steam games at launch.
Of course, a trackpad never gives you the kind of feedback an actual button would. Therefore, Valve has equipped the controller with “super-precise haptic feedback” to give you information about speed, boundaries, and thresholds.
We already added Leap Motion to support to Caromble! a while back. It worked very well and even allowed us to play Caromble! on the floor at Gamescom. With that in mind, I think Caromble! would work very well with Valve’s new toy.

It seems unlikely that Valve will spend the same amount of money on marketing the SteamBox as Nintendo, Microsoft and Sony, but since the SteamBox will likely evolve over the years (just like Steam did), times might just become very interesting…

As we wrote before, we already support Linux for Caromble! (with Mac support underway). With the announcement of the SteamBox, supporting Linux just got even more attractive. If we could just get our hands on one of those controllers… Exciting times!

Levels in the new theme

A few weeks ago, our artist Thomas S already showed some of the newly created assets for the new theme: Metropolitan/Commercial style. We have been working hard to create some levels with these and I got official permission to give a sneak peek:

A train that rides more reliably than ours in Utrecht Doesn't the Alien boss look scary!?

We hope you like it! It’s not only the graphics style that is different in this theme. There will be some new gameplay features that could lift you right up:)

Also nice: this week the gaming news website Gamingbolt published a piece we wrote in their section ”Developer journal’. You can read it here. We hope to have some more journals there soon.

Oh, and if you accidentally find yourself  in Amsterdam tomorrow evening, you should go to Pakhuis de Zwijger. There will be another Control Gamelab. This time it is on making Game Trailers. We hope to learn enough to make our upcoming trailer super awesome! Expect it on youtube soon, of course with moving footage of our new graphics theme.


Vacation and a major rewrite

You may have noticed that things are a bit more quiet than usual on our development blog. Our vacations are to blame. Personally, I have just spend two awesome weeks touring through Italy with my girlfriend. Eating pasta, drinking wine, sitting in the sun and generally not thinking about anything more complex than where we should have lunch. Maybe I was also gathering some strength for what I knew was waiting for me back home.


You see, back when we first started working on Caromble! none of us had ever made a game for real.  It is amazing to see that lots of the code we wrote in those days is still in the game, and working as it was originally intended. It is also  unsurprising to see that lots of code has been thrown away and rewritten. And it is also unsurprising that there are lots of bits and pieces of code that really should be rewritten, but never were broken enough to warrant such action.

Among this code was core rendering engine. Like I said, when we started there were lots of things we didn’t know. Especially about rendering. We understood the basics, but when it comes to rendering a game there are also a lot of important specifics. So what happened was that we just went ahead working with things we didn’t fully understand, and just getting it to work.  Starting from examples from the internet we actually made quite good progress. Eventually we were even being able to contribute a little bit to Ardor3D, the graphics engine we use.

While we were getting to grips with rendering in OpenGL, OpenGL itself went through a transition. Slowly but steadily the Fixed Function Pipeline got out of fashion, in favor of the programmable pipeline. Initially we didn’t care very much for fashion, and quite happily used both pipelines for different parts of the rendering process. Which didn’t really seem to matter at that time. So what if we depend on both?

Well it turns out it does matter. To be able to run the game on MacOS we needed to choose. Apple drivers will work with either pipeline, but not both at the same time (OpenGL compatibility mode). We couldn’t go back to the fixed function pipeline anymore, as we would not be able to maintain the look of the game. So we had to take the leap forward.

And that brings me to the thing that was waiting for me. A complete rewrite of the core rendering code. Just when the game is quite nearly finished too. To add to the fun, this also means we can’t use the off-the-shelve version of Ardor3D anymore, which is still fixed-function at heart. At the same time, it is also quite exciting. We get to write a rendering core which is tailored exactly to the needs of Caromble!, we anticipate that we can get a bit more performance this way too.

Originally, this would be the blog posts were I would triumphantly boast about the new awesome render core we just put in Caromble!, making life at least twice as awesome. Sadly, all this exiting state-of-the-art rendering core currently does it give me a black screen.  And sometimes crash. But I should be able to fix that pretty quickly. When I do I’ll share how I did it here. We could also make the renderer available to those we would find it interesting.

Until then!







Long Lost Code

A while back we hinted about it: Boss Fights. Originally, the idea was that the virus shards were items you would collect to progress through the game. But after a long discussion we felt that this was typical behavior seen in so many other brick-breaker games. We didn’t want the virus to be stationary, we wanted it to take the fight to you!

So about that fight, well, I really do not want to spoil everything before you get a chance to play the game… Previously we got inspired by games like Pinball, this time though, we looked at SCHMUPS (Raptor!) and even games like Pong. While Arkanoid will always have the most evillest boss out there (DOH!), after a few days of programming, our (still nameless) boss is shaping up to be a pretty good challenge.

When we started building our game engine, many, many years ago. We were trying to build it as generic as possible (trying to be able to support fps/race/etc -basically all games). For some part, this was a waste of time; When we started working on Caromble! we quickly gained a lot more focus and improved the engine on areas needed for Caromble! -finally making some serious progress.
But not all was lost, because for the boss behavior we could reuse code from years back that still proved to work just fine. For programmers like us, that feels awesome!

But enough with the sentiment, we finally got our Etoo London interview online, check it out!

And again, if you’re going to Gamescom and want a go at Caromble!, just let us know!


PR and marketing are two things I had never thought about before I started to work on Caromble!. Or to be more accurate, not until I had been working for Caromble! for at least over a year. And I don’t think anybody in the team did.

So I guess that it could be expected that PR and marketing would turn out to be the most surprising aspect of game development for me. The thing that is so surprising about it, is how much fun it is. Being a computer science / programmer kinda guy, doing something such as PR never crossed my mind, and it would never have expected to enjoy it.

The fun thing about PR is that it is all about talking about your game. We are indie developers, and that means we are making Caromble! because that is the game we want to make. Which in turn means that we are devoting ridiculous amounts of spare time to it, and we are very (very!)  passionate about it. So talking about Caromble! is the most natural thing in the world for us. In fact, I’m pretty sure that some of our friends would appreciate it if we would enjoy talking about it a bit less.


So why all this talk about PR and stuff? Well, two reasons. First reason, we recently had the pleasure of having Berend and Atusa from the up and coming game website kijk-online.com over for a visit. We told them all about making a game in your spare time (and working less to have enough spare time), and about our plans for Caromble! The cool thing about kijk-online is that they are running the website in their spare time, pretty much like how we are developing the game.

The other reason is that we got a really nice mention in the British game-magazine gamesTM. They did a piece on EToo London, and named Caromble! one of their four highlights of the event. Which is a really great honor, given the amazing amount of great games the good people organizing EToo managed to put into such a small venue.




Like a Boss


Most people will interpret this as Homer Simpson’s catchphrase, but that’s actually spelled as “Do’h”. For me, and perhaps most Breakout fans, the story of Arkanoid comes to mind. Arkanoid’s almost unbelievable story goes like this: Vaus is the space vessel that escaped the ill-fated mothership named Arkanoid – hence, the name of the game. That vessel acts as the game’s focal character: the paddle. After some rounds of brick breaking awesomeness the player reaches the final round where the goal is to demolish the ‘dimension-controlling fort’ which is named… “DOH”.

This illustrates that a Breakout game can have a story to add to the overall experience. In an earlier post we promised to put in boss fights. We didn’t initially plan this – in fact, we rejected boss fights earlier in the development process because we didn’t see how it would fit into Caromble! – but as art, gameplay and story developed, the boss fights seemed to find its way back onto our agenda and seemed to fit right in. Storywise the paddle is our so-called protagonist, the lead character whom the player can identify with. Opposed to that we have the boss as antagonist, the character that (literally) creates obstacles that the protagonist must overcome. Throughout all aspects of the game the idea of protagonist versus antagonist is a nice contrast to elaborate on.

Caromble! is almost gameplay complete now. The boss fight is one of the latest gameplay features that we are still experimenting with. Despite the fact that we rejected boss fights earlier in the development process we are really excited that we put this element back into the game. Finally we arrived at the point that we can proudly say “THIS is Caromble!”.

P.S. For those wondering what Arkanoid’s “DOH” means. If my Google skills are okay it’s an acronym for ‘Dominator of Hours’. I guess this knowledge will score you some nice points in your next video game themed pub quiz!