Development update #9

We did it! The quest to make battle look and play awesome is over… For now! :) To celebrate we are turning our focus back to adventure. Well, at least most of us. David is still experimenting with cutting down the amount of movement frames needed for battle troops and Anders is fine tuning the final pixels for the Arleon troop lineup.

"Each barony must fund at least one Academy to enhance the technical exploits of our empire” - Official decree from empress Aurelia

Patrik, on the other hand, took the chance to do some network programming this week. We haven't had a working networking solution since Unity deprecated UNET, so we've been unable to challenge each other in the game for a while. But this week he finally got Photon Realtime into place and we can once again battle it out over the internet!

Kordian is still working on Arleon biome decorations for battle, such as this lovely conifer tree.

Christian has been revisiting Adventure and the overall visual language of the game – updating both HUD and menu panels. This makes a lot of sense, since the work he did for battle mode has evolved the UI a lot. Niklas updated the backlog and discussed improvements on how the team works, along with David. Furthermore he has also been setting up stuff to do for our new programmer Emil. Welcome Emil!

Christian has made modifications to the adventure map UI, to better match the battle look. Do you like it?

Finally, don’t forget to vote for which faction theme you want us to release next. Right now it is almost a draw between Rana and Doneria!


Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #8

Hello and welcome to another lovely Friday dev blog! Here in sunny Sweden, the skies are grey and a light drizzle is tapping on the window. Yum! Anyhow, this week I have been doing a bit of everything, but mainly focusing on playtesting and prepping for a meeting with our publisher, which happens today. We are presenting the current state of battle mode, and let me tell you, we are truly proud of what we have done these last two months. The aim has been no less than to deliver the best battle experience the world has ever seen in a classic adventure strategy game. How’s that for ambition?

Here is our new take on the Sassanid unit. Feel free to let us know what you think of it!

I pretty much had to drag answers from people this week, since everyone has been prepping for the meeting. Niklas has been implementing lots of new features in battle. Mostly regarding the user experience such as highlights, outlines and general mouse over behavior with tooltips. He has also been working on troop abilities and troop placement. David has been “juicing” the battle experience, making sure that things look and feel just right when you interact with them. Things like how a unit responds when getting his/her turn, getting hit, etc. These types of details have become increasingly more important to us over time, well, perhaps since David started? In the end, we hope that just interacting with the game itself will be a rewarding and immersive experience.

Felix is continuing his quest to create a distinct visual look for Donerian buildings. I think we are on to something. Do you agree?

Christian has been focusing on visualizing the troop placement and tweaking the battle hud. Patrik has made the battle grid stand out more, fixed our multithreaded pathfinder and also worked with troop deployment. Anders has been working with doing more battlefield elements and improving the troops. Kordian has been doing battlefield obstacles and hit/attack effects, as well as particle effects.

Our artists are slowly venturing outside the Donerian desert and into the Rana swamps as well. These are some early tests for Rana buildings. Long live the resistance!

Finally, the team is sincerely thankful for all the amazing responses we got regarding the Legion troop and the Arleon banner in last week's blog post. Believe it or not, we do read all of the comments. It would, of course, be impossible to create something based on everyone's input, but it gives us great food for thought and new perspectives. So keep it coming!

We are thinking about having portraits for buildings, just like we have portraits for Wielders. This is a test for Sacred Woods, a research-focused building for Arleon.

Next week, I’m thinking we might run a poll where you can choose between which faction theme you want us to reveal next!


 Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #7

To be honest, I didn’t think we’d be able to pull together a dev blog this week. People have been pretty much doing more of the same since last week so I didn’t really think there’d be much to tell you about. But here we are!

Personally I’ve been working with a lot of admin related stuff this week. Most noteworthy is that I signed a contract to get one more programmer on the team. We will work with a contractor that will stay with us at least for a few months, up until the summer. This will help us get more features built faster, which is great. I have also signed a contract with our composer to get a few more songs composed under the close collaboration with Carl. We have been getting a lot of positive comments regarding the music and we really want to double down on creating an atmospheric and immersive soundtrack.

Here is a new take on the highest tiered unit from Loth, a unit called the “legion”. Which one do you prefer?

