Caromble! cover
Caromble! screenshot
Genre: Indie, Arcade

Caromble!

Caromble! Friday #403 Level Editor

The level editor has been serving us faithfully for a long time. Like our game engine this is also a custom built project. The level editor has hardly seen any changes in the past months. You could say it works just fine!

Sometimes we are asked if we will also release our level editor. User generated content would of course be a beautiful addition to Caromble! and sharing this tool is one of those things we would really love to do. However, currently our level editor is not user friendly and undocumented. So without any investment on our part it is not ready to share. So far, the plan is to reconsider this feature until after the final release.

So why stir up this conversation? I just wanted to share my enthusiasm about this tool and give it some credit!

This is me navigating between different cameras in the editor:



Some details that hint that the level editor is not polished: the black circle is the camera object popping inside its own view frustrum, which is equivalent to blocking the camera lens with your own finger. The red-blue object is a placeholder graphic for the paddle. Why don't we use the actual object? I'm actually not sure why that's still the case :)

Happy gaming!

Caromble! Friday #402 Squashing some bugs

As outsiders correctly assume, indie game-development is a big rollercoaster of rock-and-roll awesomeness. And not at all about staying indoors while the weather is nice and fixing bugs. Not at all.

For me, this week's rock-and-roll awesomeness materialized in the form of euhm several bugs that had to be squashed, while being inside. Hmm.

Anyway, sometimes there is awesome stuff and rollercoasters and rock-and-roll. But today it is bugs. Glorious bug fixing.

It is a well known fact amongst developers that bugs enjoy laughing in your face. However, most of the times you just know that this must be so, without actually being able to see the bug laughing at you. So when I finally encountered a bug that was literally laughing at me, I wasn't sure what to think.



The problem was that at a certain point in our Prologue, just before the boss releases a power-up its head would make a jump. Just a small one, but annoying nonetheless. I 'fixed' that by always animating the head to a 'neutral' position before playing a new animation. However, now I head the problem you can see in the gif. The head would sink before starting the next animation… I figured the reason for that *had* to be that some other animation was also adjusting the position of the head. It had to be. Their effects would combine in some sort of unholy way and cause the sinking effect. Haha, I knew what to do!

It only took me an hour to carefully tracking which animations where affecting the top of the head of our boss at what time. And then another 30 minutes to come to a slow realization that there was no problem with the other animations. No unholy combination of translations. Just a simple oversight on my behalf. I calculated the translation vector for the head to move back to 'neutral', and then instead of applying that, I would animate the head towards the animation vector. To the less mathematically inclined, lets just say that makes as much sense as rotating something by a color.

At least by now I understood what that evil bastard was laughing at…

Caromble! Friday #401: Controller improvements

We had several people complain about the fact that we do not expose an option for controller sensitivity. The thing is, we played Caromble! with the mouse - always!

That was of course a mistake from our side: many people like to play the game from their couch or bed.

Therefore, I dusted off one of my PS4 controllers and used InputMapper to make sure my PC was detecting it as a 'genuine' Xbox controller:



After playing the game for a while I decided to make several improvements:

  • Add the sensitivity option for controllers (well duh)
  • Improve how we detect controllers and buttons - also fixes issues with Steam Link
  • Added support for Rumble/Vibration!


Coming weeks, I will continue to play with the controller to see if everything works as it should!

Caromble! Friday #400: Analogy with a charge shot in slowmotion and Steam Summer Sale

Steam summer Sale is here! Caromble! is 30% off now. Get your brick break on! Ok, now the marketing part is behind us, let's take a moment for a special milestone in Caromble!'s lifetime.

400 Fridays ago, the date was October 30, 2009. My days were filled with finishing my Master Thesis. I hadn’t even met the girl that is now my wife. Very few of the things I was doing regularly back then, I still do today. The very notable exception is of course Caromble!. Back then, we didn’t do Caromble! Fridays yet, in this particular period Tuesdays were apparently the day that worked best for us. If I recall correctly, Thursday nights were particularly interesting in town, and that was why we preferred game-development on Tuesday instead. Friday was much better suited for studying. It is important to have priorities.

It is strange to think, that we have been going at Caromble! for such an incredible amount of time. A friend of mine once called it ‘Breakout forever’ (it was just after Duke Nukem Forever was released), and that was several years ago. And you can’t blame him for saying that. Projects that have been in development for that long tend not to get finished. We haven’t always been very good at meeting deadlines either.

But all of that is factoring out our almost mule headed resolve into finishing the game. I picture our determination as a Caromble! charge shot in slow motion. Steadily, but oh so slowly we are moving straight towards our goal of releasing the game.


Because in all those 400 weeks, we have been slow, but we have never stagnated. The progress wasn’t always visible, but even when nothing seemed to be getting done, we were just laying the groundwork for more fruitful weeks to come.

