1. Caromble!
  2. News

Caromble! News

Caromble! Friday #497 - Clean Slate Leaderboards

Caromble! is still in Early Access. This means that next to adding content we are also still changing levels and adjusting gameplay. Because of these changes we think it is fair to *someday* reset the leaderboards and create a level playing field.

Fast forward to today.

Problem

That *someday* came a bit sooner than expected. We made a mistake in the Steam leaderboard configuration: some levels were set to measure seconds instead of milliseconds.

Because we cannot find a way to fix this. The only 'fix' is to reset the leaderboards.

Clean Slate
Today we have reset the leaderboards!

The timing of this is a blessing in disguise because we were already planning a leaderboard reset. Hopefully, you agree that this is fair.

We are thankful for your support and understanding!



Wall of Fame
VanAlphen deserves a special mention for topping most of our leaderboards. Good job! To celebrate your victory we would like to share a Steam key with you. Give it to someone who might make a worthy competitor. Please send a mail to [email protected] so we can set you up.

Here is a screenshot of one of the leaderboards he owned:



Happy gaming!

Chapter 5 out now! Also features Mac support.

We are very excited to announce we have just released the 5th chapter of Caromble! on Steam Early Access!

Chapter 5 introduces a new Arkatron, the Ball Direction Shooter*, 4 new story levels and two new skill levels. On top Caromble! finally runs on MacOS X.

We have been working on this chapter for a long time, and we are very happy to finally share our work with the community.

As ever, we are very curious to hear your feedback!

https://www.youtube.com/watch?v=aD-pqhK33ww

* Yes we are open to naming suggestions.

The ball is still rolling...

We may be quiet from time to time, but rest assured that the ball is still rolling.

We will have something concrete to show in the very near future.

And here are some sketches for the epic final levels of Caromble! that we are working on for a bit later.

Caromble! Friday #474 - Our Procedural Texture Workflow

A simple container-crate was one of the first objects I approached and did tests with to figure out the style and working approach for Caromble. It has stayed as this, although the game evolved to more of a line-art style over the next years. Time to bring this one up to date.


First, here you can see the original texture I created back then. I tried pencils to draw the details, which gave a nice look in black and white.


The first texture, done with pencil on paper and scanned.


But on the final object, when adding color, it’s actually a bit hard to see. Mostly you would not even get this close. Additionally (and this weighted even more in the decision), it was a lot of work. It’s hard to get the inevitable digital fixes to look exactly like pencil. Imagine cutting and rotating a piece – the parts would not have the same direction of the hatching anymore.


Screenshot from the game, with a color overlay on the texture.


For better comparison, I’ve made a more up-to date real-time shot of the asset. As you can see – with more effects like reflections and normal map shading, it’s even harder to notice the style.


And here is the updated approach – with just a black pen as base. There is a bit analogue detail in there, like irregularity in the lines, but it’s more subtle and easier to move around.


The new texture – this time done with Substance Painter, with some tweaks.


In an earlier posting, I described the procedural workflow for these 3D assets. A lot is automated – and then I go over and do manual tweaks. Later the programs help me to create variations like different colors or damaged stages, often with just one or two clicks.


Here is the new version with a texture based on pen line-art. It does have an updated normal map, and the effects, but the line-art shows.


The damaged version – it’s naturally even more noisy, but still reads as stylized.


Furthermore, I generate color variations. Currently as separate textures – though we may switch to a shader that allows the programmers to change the color on the fly.

All objects have this style, with old objects being updated. I have a series of asset-shots on the Caromble blog, to show them off.

Caromble! Friday #473 - Our Procedural Texture Workflow

Since we're working with a small team on Caromble!, We have to find ways to optimize the work-flow. In the beginning I did a big degree of the art analog - with pen and paper. But in recent months I've set up a very procedurally. Basically keeping the style but letting the computer do the work for me. Here I'll describe in layman's terms some steps of how I go about it.