The art team, which includes both our Technical Artist (Patrik) and our Art Director (Anders) along with several talented freelancers, is still hammering away at the battle grid. Getting the overall look and feel of the battle is super important to us. It should be immersive and moody, but still readable and encourage strategic decision making. I’m optimistic about us being able to reach that goal!

We are pretty much happy with Doneria, Rana and Loth, but still trying out variations for Arleon. Which one do you like best?

Another big part of the battle, besides the characters and environment, is the UI and UX. David has been focusing on the user experience, trying to make the game understandable to the player. Niklas has been implementing all the different states we have designed for the battle. As an example, one of the states is when you choose to inspect an enemy or friendly troop. What should you see when that happens and what information does the player need to know? Things such as special buffs, range, health, stats, etc. Another state is when you open the spellbook - which affects things like how and when should we use outlines on the characters, icons, and cursors.

At the same time, Carl has been doing his best to come up with varied and interesting battle grids that will challenge the players. He has also been working with our composer to create more music (I recently heard a new Loth-themed song, it sure was dark and moody!).

We are trying to find a visually distinct style for Donerian architecture. One early idea was to combine onion domes with medieval german style timber framing. Do you like it?

Finally, we’ve got a lot of opinions regarding the redesign of our Necromancer troop. We have read all the comments (I hope!) and are thinking of doing a new design based on the feedback. So keep it coming! The team is very thankful for all the ideas, love and constructive criticism we get!


Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #6

That’s right. Another week has passed and here we are. Devblog time!

Our designer Carl has had fun redesigning our essence and magic system. We've reworked many of the units in the game which has affected the line-ups in the factions. So using the essence system, he’s been mapping out the availability for different spells for the different factions. At the same time, he has had to make sure that the flavor of the spells also suits the flavor of the faction. Furthermore, he’s been working on the redesign of the buildings, build orders and how that impacts the spells.

Felix has been doing concept art for Doneria buildings, these two are just a small example of all the new structures that he has tried out designs for.

Felix has been doing concept art for Doneria buildings, these two are just a small example of all the new structures that he has tried out designs for.

The UI work for Christian has still been focused on the Battle, and specifically on the player’s interaction with their own troops, enemy troops, and spells. The first pass of all UI-elements has been clarifying all states and high-level UX to be able to work out how the UI should help and guide the player. A basic principle in this work is to only use UI when we really need it and when we can’t communicate the states or guide the player in any other way.

New cursors for combat. Can you guess what they all represent?

New cursors for combat. Can you guess what they all represent?

Meanwhile, Niklas has been working on the high-ground mechanics. He has implemented damage buffs & nerfs, which relates to where your troops stand on the combat grid. This is a fairly new feature that we hope will bring more depth and tactical choices to combat. Niklas has also started working on how to inspect troops on the battlefield for strategically important information.

A pretty clear example of how our character designe has changed over time: To the left you have our original take of the necromancer and to the right the updated version.

A pretty clear example of how our character designe has changed over time: To the left you have our original take of the necromancer and to the right the updated version.

Finally, the art team has mostly focused on the look and feel of the hexagons on the battlefield. Same stuff as last week you say? Why yes. Tricky stuff mixing 3D and pixel art and getting it just right. But it’ll be worth it, for sure!

Until next week, take care!


Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #5

We’re back! After a well deserved holiday, the team has returned in full force. We are still 100% focused on combat and things are shaping up nicely. 

Perhaps you are wondering why we haven’t shared any work in progress screenshots of the combat? The answer is simple, we want to reveal a full screenshot of the combat when we have got it just right. So, you’ll have to be patient for a little longer. But, since we didn’t share any updates in the last few weeks we thought it would be nice to give you something extra this Friday. Please enjoy a sneak peek preview of one of our combat themes!

Regarding the team efforts, Patrik and Anders have been focusing on the visual appearance of the combat grid (it’s tricky to get just the right look when you combine pixel art with 3D-elements!). Niklas has been working on setting up the battle pathfinder, which is based on the same Unity job system we have in adventure mode. The battle have been using an old system for quite a while and we need the new to be able to implement upcoming features.

This is one of the visual looks we are trying out for the spells (which might be named something else than spells actually, currently we are thinking of “invocations”). Feel free to share your thoughts about them!

This is one of the visual looks we are trying out for the spells (which might be named something else than spells actually, currently we are thinking of “invocations”). Feel free to share your thoughts about them!

