Updates at least monthly.

Path of Progress

Icon for the Red Carpet ability, depicting a lush red carpet with fanciful gold trim.Hi all,

I'm pleased to say we've been on a heck of a productive streak since the start of December. It's gone by in a blur, but I've picked out some highlights for you based on the alpha patch notes:

  • Lane design now feels decent! The troops, their rhythm, and their rewards feel reasonable while also incorporating some mechanics I wanted to try. There is still lots to think about, but having a representative example of a lane is a big accelerant for hero design.
  • Our fog of war implementation got a real polish and is silky smooth; I am well impressed with DarnYak's work on this one!
  • We had a great moment where some tricky and substantial changes were needed under the hood on Lumberyard's netcode; two days of work later we try it out and it worked first time! Nice job Yak again!
  • Content has been steadily increasing and improving:
    • A lot of the early counsels (items) in the game were to sample the tech and show that it worked. I've been trying to steer the newer ones towards "how could this encourage cooperation?".
    • Hero design has progressed in a similar way: initially technical demonstration and now moving towards more meaningfully designed experiences. Right now Scavenger is my favourite!
  • The UI has sharpened up a lot, with most of the essential lane-pushing game elements in place and working as they should.

Despite all this, we're still firmly on "old art"; models and textures are all basic asset store stuff until we get some extra hands on board to make improvements. I've worked Lumberyard's particle editor to the bone so hero abilities have distinct and readable effects... I look forward to being able to say the same for heroes.


Tools of the Trade: An Update

Way back in 2016, we wrote on this blog about some of the tools we were using for development. Some have stayed, some have changed; here's a look at our current collection:

  • Notion is our primary knowledge-base, task management tool, and repository of design documents. It's super; I'm very pleased. If you have grand designs of any kind, do check it out (and the personal plan is free for students!).
  • Rocket.chat handles our internal team chat, while we hop over to Discord for voice calls.
  • Owncloud implements our shared filesystem for retaining screenshots, important documents, etc.
  • Runbox host our company email.
  • Gitea is a self-hosted, open-source github. It quite helpfully has git-lfs built in, which allows us to easily commit and share game assets as part of our workflow. Fun fact: our main repo hit 3200 commits this month!
  • GitFiend is a GUI for git that I actually like. I have never made this claim about any git client before.
  • Cmder and its handy custom commands make it easy to run a variety of scripts from one terminal. I use these to package release builds, reload game servers, etc.
  • Lumberyard is our game engine, though we've done a lot to customise how we use it. Most of the action is currently driven by xml-based scripting outside the editor.
  • Visual Studio 2015 is a necessity of developing for Lumberyard. We do a lot of C++.
  • Notepad++ is my choice for all our xml scripting and other text editing. There's prettier apps out there, but it's so damn fast and deep searches directories in a flash.
  • Drupal 8 is the backend for this website and also handles authentication for playing the game itself. (This is ripe to change as we scale up.)

There's a couple of others, but I think this covers the interesting parts! Thoughts welcome; maybe someone will find a tool they like among this list.


What's coming up?

First to come to mind: hero design and tech to implement new abilities is one area we'll keep working on for sure. I really want to get back to some creative direction and branding work as well.

And of course, working out the last kinks that are interfering with client stability: no-one likes a crash (those do like to crop up...). Maybe we will be able to drop the 'technical' modifier on alpha soon. The client has come a long way in the last year.

Thanks to our testers for their time and patience in helping us get this far!

Talk soon,
Softmints


A Series of...

Icon with cog and spannerWelcome all, for another dev blog!

It will delight you to know that we had one very slow month, followed by a relatively fast one.

Rolling into October, my development tasks were largely scripting and UI. While a necessary evil, they are among the necessary evils that I somewhat enjoy working on: you make changes, and they're in the game immediately. That's usually satisfying to do.

Unfortunately, I had a slip while frolicking in the mountains with some friends a few days after our previous blog post, and ended up out of work for three weeks. (My recovery has gone just fine!)

Concurrently, you might have heard about the power situation in California. Mike (DarnYak) was one of the lucky three million affected, which chopped another two weeks' work off our October progress. Not such a hot month!


November has been quite a bit smoother. We knew what needed doing, and have been chugging through our backlog at a brisk pace. I've been pleased with the progress we've made, and looked forward to a December of iterating gameplay and tightening netcode.

That will happen, but won't be at full speed just yet as it seems to be accident season: my wrist was sprained two days ago after a (thankfully minor) cycling accident.

We'll have another update for you later in the month - hopefully with more focus on the game than this one!

Softmints


Musings on Laning

Icon for one of the game's abilitiesHi all,

