Caromble! is a fresh brick-breaking game in a 3D, physics-based dystopic world with an unique art-style and epic gameplay features you wouldn’t expect in a brick breaker.
It is created by Crimson Owl Studios, a small part time indie team that comes together every Friday to develop their first game. Caromble! will be released in 2015 and will be available on PC, Mac & Linux.

Subscribe and receive Caromble! updates:


Game Development Blog:

Prototyping the Commercial Level Art

We’re now starting doing the commercial chapter of Caromble! We have test-levels so far, that show the puzzle ideas we’ll use. But they need a lot of tweaking. Not just for the gameplay, but also for the art.

The art assets for that new area are just dummies right now too, so they don’t look up to par. It’s a common practice to do called Prototyping. That way ideas can be tested without spending big production time which then might be scrapped if the ideas don’t work out.

3D Blockout for Prototyping

This is the earliers blockout stage – just using literally a block shape and some texture from another mesh. Not a beauty – but quick to do.

3D Blockout for Prototyping

After the basic usage was tested in the game, I made a better mesh – and created an UV texture mapping (with a checkered UV test texture).

3D Blockout for Prototyping

Then I used an earlier concept to drop in a very basic texture blockout. This will represent the final result much better – but a real texture with normal map and other effects still has be created.

There is work left to do on this asset – but once our team tests this in the new levels, I can much better tell if the idea works. All those steps help previewing the result without committing too much work too early. And there are still quite some assets to go over – to keep track I place them on colored blocks.

3D blockouts overview

The Commercial-Area assets on color-coded floors for easier working. Blue for the ones that are still in the early blockout stage. Red is for the ones that still need the final texture pass. And green is for completely finished assets.

Today was my (Pascal here) first of 4 Caromble! Fridays where I will be working all alone . Thomas D. is traveling through Taiwan with his girlfriend. Peter and Raymond have other reasons why they are not here, but I think it’s better if they tell you themselves why this is the case. @Peter and @Raymond: the announcement for next week is for you guys!

Ramp issue fixed
This week I finally found the cause of the issue where balls got stuck inside the ramps, which we mentioned previous week. It’s a bit technical, but here it goes anyhow:

By removing the plane floor under the ramp, we couldn’t reproduce the issue anymore which pointed us in the right direction. Turns out that our engine did something not quite right when handling collisions with multiple objects over which the ball should roll. Our code sets the speed of the ball directly in this code (overruling the physics engine). Now if the ball collides with 2 of these objects, only the second object has an influence on the ball as it overwrites the speed set by the first object. In case of colliding with both the floor and the ramp, it could be that the floor collision was handled as last, overwriting the effect of the ramp.

We now fixed this problem in the current build!

Reaching an audience
I think that this was the last bit of programming I will be doing for quite some time as we need to focus on marketing now. We are programmers (+1 artist) and we are not so much trained in the art of marketing and reaching an audience. However, it is very important to reach an audience as that will result in revenue, which in turn allows us to spend more time in making Caromble! better and perhaps even making a new game after this. Furthermore, we get happy feelings inside if people play Caromble! and enjoy it, You can make a great game, but if no one has heard of it, what’s the point?

So we are focusing on reaching an audience for the coming weeks. It seems that it’s a bit harder to get noticed as an Early Access game. Written press seems especially less interested in that. So we are mostly focusing on youtubers. We hope that this will result in many Let’s Play videos or Twitch streams to reach players that might be interested in Caromble!.

Do you have any tips for us to reach players that would like Caromble!? Do you know curators, youtubers, blogs or individual players that are especially interested in brick breakers or Early Access games? Let us or let them know. We can use all the help we can get!

Arkanoid tribute
What was nice today is that PixelProspector has mentioned us in a list of 3 games that are tributes to Arkanoid. We are mentioned together with Wizorb and Shatter, which are nice titles to be standing next to. You could help us by retweeting this tweet.

pixelprospector

Caromble! Friday #362: Story & Characters