Christian have been revisiting the faction banners as well as looking at the visual language of spells and continuing with battle and pre-battle UI. At the same time, Kordian has continued his overhaul of the combat sprites. And finally, Carl has been working on finding good names for the Essences, which are the ingredients you need to cast spells.

See you next week!


Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #4

It’s Friday yet again, seems like it happens every week! Here’s another report from the development trenches. Since we are still very much in battle focus a lot of tasks have been kind of similar to the week before this. But fear not beloved reader. I have finally been able to get our UI designer to tell us a bit more about what he is working on. So, less dev talk and more UI-talk this week.

But let’s start with the programmers. Niklas has been working on refactoring the spell system in battle to make it work with the new UI. He’s been working closely with David to tie everything together. There’s still quite a bit left, but progressing steadily! David, on the other hand, has been refactoring code for the battle effects to be able to work with different types of spell targeting.

We got a lot of praise for the lavaborn concept art. Here is our pixel version ready for ingame action!

We got a lot of praise for the lavaborn concept art. Here is our pixel version ready for ingame action!

If we talk to the artists we have had some interesting progress with the redesign of units and more assets for the battle screen. Anders has been focusing on new animations for our redesigned squire troop along with a freelancer called José. He has also produced battle scene assets and worked closely with Kordian on the troops. Kordian has been modifying the Donerian Hellbreath character to our new design guidelines. He has also worked on two new characters, the Lavaborn and a necromancer.

Before and after re-design, the Hellbreath is a high tier unit for Doneria. It has recently undergone our visual overhaul process. Notice how the smoke disappeared from the torch. It’ll be implemented with a shader instead of old school hand drawn p…

Before and after re-design, the Hellbreath is a high tier unit for Doneria. It has recently undergone our visual overhaul process. Notice how the smoke disappeared from the torch. It’ll be implemented with a shader instead of old school hand drawn pixels. Pretty neat!

Now, regarding the UI! Just as the rest of the team Christian has been focusing on Battle for the last few weeks. Battle presents additional and different challenges for the user interface compared to Adventure. So we have had to test our theories for the visual language, iterate and update – and bring this to the rest of the game.

Songs of Conquest is a classic adventure game and we want you to feel that you are in control of your Wielders and in command of your troops. The purpose of the user interface is to support that and at the same time let the player focus on the beautiful and compelling art in the game world. We strive for a robust and tactile interface, that at the same time focuses on the most important aspects of the game. The job of the user interface is to support the gameplay and guide the player experience – and we feel that in a strategy game, the visual and interactive “marriage“ of the user interface and the rest of the game world is extra important.

We have tried many different textures and shapes for the unit queue UI elements. Do you think we are on the right path?

We have tried many different textures and shapes for the unit queue UI elements. Do you think we are on the right path?

Our user interface has changed with the art and art style of the game. We started with a pixel styled user interface, with pixel fonts to display all lore and data. When we reworked and updated the art style to 2.5D we also took a big leap in the user interface to introduce “non-pixel” art and fonts in glorious 4K. The visual language and style of the game just got a whole new range of tools to be able to express its tone. For a visual designer, this is not always a blessing but you need to set up your own restrictions so that the result will be as concentrated and clear as possible. And in our case, we also now have a non-pixel layer over a striking and distinct pixel art style – and sometimes those layers need to interact.

Finally, if you missed our trip down memory lane earlier this week, check out this work in progress screenshots. It paints a very telling story about just how much the game has changed over the years!


Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #3

Oh my, it’s been a week already? Seems like this dev blog thing is sticking. All comments and feedback is really encouraging to read. So, if you take the time to read, like and comment, it means a lot to the whole team :)

Our focus is still on the battle and it will continue to be so for a while. Up until late January, to be more precise, since we are working on some key features to present for our publisher. And let me tell you, the battle is really shaping up to look and play awesome. Still a lot of things to work on, but my spying eye has caught glimpses of amazing stuff to come. We aren’t ready to show off battle just yet, but rest assured we are working hard to be able to show it as soon as possible.

Concept art for the lavaborn musician troop. All armies need a moral boosting musician, right?

Concept art for the lavaborn musician troop. All armies need a moral boosting musician, right?