The past week has had me consumed with lane design. I feel like I'm going to end up writing a longer article about this topic at some point, but hey: why not share the journey in-progress? That's what dev blogs are for!

So let us begin. I attribute a lot of value to lanes. They define the genre, and comprise a large portion of what heroes spend their time doing throughout a match. A well-designed laning experience is crucial; more at the heart of the game than even hero design.

There are many variables to consider:

  • What is the width and length of the lane?
  • What troops spawn, and in what quantities and frequencies?
  • How do players interact with them?
  • Do special troops arrive?
  • What rewards do we offer?
  • Are all lanes identical?

Think about having a blank map in front of you. How would you answer these questions?


Of course, there are plenty of established answers: we are all familiar with last-hits, denies, aggro behaviours, siege troops, etc.

As a mod, RoW had none of the above. The troops were asymmetric and had passive abilities, bonus gold would occasionally drop on the ground, and while troops always prioritised heroes last: their attack damage was substantial.

In the time since, my ideas for the surrounding game systems have evolved a lot, as have standards for lane design. I'm now looking at their purpose from more angles: the second to second, minute to minute, and their overall contribution to strategy. Lanes should be rich.

That said: even if I know the results I want, it's a tough process iterating towards them. So much of what defines modern standards came from emergent behaviours; designing systems of equivalent depth from scratch would be no small feat.

Thankfully there is a great place to seek answers: old lane-pushing games! So much of RoW's design already stands on the shoulders of underappreciated giants. I took a tour through my maps folder, and amongst the games I looked at:

  • There could be anything from three to eight troops in each wave.
  • Sometimes the ranged troop would meander to the front, other times troops would march in rigid formation.
  • Troops occasionally have spells which they use, including ones which summon more troops.
  • Wave spawn frequency could be anywhere from 25 to 60 seconds.
  • Some games use a tic-toc rhythm with a big wave, small wave, big wave, etc.
  • Hiring reinforcements, troop upgrades, and many other features could change troop composition.

Being able to load up and observe a wide variety of empty lanes and how they flow is just great for inspiring the right direction in which to experiment next.

And how nice to be at a point in development where we have all the tools needed for iterating. I can draw and tweak splines which troops will follow; attacks and abilities are easy to adjust, objectives are in, and our 5v5 map is starting to feel a little bit like home.

The tricky part is going to be tuning: ensuring that the second to second meshes with the minute to minute, which meshes with grander strategic agency. And, I am pleased to say in response to some sage advice in our discord, that lanes are definitely going to look different to what you're used to.


European Games Week (which we mentioned last time) was sadly cancelled at the last minute! The Irish gamedev community ended up putting on some smaller, replacement events, which was great to see - especially since several people had booked flights to be able to attend. Alas, no pictures of me babbling about the game this time!

Softmints


Awash with Words

Icon for Roaring Tides ability.Hi all,

Summer has slid by all too quickly. Let's catch up.

Our biggest recent undertaking has been bringing on a pro writer for the summer months. We feel that story and its consistency with gameplay are high priorities, and getting a writer involved early is how we're ensuring quality in these areas.

Here's some good news! This game will have a story: one with a beginning, a middle, and an ending. There are main characters and minor characters, and what you experience in-game is going to be consistent with the overall plot.

Once the game launches, we will be exploring and experimenting with narrative delivery. At least some of it will be missions and special events. I think it's a priority that the introductory missions explain what's going on, as often lane-pushing games put all their focus on mechanics and don't set the scene or explain why a battle is being fought. That suits some players, but alienates others. We think we can do better!

Specifics of the narrative and introductory missions won't be part of the alpha for some months, as our immediate focus remains on technical issues and gameplay (which still need plenty of work). However, it is reassuring to know that the foundations are in place for our world and worldbuilding.

We also spent some time with our writer working through character designs. While we haven't done concept art yet, I finally know (roughly) what some of my characters are going to look like! Given that I've known and considered some of them for years, this is very exciting (at least for me!).

I am pleased that we are doing a good job of drawing inspiration from and representing many cultures. The ideas behind each character are universal human attributes, and reflecting that through aesthetics and narrative has a very satisfying feel to it.

Concept art followed by 3D sculpting and animations are the next stages. More on those soon.


Right now, we're trudging through Lumberyard updates. I really didn't want to do them: for a small team like us with a complex game, small changes can have a big impact so updating requires a disproportionate amount of care (and time).

The last time we updated was May 2018, and I would have put them off forever... but as it stands we're stuck with older Lumberyard systems and that limits us. We can't even adjust attack rate on our units! So we're charging ahead with it and hopefully wrap them up sooner rather than later. Similarly, some of our backend web infrastructure needed an update - which has now been sorted.