Thomas—the artist—is completing the final art assets for Chapter 3. The rest of us are adding new sound effects and art assets to the upcoming prologue level. This will be the first level that new players will see. This way we can show a glimpse of the upcoming gameplay and give an introduction to the world of Caromble! and its main characters.

In Caromble! you fight the epic battle against your red alien nemesis. This is a very simple version of the story we have in mind. We know that it’s not necessary to communicate every detail of a story because people will create and experience their own stories inside their minds. What we do want to communicate is this battle between the paddle and the alien. In the prologue level we like to emphasize this duel with a classic “versus screen”. These are some iterations:

Artist’s first sketch

Artist’s first sketch

Programmer's feedback

Programmer’s feedback

Artist's latest version

Artist’s latest version

We have yet to agree on the names of our main characters. Maybe you already have created their names in your own mind?

Bonus question: What are those sentient beings inside the paddle’s spheres?

As we are nearing the completion of Chapter 3, we are taking care of some gameplay elements that could use some tweaking.

For starters, we have tweaked the collision shape of the paddle. It used to be just a box (say what!), but now it is a composition of 2 cylinders and a box. This makes the collisions slightly more satisfying and aligns them better with the graphics.
Furthermore, we wanted to have more control on the spin ball effect. To do this we have changed a part of the algorithm. At one point we had this peculiar situation:

Although it’s quite funny, we have made sure this cannot happen anymore.

These 2 features give a better feeling of control of the paddle and we hope you agree. Let us know if you have any suggestions or feedback after we have released Chapter 3 (including many tweaks, bug fixes, optimizations and a prologue story level).

We have made quite some progress today. We can see this by looking at our Trello board, which we use for Caromble!. In the following image you can see our favourite list: Done. Today’s completed tasks didn’t even fit on one screen!
Our Trello Board

Regards,

Crimson Owl Studios
Crimson Owl Studios

Yesterday we had our 350th Caromble! Friday. Wow! Luckily it’s not just a special day because of this number, but also because we have completed the creation of the skill level: Race!. A level where the goal is to reach the portal as fast as possible, whilst manoeuvring your ball around and over obstacles as it were a platform game. Lose your ball and you can say bye bye to your highscore.

Race has been an idea of Peter for a very long time. He believed it would be the coolest skill level you can imagine. We were skeptical. It took incredibly long before he started developing it and even in development it just seemed like, meh…

Yesterday Raymond and I (Pascal) have wrapped up the final things in the skill level and when I realized that I was screaming and bouncing on my chair whilst trying to get a highscore.. or no… just to try and reach the end of the level, we realized that Peter’s dream has become reality.

Race is my favourite skill level for the moment and I’m quite proud of my highscore of 1:17. Here is a video of one of my runs where I reached the end. The part with the charge ball in the end gave me a stress level I hadn’t experienced ever before.

April Fools & New Boss Model

So yes… we did our first April Fools’ prank since we’ve started making Caromble!. Of course we will not introduce Pay-Per-Ball. The game remains a premium title. We did get some serious reactions to this, and also some fun responds.

The suggestion to ask 0.99 per ball because of the Dunlop Ball logic was very amusing.

Dunlop balls

Dunlop balls

We are currently working on several stuff. Thomas D. is working on the implementation of some new Sound effects. Raymond is working on the Boss Fight of chapter 3 where you need to use Arkatron #2. Peter is working on a Skill level called: “Race Race Race”, without using the ‘Race card’ of course. Pascal is working on the Prologue story level, which introduces both the Protagonist and Antagonist and where the epic battle for Earth commences. Thomas S is working on the new boss model, which gives it more character:

Like A Boss

Like A Boss

We’re still looking or good names for both the Protagonist (the Paddle) and Antagonist (The Red evil Boss-thing). Do you have any ideas?

As with every game on Early Access, there is always a risk that a game may change drastically during development. Some games even get abandoned before their planned release date.
The changes in how games are sold over the last few years and the bursting of the indie game bubble mean that we’re fishing in troubled waters.
Of course, the last thing we want is to abandon a game we’ve worked on for so many years. But the truth is, to be able to finish the game and make Caromble! the game we’ve always envisioned it to be, some drastic changes are necessary.