So, as I have mentioned before, we are reworking the visual design and lore around some factions, to make their battle line-up more varied and striking. Kordian, one of our pixel artists have, among other things, been trying out new poses and characters for Doneria. The new pixel art isn’t finalized, but deliberately kept on a sketchy level, so we can discuss internally and with our stakeholders before we finalize the troops.

The new troop design aims for a greater variation in size and more dynamic poses. Notice how the human piper have been changed to a tiny Lavaborn musician. Do you think we are on the right path?

The new troop design aims for a greater variation in size and more dynamic poses. Notice how the human piper have been changed to a tiny Lavaborn musician. Do you think we are on the right path?

Patrik has been working on creating a random battle background generator. It will generate backgrounds that fit the environment where the battle was initiated. So if you decide to attack an enemy that's standing on a grassy tile surrounded by forest, the battle background will reflect that surrounding. It's still a work in progress, but it's coming along nicely!

Niklas have been finishing up the conversion to our new sound system using Wwise. He has also been working on our level editor so we can create battle maps with the 2.5D style as well as adventure maps, using the same editor. Currently, he is enabling more types of targets in battle regarding our spells.

And speaking of spells, David has been working on a pretty sweet fireball (YEAH!) while also learning the new-ish shader graph in Unity.

And finally, we shared a little sneak peek video of our level editor recently. If you missed it, here it is:

We are looking forward to see what you will create with the editor! Do you have ideas for maps already? Feel free to share them with us :)

We are looking forward to see what you will create with the editor! Do you have ideas for maps already? Feel free to share them with us :)


Please note that this is a devblog. Features and graphics mentioned or displayed above may or may not change during the development process.

Development update #2

What’s been going on at the office lately? It’s still all about the battle! Well, almost all about the battle at least. We are working on getting certain features up and running, that will add interesting mechanics to our battle mode. At the same time, we are working hard on redefining the visuals to really match the look of adventure mode.

I, for one, have also had the privilege of reviewing our backlog (list of features/art/content to implement) and discussed with our publisher how we can work smart and reach our goals faster. I have also agreed on terms with a new programmer who will join our team next year. It is a person with a solid background in the games industry and we are really looking forward to getting that extra hand on deck to get the game done in a shorter time. Furthermore, I have been working on a contract for a new sound designer who recently worked on Mutant: Year Zero. Who doesn’t love a good contract, right?

Suitingly, Niklas has been working on converting our project to use a sound system called Wwise. We have been using our own sound system until now, aptly named LavaSound. That system is based on the Unity audio with memory handling in mind, but we want to be able to control and change the sounds outside the Unity project.

Wwise enables that, and it will be a good fit for our project and for our new sound designer. While we are on the topic of systems and plugins: David has been working on integrating More Mountains MMFeedbacks (a plugin for Unity) into our game to juice it up a lot more.

We are trying to get a better visual variatio by adding non-human troops to Doneria. Feel free to leave a comment below if you have feedback!

We are trying to get a better visual variatio by adding non-human troops to Doneria. Feel free to leave a comment below if you have feedback!

At the same time, Carl has been looking over how and if we can implement events in our game and also working on abilities and traits for the different units. And finally, our concept artist Felix have worked on concepts for two new Doneria units. The Lavaborn serve as mercenaries in the Donerian army and consist of a smaller weaker unit and a tanky high tier unit.

Finally, if you missed it, we recently shared our main theme. Take a listen and let us know what you think!


Please note that this is a devblog, features and graphics mentioned or displayed above may or may not change during the development process.

Development update

This week most of our team has been working with battle. Everything from troop design (and re-design) to battle UI and how the actual battle grid will look.

Personally, I’ve been working on a lot of admin stuff (some think I’m the CEO, but actually I’m not, I just act like I’m the CEO). I’ve also written some more story background for our Wielders, their motives and how they fit into our world. Part of this work is to help prepare for our portrait artist in creating amazing wielder portraits. Another aspect is of course that we really want the world to be believable and coherent, in its own weird way. Both myself and Carl, who writes most of the lore, read a lot of fantasy and have a strong opinion against creating a generic fantasy world with standard cliches. Carl has been delving even deeper into the game world this week and refined lore, campaign, and units.

An example of the Tooltip system in action.

An example of the Tooltip system in action.