My recent work on the game has been with stylesheets and improving audiovisual feedback, which are closely linked. We've had stylesheets in for a while: they're a description of what assets the player hears and sees: be those particles or textures or ability sounds. We load stylesheets following certain conditions, allowing us to implement cosmetics, team-colours, colour-blind mode, and so on.

In our previous implementation, stylesheets were attached only to actions and resources. This meant that when a buff was applying a heal, we didn't have styling information for the buff, and couldn't show appropriately styled healing numbers. There were also inconsistencies in the styling that we did use, leading to the wrong styles showing from time to time. Not so good for players!

With recent changes, stylesheets now apply to almost everything, and encompass text and tooltips that the player sees as well. It was an odd thing to remove the ->getName() method from our actions and objects; that's one of the first things we added. Now names are style information, and are correctly located elsewhere. Hopefully localisation will be a bit easier down the line as well.


For any of you in Ireland, we'll be at European Games Week in September. Feel free to stop by and try the game!

Until next time,
Softmints


Camaraderie

Icon for the Camaraderie ability.Hi all,

I've always had a vague awareness that game designers use vast spreadsheets for calculating balance and the difficulty of enemies.

As it happens, that's not something I've ever done. Given the relatively few heroes in Dota Outland and Rise of Winterchill, my road to balance was through listening, tweaking, and seeing what worked. Similarly, I never did a game design document: just put out new versions and scribbled notes as I went.

Recently, Kybolt has adopted some new collaboration tools, and I've been making good use of them. For example, my list of ability ideas dates back to 2007, all scrawled into a now-2500 line notepad file.

Time for a change, right? I'm putting them into a database, tagged using the same system I use for designing kits so I can easily search for matches, and drive discussion and creativity.

What's even better is that in pursuit of tagging them, sometimes new ideas and perspectives spring forth. One of Rise of Winterchill's heroes had the following ultimate:

Icon for the Camaraderie ability.

Camaraderie

Shares your inventory with a target allied hero for up to 20 seconds, or until you become over 900 distance apart. Both heroes will effectively enjoy a 12-slot inventory, with full bonuses from all items.

Yes, this really existed. It may further surprise you that the ability didn't get used very much!

For a long time I attributed this to poor audiovisual feedback. Allies often didn't realise they had the buff, and ran out of range. Coordinating its use was difficult. I figured that with better cues, the ability would be fine.

However, during my process of tagging abilities for the database, I realised another reason for the slow uptake: players can't experiment with Camaraderie on their own. It required an attentive ally, and ongoing coordination of item builds for best results. As an ultimate ability, the player might not even read it and realise they could share items until significantly into their build.

If I were introducing this ability now, I think an option to target non-hero units and share your inventory with them would be the right step. That lets players get accustomed to using the ability and have some autonomy, before eventually settling on the "best" target as allied heroes.

This is just one example of the tagging making itself useful. Having a top-level perspective over all abilities and being able to sift through them... it's great for accelerating design. I'm not sure if or when balance spreadsheets will get involved, but being able to put numbers to travel time, time to kill, etc. is definitely important. And we have much better documentation now, which is nice.

In other news, the home page mentions something called chess laning: a set of mechanics which are in the alpha. As I suspected, the initial implementation has been a bit clunky so we're taking steps to simplify it. Originally I was worried that there wouldn't be enough nuance... but some fresh ideas revealed themselves so we'll have to see where they lead.

Until next time,
Softmints


Piercing through Fog

Icon for the 'Piercing Eye' ability, depicting a red beastial eye peering from the shadows.It has been a quiet month of work on the game, so I'll stick to some simple informative updates.

The main feature we've added recently is fog of war, which enables more gameplay-oriented testing as testers can now outmaneuver and surprise each-other. The two-lane map Merrilane is starting to feel a little cramped!

One design decision I'll share is that each team's troops will be permanently visible to both teams. This is in contrast to most lane-pushing games: which tend to conceal troop positions.

Since information about spawn timings and troop paths is easily researched, I am inclined to keep things accessible and show everyone where the troops are at all times. (This does not include any extra units that come from mercenary camps; those will stay hidden until they first enter vision. Some secrecy is important!)

Speaking of permanently visible, you may like to check out the completed hero kit for Rasputin, who is getting all the attention as usual...

We are currently working on a mixture of more content (always nice) and various quality-of-life features like improving pathfinding and making abilities more responsive. Alpha is still being kept small as we have our hands full with development; we will ease the gates open a little further in May.

Thanks for staying tuned!
Softmints