After a long discussion within our team we are proud to present to you: Pay-Per-Ball. What does this mean for the game?

  • First of all, Caromble! will be free!
  • Secondly, balls that are lost in the game can only be regained by buying them in the In-Game Ball Store (IGBS).

Balls can be bought individually or in Ball-Packs. The more balls you’ll buy, the cheaper they get.

To compensate people who already bought the game, we give away a pack of 100 balls to everyone who currently owns Caromble!. We are currently in discussion with Steam about the pricing of a single ball. What do you think? What should be the price of a single ball?

We hope you understand and that you’ll have many more balls to play with.

Sincerely,

Crimson Owl Studios

UPDATE April 8, 2016: This post was an April Fools’ joke 😉

Balls

Hi fans, friends and random people who stumble upon this website accidentally,

This week we have finally released Chapter 2 onto Steam. Chapter 2 introduces Caromble!‘s first Arkatron with the special power: Focus! We are very proud of this milestone and hope you like the 4 new story levels and 2 skill levels as much as we do. We sent around a press release to announce this milestone and you can find that one below. We are currently working hard on finshing Chapter 3 and hope to release it soon! Let’s get ready to Caromble!

Greetings from the Crimson Owl Studios team

Caromble! Chapter 2 is now available on Steam Early Access!
View this email in your browser

Caromble!

Caromble!

The Brick Breaker over 6 years in development

 

Watch the Video
 ♫ This is Caromble!: A fresh new take on the brick break game! 

 



This is Caromble!

This is not just another brick breaker game. This is Caromble!: a fresh new take on the brick break game. Fight evil with physics-based destruction, puzzles, explosions, unlockable skill-levels, power-ups, mayhem, boss fights, more explosions, further puzzles, speedruns, superscore medals and much more… Visit us on Steam

Our story: One day. Every week. For over 6 years.

Our story is: high productivity, slow progress and being very persisting. Why we still work on it? Because we love it! We love to transform this retro genre into something exciting and new, hopefully you will love it too!

We are Crimson Owl Studios, a team of 5 one-day-a-week indie game developers – with regular jobs as software developers and a professional artist – working every Friday for over 6 years on Caromble!.

The Road to Gold

Last year we brought our development version of Caromble! to Steam Early Access. Chapter 2 is our first major update. The full release will contain six chapters; which will be released somewhere in 2016. However, our planning skills are not top-notch… If you want to know more about the reasoning for this Early Access adventure, please check out this absurd team video!



We hope to get as much feedback as possible in Early Access to create the brick breaker you’ve always dreamed of! Visit us on Steam

Thanks and best wishes,



Crimson Owl Studios
Caromble! Arkatron
Chapter 2 introduces Arkatron #1: Focus
Copyright © 2016 Crimson Owl Studios, All rights reserved.


Presskit:
caromble.com/press


Email:

info@caromble.com


Website:

www.caromble.com



Want to stop receiving these emails?

You can unsubscribe from this list

We just got a nice question on twitter on how much time it takes for us to build an area. That made us realize that perhaps it would be nice to take this opportunity to explain a bit about how we make Caromble! and also why the game still isn’t finished.

Making a story level

Every story level has four parts set in the same setting. There are three normal areas (you could maybe call them a mini-level), and the action ends with a boss fight. Depending on the level, this can be in a different fourth area or you will encounter the boss within the last area before the fight. Each of these smaller areas will typically feature a specific part of the Caromble! gameplay. So you might have a bit of a puzzle area, then some destruction and maybe finish of with an area that will highlight the surroundings. These three areas usually have some physical connection, for instance they might be set inside each other (a bit like a Russian matryoshka doll).

But how long does it take to make such a level??

Well… It takes quite some time actually.

