The world was not prepared for the invasion. In a few months, every kingdom of the known world surrendered to the magic-using invaders masquerading as our old Gods. They claim their appearance is the retribution for our sins. Not everyone is buying their story and so, the shadow council has been born. They are the ones funding the resistance. Your job will be to build up and lead this resistance. Learn the real intention of the invaders and command our troops to sabotage it wherever you can. Prepare for the moment when we can break the chains of magic put on humanity. The council will be watching you, Commander!

Planned features

- Turn-based combat system with procedurally generated maps.
- Build up your base and spread the resistance spy network across the continent to learn more about the invaders.
- Research new skills and equipment to be used by your troops. These will be semi-random so that you will have to adapt your strategy for the given situation.
- Diverse roster of enemies with their own skills and tactics.
- Randomized enemy pool, so that every campaign will test you in a different way.
- 100+ skills with a classless system providing countless possible character builds.
- Permadeath. Characters can (and will!) die permanently in combat.
- Character pool support. Create unique characters which can appear in the campaign.

About us

Amethyst Dreamers is a small independent 2 person team from Budapest, Hungary. Our goal with Slaves of Magic is to create a game with great tactical depth, unique game mechanics, and with high replayability. In short, a game we would love to play as well. In designing the game, we took a lot of inspiration from the XCOM series and the original Guild Wars.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

Devlog #13 The anatomy of skills in a turn-based game.

Hello everyone! This devlog will be a bit more technical than usual, so I will start with some general eye candy before going into today's main topic.

Character animation system:

anigifmace

idle animation

deathanigif

As promised in the previous devlog, the creation of character animations with arms is progressing nicely.

What do we want from our skill system?

Now, to the main topic, the skill system. Let's define our goals as usual first:

  • We need it to be modular, as we want to create a lot of skills as easily as possible.
  • We need them to be moddable outside the code, as we want to give the community the ability to tweak skills if they want to, or create new ones easily.

The naive solution:

When I first started working on this project I wanted to create a playable prototype as soon as possible so I went with a naive solution I think worth talking about before I rewrote the system. Basically, I created three types of skills. Attack skills, movement skills, and buff/debuff skills. It is a great simple system, quick to set up, intuitive, at first glance modular, so what is the problem?

The problem is when you want to create an attack skill with a buff/debuff effect if hit for example. Or a skill that involves movement as well. You can get around this by copy-pasting the relevant code into the main skill category, but it is a big no-no in the programming world. Mostly because if you want to change something in one place, you need to remember to change the copy of it too. More chance to make a mistake, which we want to reduce not increase! Not to mention it will create a messy code that is hard to read.

Identifying the core parts of a skill:

So, we need to go deeper than the type of skill to reach the real building blocks from which a skill can be created modularly. In our new system, a skill is created from 4 major parts.

  • Default parameters every skill has. These are things like skill name, sound/animation effect corresponding to the skill, etc.
  • Targeting module(s). This module defines which tiles are valid as input for a given skill.
  • Affecting module(s). This module defines which tiles will be affected, and its input is the chosen tile/tiles of the targeting module.
  • Execute module(s). This module defines what happens on the tiles. The input for this is the chosen tile/tiles of the affecting module.

These are the building blocks of how we define skills in our game. What modders (and us as well as we are developing) will be able to do is to use the modules I created, re-parameterize them, and link them together in any way they like to, as these are freely editable in JSON file format. Like building with lego, just the modules are the lego pieces, and the end result is a skill.

Example:

Here is the JSON file of the basic sword attack:

basic attack 1

Human readable and editable. Thankfully not even too long, because every parameter has a default value, and you only need to write it out if you want to change that value. It is using the melee_targeting module, so choosable tiles are the ones in melee range. Line_to_target affecting module basically means to draw a line from the character to the chosen tile. Every tile in that line is affected. The width parameter defines the width of the line in tiles. And the attack_execute module means it is going to do an attack against the unit in the affected tiles, using the weapon damage by default. The skill in the game:

basic attack

To demonstrate the power of this system, let's say I want the basic attack to be a sweeping attack, so to not only attack the tile that was chosen but the tiles next to it as well. All you need to do to edit the line_to_target affecting parameter width value to 2. That will make the line wider to the target so that we attack in a cone, like so:

basic attack wide

I think it is pretty neat that we can do this without touching the code! Of course, we should replace the animation with some sort of a sweeping animation as well for better visual feedback (just replace the self_effects in the JSON) but I think this gets the point across. In addition, I intentionally kept the example simple. I only used 1 module each, but you can add multiples as well. Want to create an attack that hit twice? Add another attack executes. Want to add a debuff to the skill? Just add the proper debuff execute module to the skill.

So, this is the backend rework I was working on while the animations are being done. It took a while to get this system working, but I believe it will speed up the process of adding skills into the game by a lot plus it is mod-friendly if the community wants to tinker with it. So that's it for today's devlog, and speaking of community, if you are interested in Slaves of Magic you can show us your support by wishlisting the game on Steam here!

Devlog #12 The new trailer

Devlog #12 The new trailer

News

A new trailer, some insights into it, and some extra bit which couldn't make it into the trailer in time, but is in the work.

Devlog #11 The first peek inside the resistance base

Devlog #11 The first peek inside the resistance base

News

This devlog is about what you can expect from the base-building aspect of the game.

Devlog #10 The proof is in the pudding, testing the campaign design

Devlog #10 The proof is in the pudding, testing the campaign design

News

This devlog is about the changes brought forward from testing. Plus explaining a few new things added to the map.

Devlog #9 Deep-dive into the mind of the invasion

Devlog #9 Deep-dive into the mind of the invasion

News

This devlog is about how the campaign AI can interact with the world, and the player.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Twitter

Latest tweets from @slavesofmagic

For today's #screenshotsaturday, I came to show you our new teleport effect! At the mission planning phase, the pl… T.co

Jan 22 2022

RT @SominKlein: @moebial Thanks for hosting #TurnBasedThursday and good luck for your release! ♥️ I'm working on #Synchronicity, a… T.co

Jan 20 2022

RT @bryquthedev: @moebial Thanks for hosting #TurnBasedThursday! #shardpunk is an upcoming turn-based game with steampunk/vermintid… T.co

Jan 20 2022

RT @LostPilgrims: @moebial @TurnBasedThurs Thanks for hosting #TurnBasedThursday🖤 Vagrus is a #turnbased story-rich strategy #RPG w/… T.co

Jan 20 2022

RT @TerraRandoma: @moebial Hey @moebial thanks for hosting #TurnBasedThursday this week! I wonder why you said it is a big day today,… T.co

Jan 20 2022

RT @TurnBasedThurs: This week a returning host for #TurnBasedThursday. Their beautiful game LAUNCHES tomorrow, and they're generously s… T.co

Jan 20 2022

RT @SlavesOfMagic: For today's #screenshotsaturday, check out our new phase counter! The color represents which team's turn it is, an… T.co

Jan 19 2022

RT @lacko_adam: Foundation of Turn-Based combat runtime, assembled from abstracted code that also drives RT combat I showcased earl… T.co

Jan 19 2022