I should first describe what procedural art means. You can think of it as the artist not doing the actual artwork anymore, but describing rules to the computer that it then executes. This has some disadvantages: it takes longer, and needs a different skill set that you have to learn (e.g. knowing how to program is useful). The upside is that you can then just tell the program: Do some more variations. So the more assets you need, the more the initial effort will pay off.

A specific twist in my use-case is that I'm trying to emulate a unique style.

Let's first take a look, of what a final object looks like:


Starting out here with the final look of the diesel locomotive, so you see what the target look was. It has a bit of a comic style, but still shading and some little details.


Five years ago, there was not much in usable procedural tools out there. Now tools like Substance Painter became essentially industry standard. A lot of texturing-work you once had to do draw by hand in Photoshop - a tool that was made for ... well, editing photos - you get now done near automatically. With Painter you can for example just take a 3D object, and drop a material like "wood" on it, and *boom*, your asset looks like made from wood.



A working view of Substance Painter. You can see for example the swaps on the side that I could drag on an object to give it a specific material.

Painter is in essence made for painting details onto the 3D object - so here is the final result I export and then use in our game engine.
For the actual process, the program first calculates various properties of the 3D mesh. These I can then use to create rules - like "where the object has little hidden corners ... make it more dark, to simulate shadow". Notice how this is a flexible process. Depending on the object, I could also say "put dust in these hidden corners". Here is the object with this calculated data projected on it - in this case it's called Occlusion-Map.

A map that shows shadows on the object, called Occlusion-Map - like how it would get darker in corners. It makes the object more readable.

Another such map shows me the elements of the object. It fills them with flat colors, so that with just a few clicks then I can define unique properties for an element.

This map automatically color codes elements. This way I can then easily say "make all girders yellow".

Other examples are a map for showing the thickness of elements:

For this thickness map, the computer automatically calculates every element that is thin (and becomes black here) or thick (white)

Or the location:

The position map is a bit harder to read - but you can see for example, how in one corner everything becomes red. This way you can tell the program for example: "Color everything that's on the bottom in a certain way".

Specifically for my use-case, a map showing the edges is useful.

Here is the "Curvature-Map" - it shows edges that point outside as white, and inward pointing ones as black. I used this one as source to create the first step of my texture.

After all, my style has black lines that mimic how in comics elements are separated - which I try to make look like simple ink line style. Using the map you see above, I told the program to automatically draw a black line on all inner and outer edges. Here is the result.

This outline is completely automatically generated - I told the program to add some distortion, to have more natural look.

It all still needs a more detailed artists input. In the following step, I go in and add by hand all details that the program by itself can not know. Like that locomotives have little lines and exhausts.

I went in and painted in the 3D view, to add specific details like lights.

Using the earlier mentioned Position-Map, I then add variation to the surface.

This step is now automatic - it adds variation. I'm using the height information from the earlier layers, to tell the program: Add more damage at the bottom (as there would be more dirt and such on a train)

I can then easily color it all and export the final result - in this case the flat map with all color details.

The actual texture in the flat view.

There are some more twists and turns to it all, for example Normal maps. These are nowadays used in all 3D engines, to show the shape of small details on a flat surface. But for sake of brevity I'll skip some finer points.

The Normal-Map - it shows the 3D engine what 3D shape the smaller elements have. Again, a lot is automatic - I've put for example a wobbly structure on it, to make it seem a bit damaged.

With this result I can use another procedural program, called Substance-Designer. I can then process the export images and create new sizes and color variations with one click.

I use Substance Designer to take the base texture and automate the creation of color versions.

[caption] These are colors I let Substance Designer create for me.

Another such program is Houdini.

This is a damaged version, which also includes some distortion of the 3D model, which I do in Houdini.

And just as an example, here is a completely different object - but since I could just reuse the rules I've set up for the train, most of the result comes for free.

It's a little cabin/exit (kinda like one you would see on a top of a building). It has all the style-elements used for the train, just adapted.

Again, thanks to the automation, it's just one click to get all these color versions.

The damaged version of the building could use the same procedure as the train - with only some adjustments, so that chipped paint for example wouldn't expose metal, but rather concrete.