The process is pretty much as follows.

  1. First we prototype some gameplay and the gross layout of the areas inside the level, this takes 2-3 days of work.
  2. The next step is that we all play through these areas, and probably at least throw out one of ‘m. Playing through the level and making the changes according to the feedback takes roughly 2 days of work I guess.
  3. But now the level still doesn’t look that awesome. So we add some background objects, and arrange the setting of the areas to connect the areas in some manner (for instance make them look like part of a big machine). This can take anywhere between a few hours and a few days, depending on who made the first prototype.
  4. Changing the look of the level might have altered the gameplay too, so we do another playtest and make some more changes. This will hopefully not take much more than a day.
  5. Finally we tweak the ball speed in each area and the occurrence of the different powerups types to fit in in the difficulty arc of the overall game.
If you know how it works, and don't forget to save often, it's quite a good tool! :)

The Caromble! level editor

Taking in mind that we have one day a week to work on the game, the answer is that it can take anywhere between four weeks to three months of actual time between the first idea and having something release worthy. If we had no other obligations we could do it in 4 – 12 days. By the way, this is the time it takes for one person, not for the whole team. So with sometimes 4 people working on levels our velocity gets a combo multiplier.

The good news is that almost all of our 24 levels are at least somewhere in step 2. And quite a few others just need a bit of graphical love.

So when we’ll release chapter two (in the very, very foreseeable future) 8 / 24 levels are done (pending community feedback). Four more are in stage 3-4 and the others are somewhere between 2 and 3.

Making a skill level
A skill level is a small challenge taking place in only one area and is the type we can make the fastest. These can be unlocked by winning medals in the story mode. We have 3 types of challenges:

  1. Score the most points in a given time
  2. Finish the challenge as fast as possible
  3. Survive as long as possible

We have a skill level framework that allows for quickly setting up a skill level. But, most of these skill levels do require some custom code to be written, although often not very complex. For example to spawn an extra ball when a box is destroyed in Ball Frenzy or shooting balls in Spin Master.

For the graphics, we have a set of art objects, floors and skybox specifically designed for these skill levels. The number of objects in this style is far smaller than those in the two story styles (industrial and neon-city) and this makes it easier to quickly setup the design of a skill level.

The main challenge for us as designers is to come up with a good idea for a skill level. But we do find that once you pop, you can’t stop. We are working on a small tower defense skill level, a shuffleboard skill level and Peter has promised to make a race skill level for years now. Furthermore, once our special powerups are released, these ingredients make for even more interesting skill levels.

Survive as long as you can, but the walls will Caromble! ehh... crumble :)

Wall Safety skill level

So I think most time goes into designing the level in your head and once you start building it should be able to finish it in 16 hours after which the other team members will play and give feedback, resulting perhaps in another 4 hours of work.

So that would be 3 days of work (and thus about 3 weeks real time) in the most optimistic scenario.

I hope this has given you some insight in our development process. This blog only tackles the level creation parts, but we are also optimizing our engine, fixing bugs, adding new visual effect, maintaining our steam page, facebook and blog, send an occasional tweet and try and find some spare time to contact press. To do all of this we have only one day a week, so this might explain a bit why the development of Caromble! is taking so long (over 6 years already). But please, bear with us. We’re getting there and we think it’s gonna be more awesome every week. If you want to be part of this process, consider participating in our Early Access. We’d appreciate it!

Last Friday we have finished our implementation for controller/gamepad support. This means that in the next big content update of Caromble!, you can choose your favourite input device out of the big three:

You can now control the paddle with gamepad, mouse or keyboard! More input devices are on their way...

We will do a beta of our first big content update next week on Steam Early Access, and if that won’t bring up any major issues, we will release shortly after. Get ready for Chapter 2, full of explosions, introducing the 1st special powerup (!), two skill levels and support for your favourite gamepad.

Controlling the paddle is the main type of interaction in the game, so this should feel as smooth as that actor in a hot spice commercial. Therefore, during the implementation of gamepad-support, we also tweaked the mouse and keyboard controls to make those better. The implementations of these three input devices are fundamentally different and I would like to use this blog post to explain these different methods and tell you how we achieved the best result for optimal control of your paddle.