With the Steam summer sale we have had an influx of new players, and that is always a great new impulse for us. Recently we have wrapped up work on some of the bigger features for the next and Early Access release, which we’ll bring 4 new story levels, online leaderboards, a new Skill level (which is a tower defense mini game), and numerous fixes and tweaks.

We still don’t know when it will be done, although if I have any say in it (and I will), it will be considerably less than 400 weeks :-).

Caromble! Friday #399: Proof of Life #2

After a short hiatus, the last few weeks turned out to be rather productive. Of course, the little fellows are unplugging my laptop's power plug as we speak, be compared to a few weeks ago that's a minor issue.

Since I knew I was probably sailing into calmer waters, I decided to take on one of the larger projects we had planned for coming release: Steam Leaderboards!

It proved to be a lot more work than I'd hoped for but I can proudly say that the majority of the work is done! The biggest issue left is that you guys like to have all sorts of emoticons and special characters in your steam names and our font rendering doesn't like that very much... But I'm already working on a solution and it seems I'll be able to smooth things out pretty soon.

So here it is, my second proof of life!


In the final version you'll be able to compare your times/scores with your friends or the rest of the world!

Caromble! Friday #398: Flowing to Git

Like every other software development team we use version control software to manage changes in our source code and other computer files. For years we have been using Subversion (SVN) as our version control system. In recent times we transitioned to working remotely; as was mentioned in our previous post. Because of this change in the way we work, we figured it's better to switch to Git as our version control system.

Workflow



In real life we could sit next to each other for code reviews and working in parallel was easy because communication was easy. Using SVN worked fine. Today, we have to orchestrate this source control workflow a bit more and our experience with Git is that it's better up for this task. The flow with "branching" (changes that happen in parallel along multiple branches) and "merging" (integrate these changes) feels more natural. See this example of a Git branching and merging workflow (a.k.a. Gitflow) where each node represents a set of changes:


Source: A successful Git branching model by Vincent Driessen.

GitLab



We chose GitLab as our Git hosting service because it's free and it offers a nice web interface, especially for remote code reviews (through the "merge request" feature) to easily manage our changes and keep up the quality of our work.

Migration



To migrate from SVN to Git we followed this nice tutorial from Atlassian: Migrate to Git from SVN. It took two days to migrate our Caromble! project, but we're glad we did this! We're back in a better flow.

Happy gaming!

Caromble! Friday #397 Getting the job done

Getting the job done is hard. In just three weeks time we'll celebrate the 400th Caromble! Friday, and we still haven't finished the game yet. Admittedly, we are not 100% clear when the first Caromble! Friday was exaclty, but 400 probably isn't that far of the mark.

As you are undoubtedly aware, a lot of things have changed in the personal lifes of several of our team members recently, and those changes are not without their impact on the way we work.

We have effectively moved from a team that worked together in a single location (ok, the office was actually a kitchen table, but that still counts), from a team that has to work completely remote. And on unpredictable hours as well. That is not necessarily an easy transition.

A lot of things that we got for 'free' by being in the same room every Friday are now quite hard. For instance getting time for all the chit-chat that is so essential for productive co-operation is suddenly a thing you have to plan. And the same goes for discussing the little questions you might have when developing.

But things are not fun if they are not challenging, so we are happy to embrace all of this unplanned extra fun ;-).

We are making a lot of changes to the way we work, so that we may stay productive and at the same time still have fun while working on the game.

We try and use productivity tools such as Trello and Gitlab where we can. These tools can greatly structure the discussions you have about various topics. It turns out that Slack is also quite useful, and whatsapp maybe not so much.

Another thing that we cannot delay any further is creating a marketing plan to guide us through the final stages of development towards the final release.

So indeed, while we have not produced as much visible output as we wanted to at this point, we are still very busy with the game.

To conclude this post, I have two images. Of course an image can be worth a 1000 words, but the first image I'll share will communicate at least two messages:



The first message is of course that Defender will be a new awesome skill level to be included with our next release. And the second one is less literal and shows that we'll always eventually get the job done.

Ok, and my second image is perhaps a bit cheesy (cheesecake?), especially since I'm not exactly immune to spelling mistakes myself, but still, I could simply not resist making a bit of fun about Peter's spelling mistake in his last post, and showing an image about some actual peace of cake...


Caromble! Friday# 396: Proof of life

As some of you might know, I -Peter- became a proud father of two twin boys nine months ago. Before that, I had to split my time between my day job and Caromble! (and a whole bunch of other stuff like friends/family/household etc.). Which, in hindsight, was a peace of cake!
But since August I have to take care of these little Caromblers as well (yeah they still suck at the game). While I can easily say it's the best thing that ever happened to me, you might not be surprised that they come with there own set of challenges and achievements...