In the meantime, David, along with Niklas, has been working on changing our camera rig to use Unity’s Cinemachine for making easier camera transitions. Furthermore, Niklas has been working with the backlog and structuring it for our next internal milestone. He’s also been working on getting the tooltips (when you hover over objects) working with our new 4K-ready designs.

Behold the evolution of our humble Squire troop. It is safe to say that the design of our characters have undergone a lot of scrutiny and evaluation. Which one do you prefer?

Behold the evolution of our humble Squire troop. It is safe to say that the design of our characters have undergone a lot of scrutiny and evaluation. Which one do you prefer?

And finally Anders, along with the rest of the art team, has been working on textures for the battlefield, redesigning our factions visual appearance to better fit their identity and redesigning our battle sprites (pixel pushing!).

We are exploring some new ideas for a large Rana troop. These are some initial concepts and so far we are leaning more towards a giant insect rather than a giant mammal.

We are exploring some new ideas for a large Rana troop. These are some initial concepts and so far we are leaning more towards a giant insect rather than a giant mammal.


Please note that this is a devblog, features and graphics mentioned or displayed above may or may not change during the development process.

The shader approach to billboarding

People have asked me about the technology behind the 2.5D billboarded look of our game, so I thought it would be time to write a blogpost about it.

A screenshot from our launch trailer

A screenshot from our launch trailer

In the beginning…

It became apparent very early in our 2.5D development that billboarding could quickly become a huge performance cost. We wanted thousands of animated billboards forming mountain ranges, forests and plains of grass. In our very first approaches we tried to use regular sprites with attached monobehaviors updating their rotation. This worked pretty well as long as our camera angle did not change. But as you’ve probably seen in our launch trailer, we wanted to be able to zoom in and out while changing the rotation of our camera.

Enter Cartography…

It was clear we needed to change our approach, and Cartography was born. Cartography is what we ended up calling the system in charge of generating and drawing our landscapes (ground, cliffs, trees, mountains, grass, water, etc). We also implemented Unity’s new Lightweight Rendering Pipeline to get even more performance out of our rendering.

To solve the billboarding problem we turned to shader approximations. We simply move the vertices of our “sprites” in a way that looks very much like they’re being rotated. From a first look this works very good, but we quickly ran into the problem of translating between world space and object space as we wanted the base of our objects to always remain still and attached to the ground. To solve this issue we ended up baking that information into the y-component of the second uv-channel of our billboard “sprites” (or meshes).

A screenshot from our editor drawing the pre-baked y-component of the second uv-channel. Notice how the base of the objects are completely black, and how objects gets brighter and brighter the taller they are. The whiter the part of the object is th…

A screenshot from our editor drawing the pre-baked y-component of the second uv-channel. Notice how the base of the objects are completely black, and how objects gets brighter and brighter the taller they are. The whiter the part of the object is the more it gets displaced, and blackness indicates the part of the mesh we don’t displace at all.

Baking this information was actually very simple as shown in the method below.

void BillboardFixer(Mesh mesh)
{
    var vertices = mesh.vertices;
    var uvs = new List<Vector3>(mesh.vertexCount);
    for (var i = 0; i < mesh.vertexCount; ++i)
    {
        var uv = vertices[i];
        uvs.Add(uv);
    }
    mesh.SetUVs(1, uvs);
}

With this baked information we then created a sub-graph for calculating the desired vertex position. Besides the baked second uv information we also needed to know the rotation of the camera. This is calculated and passed to our shaders using this simple line of code.

Shader.SetGlobalVector(
  "_Billboard",
  Camera.main.transform.rotation.eulerAngles * (Mathf.PI / 180f)
);
The sub-graph in charge of displacing the vertices to simulate billboarding

The sub-graph in charge of displacing the vertices to simulate billboarding

This in turn is fed into our shaders like in the very simple example below. Note that we also had to reconstruct our normals in order to get the lighting correct. We opted for a static reconstruction as this turned out to look better than a dynamic one. But this would definitely depend on the use-case.

A “final” shader using the billboarding sub-graph

A “final” shader using the billboarding sub-graph

Conclusion

This solution is pretty much tailored to our very specific use case, as billboards only rotate in the X-axis. A limitation that suits our game very well. This approach also batch well, and is generally very fast yet accurate enough for our needs. With that said, I should mention that we've opted for not using this approach when it comes to characters and buildings (anything dynamic really) as any performance gains are quickly outweighed by the complexity of the system.