In the following snippets we have a few parameters:

  • deltatimethe time between the current and the previous frame; to make the controls framerate-independent.
  • paddleSpeed: this parameter is necessary because of the way we set the paddle position in code. Each level has a left- and right-end position of the paddle. The movement of the paddle can be between these two extremes. A value [0, 1] describes the position of the paddle with 0 as the left-end and 1 as the right-end. If our input devices would work on this value directly, then the paddle speed would be depending on the distance between the two end-point. Instead, we want the speed to be described in terms of paddle-size, which is what you would expect. The value of paddleSpeed is calculated based on the distance of the end-points and the paddle-size and is thus used to make sure that we can control the paddle in terms of ‘move 0.2 * paddle-sizes to the left’, instead of ‘move 0.2 of the distance between the end-point positions of the paddle’.
  • movement: the result of the functions on the input data and is applied directly onto the paddle to map its position to [0, 1].
  • curSpeed: this variable keeps track of the speed of the paddle when using the keyboard or d-pad. We update curSpeed every frame, so it needs to be stored.

I like mouse control the mostThe mouse has the most straightforward implementation. We want the displacement of the mouse to be mapped linearly to the displacement of the paddle, resulting in its new position.  All that is applied to this displacement is a scaling factor. This gives a feeling of direct control. You have the freedom to move the paddle over large distances quickly or apply small displacements in a very precise manner. Here is the code:

float moveX = mouse.getDeltaPositionNormalized().x;
movement = (float) (-16.0 * paddleSpeed * moveX * deltatime);