I was planning to write this blog post two weeks ago but the Caromblers discovered something new: Tag - Team - Tournament. To that day, they were doing a fine job in keeping me away from my computer, making sure I got enough exercise and - most importantly - preventing me from oversleeping.
But as the little fellas are growing older and wiser, they are optimizing. See, there always were some moments were I could easily escape their tight schedule: they slept - a lot! They must have realized they could to better. Why sleep at the same time? Why eat at the same time? In fact, they must've realized they could split there time for every-ting...
As such, the last two weeks it was back to survival mode. Trying to get a little sleep where ever I could. Therefore, my activity on Caromble! was on a all time minimum.
Luckily, it proved to be hard work for the boys as well, as we've finally managed to get them back in some sort of manageable schedule.

So here it is, my proof of life! I'm back again and ready to Caromble!!

Caromble! Friday #393: Toyboxelate

The retro video game era inspired Caromble!'s gameplay and it's something we occasionally refer back to. One of the associations with "retro" is the lack of many of pixels. Most of our visuals don't lack those, but one of our power-downs does.. behold pixelate:



Making this effect is rather easy and you can try it out yourself! (thanks Thomas D for putting this online!)

Idea



Whilst thinking about this effect I came up with the idea to use our toybox objects to create pixelated images from normal pictures.. and aptly named it toyboxelate!

Research



Toyboxes are one of Caromble!'s most common objects and they come in a variety of colors: red, green, blue, yellow, white and black. This raises the question: How to convert an image to our Caromble! palette? I searched the internet and found a similar question: How can I convert an image's pixels to actual LEGO colors?

In short the answer was to follow these steps:

  • Download GIMP.
  • Scale the image to an appropriate size.
  • Create the color palette you want to convert to.
  • Apply the color conversion ("Convert Image to Indexed Colors") using your custom palette.

Sidenote: I'm wondering if this is a common technique to create pixelart? I am no artist, but a programmer, maybe I should just ask our teammate Thomas S :-)

Application



Now that the research is done. Let's create some toyboxelated art!

I followed the steps above and I also applied some dithering in the final step to reduce distortion and get a better result for this guy below:

Original image


Converted image


Toyboxelated image—an ingame(!) render using many toyboxes:


Disclaimer: I've should have run this through our graphics department to make it more appealing (use better lighting for example), but I am just happy with the idea that toyboxelate works programmatically and I leave it to the reader's imagination that this looks awesome! ;-)

Tip: squeeze your eyes for an even better result!

Future work



Cool, right? This toyboxelate idea isn't used in Caromble! yet. However, it was simple to implement and it might come in handy. It's a nice tool that might be used to generate level parts; I definitely would like to see this added to our level editor, especially if we decide to release it to the public. And, we can use this for performance testing. For example, I started eagerly and created an image which required thousands of objects. But my machine wasn't up for this task.. So I toned down and used smaller images. Using toyboxelate for performance testing is reserved for another post.

So that's that for this retro inspired sidequest!

Happy gaming! Ray

P.S. Can you think of any retro elements (gameplay, art, etc.) you would like to see in this game? Let us know!

Caromble! Friday #392: A new welcome and a goodbye

This week's announcement we want to use to celebrate the birth of Pascal's daughter: Elise. She is now 4 weeks old and a great addition to Earth already. Caromble! welcomes Elise onto this world and we love her already.

This is already the 4th Caromble! baby this year and as you can imagine this has some effect on the development speed. These life events, together with the fact that we only work on Fridays makes the progress a bit slower than you, and us, might have wanted. But bear with us!! Development is still going strong and we are closing in on the Chapter 4 release! We're 8 years in this project already, so it's a serious part of our lives and it will stay that way!

Unfortunately we also had to say goodbye to our latest addition to the team: Frank Meijer. Frank took care of our marketing and PR and this helped us to have more focus on the development. He found a great new job at Utomik and realized that he couldn't combine it with his efforts for Caromble!. We want to thank Frank for all of his efforts for Caromble!. Meanwhile, we realize that marketing and spreading the word is essential to find our audience.
If anyone knows someone who is interested in talking to us about marketing and PR and looking for a fun challenge, please contact us!

To share something that we are currently working on, check this video:
https://www.youtube.com/watch?v=J4Q67o6WU5E
At EGX in London, where we were with Caromble!, Thomas encountered a strange bug in the Race level where a ramp didn't give enough force to the ball. It was very difficult to reproduce, but with this custom edited variation on the race level he finally managed to reproduce it. Now we will try and find the cause. #bughunt

Thanks for reading and keep on giving your feedback in the discussions and spreading the word on Caromble!. You know what?!
Any (positive) tweet about Caromble! that gets more than 50 retweets until next Friday receives a steam key.
That's how we roll (pun intended)!

Talk to you soon!


With Caromble! love,

The team