Because the input for the mouse is provided in pixels, we use getDeltaPositionNormalized() to normalize for the screen size. You want to have the same behaviour in a 1280 x 720 as on a 1920 x 1280 screen. This function also applies the mouseSensitivity setting that can be set by the player.The biggest advantage of the gamepad is that you can really 'hang' on the couch with it. I love hanging...The main difference of the analog stick on a gamepad with the mouse is that it has a limited range of positions. It can be tilted to the left and to the right in a continuous matter, which will produce an input value of [-1, 1]. How can we use that to control the paddle? If we would map this value directly to the position of the paddle between its left- and right-end, the resulting speed and behaviour of the paddle would differ per level (some levels are very wide, like a platformer game; #waitforcaromblechapter3). This is not what we want, so instead of using the analog stick value to set the paddle´s position, we will use it to set the paddle´s speed. Let’s imagine moving the paddle to the right. Keeping the analog stick at 0 will result in a speed of 0. When we put it completely to the right, corresponding to a value of 1, we want a speed of, let´s say, x, which is normalized as described before (dependent on the paddle-size and not the distance between the ends).  Now we can achieve all values between [0, 1] to give the paddle the speed we want, which also gives us a lot of control. Our first idea was to map [0, 1] linearly to [0, x], but as it turned out, it feels nicer if we apply an exponential mapping. So a value of 0.5 does not map to 0.5*x, but more like something as 0.25*x. This allows to have precise control of the paddle when you move the analog stick only a little.

There are still a few more things we have to take into account. Unfortunately, if you release the analog stick, it does not return 0 as its value. Sometimes it ‘sticks’ a little, which can even result in values around 0.2 when the analog stick isn’t touched. To fix this, we introduce a deadzone. We choose a deadzone of [-0.2, 0.2], which means that all values within this range are mapped to 0. In this context we want a value of 0.2 to correspond with 0 as well, so we remap [0.2, 1] -> [0, 1] and [-1, -0.2] to [-1, 0].

Even after introducing the deadzone, we were still not satisfied with the achieved precision when we wanted to move the paddle only a little. In a brick breaker game like Caromble!, this precision is crucial, so we have added something that we call precision mode. When the right shoulder button is hold down or the right trigger is pressed over halfway, we enter precision mode. In precision mode we scale the applied speed with a value of 0.35. Here is the code:

// amplitude is in the range of [-1, 1] 
float amplitude = actionList.getAction("AnalogStickHorizontal").getValue();
// precision mode if one of the right triggers is pressed
float precisionScaler = 1f;
if (actionList.hasAction("PaddleMoveFocus") || actionList.getAction("PaddleMoveFocusAxis").getValue() > 0.5)
	precisionScaler = 0.35f;

curSpeed = Math.signum(amplitude) * Math.pow(amplitude, 2.5) * 3 * paddleSpeed * precisionScaler;
		
movement = (float) (curSpeed * deltatime);

The introduction of an extra key for precise control works, somewhat to our surprise, great! When you need to move the paddle over a long distance you put the analog stick in its extreme. When you are close to your desired position you hold the precision button and you can place the paddle exactly where you want. Awesome stuff.
There are so many buttons on the keyboard that are not used with Caromble!. Maybe that's reason enough to find a prpose for the 'any' key
And then we have the keyboard; a bit old fashioned, but still a favourite to some players. This is a fundamentally different input device than the mouse and the analog stick. Where with the other two you have a whole range of input values, the keyboard provides… just two. One key to move to the left and one that moves your paddle to the right. It makes sense to map these keys to a certain paddle speed, but we would like to see the paddle move smoothly. More precise, we would like the speed of the paddle to be differentiable, meaning that it doesn’t ‘skip’ values. This is a property that the mouse and analog stick implementation also possess. We can achieve that by letting the two keys correspond to an acceleration of the paddle, which is applied until a maximum speed is reached. This means that the paddle starts moving slow, but while you hold down a key, its speed increases until a set maximum. As with the analog stick, we won’t increase the speed linearly, but exponentially. This provides more control when we hold the left or right key for a short time, which I use in a way I’d like to call ‘tap-tap-super-tap‘. This puts the paddle in the exact position I desire. When I release the keyboard key, the paddle decelerates until its speed is 0.
I mentioned the differentiability of the paddle-speed, but I lied a little there. When we switch from the left key on the keyboard to the right key, we want to move the other way immediately. At this moment we do not decelerate nicely, but set the speed to 0 and accelerate in the other direction.
Also, because we liked the precision mode so much in the gamepad implementation, we use the Left Alt key on the keyboard to enter precision mode. Here is the code:

float maxSpeed = paddleSpeed;
float acc = 20 * maxSpeed;
boolean hasMoved = false;
float factor = (float) Math.pow(Math.max(0, 1 - Math.abs(curSpeed) / maxSpeed), 2);
 
if (actionList.isDown(paddleLeft) && !actionList.isDown(paddleRight))
{
      if (curSpeed < 0) 
            curSpeed = 0; 
      
      curSpeed += factor * acc * deltatime; 
      hasMoved = true; 
} 

if (actionList.isDown(paddleRight) && !actionList.isDown(paddleLeft)) 
{ 
     if (curSpeed > 0)
           curSpeed = 0;
      curSpeed -= factor * acc * deltatime;
      hasMoved = true;
}
 
float focusScaler = 1f;
if (actionList.hasAction("PaddleMoveFocus") || actionList.getAction("PaddleMoveFocusAxis").getValue() < -0.5))
{
      focusScaler = 0.5f;
}

curSpeed *= focusScaler;
if (!hasMoved)
{	
      // decelerate to 0
      curSpeed *= Math.max(0, 1 - 20 * deltatime);
}

movement += (float) (curSpeed * deltatime);

Of these three input devices I personally like the mouse the most. I feel that it gives me the best control of the paddle. This opinion is not purely subjective; science supports it! Humans tend to find it easier to interact with position-control than with velocity-control. Furthermore, humans like velocity-control more than acceleration-control.

I hope this has blog given you some insight in how we approach the issue of paddle control in Caromble!. We are curious what you think of our gamepad implementation and hope you find it as smooth as James Bond. We have tested our code on these three gamepads, so we hope you have one of these three 😉

The left one is so old! It was also very sticky, but we don't know why...

Besides these three described main means of control, we are also working on a fourth input method: Intel RealSense. We will address this in a future blog post, but we can’t tell you when or if we will actually support this in Caromble! . The Steam controller is on our wish list as well. Hopefully we can get our hands on one soon!