I would love to create an RPG with a magic system in it that gives the player a LOT of freedom.

To the extent they can make their own spells, systems of magic etc., bind spells to items, and so on.

Spells and magic would obviously have constraints, but doing lots of research into magic, and spending time creating spells etc. should allow players to create more and more powerful spells.

I'm really struggling how to come up with an interface through which they can create spells that isn't directly similar to programming. I don't want it to be so simple/boring as typing a sequence of commands that get triggered by clicking on a wand and calling that a spell.

I would love it if it were less human-intuitive, linearity combinations etc. weren't obvious or easy to figure out, and it was possible to explore the magic system deeply to discover more complex ways to piece together magics.

Are there any precedents? Does anyone have any ideas on how such a system could be implemented?

  • 1
    \$\begingroup\$ @disc_code22 that looks too boring/simple. Just setting parameters on existing spells, and running a few at once. \$\endgroup\$
    – minseong
    Commented Feb 13, 2020 at 2:54
  • 1
    \$\begingroup\$ Do you know Path of Exile? The abilities there are considering one main spell and up to 6 modifiers that the player can add as they like. They can choose from hundreds and it ranges from multi case, more projectiles, element converting to totems casting it. \$\endgroup\$
    – Zibelas
    Commented Feb 13, 2020 at 6:45
  • 2
    \$\begingroup\$ The spell system in Magicka is also an interesting read when delving into a topic like this. \$\endgroup\$ Commented Feb 13, 2020 at 11:26
  • 1
    \$\begingroup\$ @disc_code22 The system in Oblivion isn't very well designed, IMO. It allows the player to create ridiculously overpowered spells without even trying to find any obscure exploits in the system. If anything, it serves as a good example of what not to do. It's quite a while ago that I played Oblivion, but I remember very well that the moment I had unlocked that system, the difficulty curve took a nosedive. \$\endgroup\$
    – Philipp
    Commented Feb 13, 2020 at 18:40
  • 1
    \$\begingroup\$ Approaching it from a different angle, something I was really touched by was Zelda BotW's elements. You can use all the old standard magic, but when that magic interacts with the environment, it's beautiful. Fire on grass creates an updraft. Lightning in water makes the attack AoE. Water puts out fire. Now you don't just have enemies that are weak to a certain element for "reasons," you have situational gameplay where your magic is more useful \$\endgroup\$
    – Mars
    Commented Feb 14, 2020 at 6:46

5 Answers 5


A system of base spell types with a robust selection of modifiers may suit your needs.

For example, a fire ball spell might normally lob a ball of fire in an arc in front of you, that explodes upon hitting a surface or enemy.

At this point, modifiers can be linked to the spell. Depending on the style of the game, these can be explicit modifiers that state exactly what they do, or more esoteric runes that only hint at what effect they may have.

Some examples of possible modifiers:

  • A modifier that makes a spell bouncy would make the fireball bounce off surfaces until it hits an enemy or times out and explodes anyway.

  • Several mods could affect spell trajectory, making spells fly in a more predictable manner, or giving them a wild unpredictable snaking or zigzagging pattern.

  • A mod could cause the spell repel itself from nearby surfaces

  • Spells could leave a puddle of water when hitting a surface. Consider now that this might create a synergy with a fireball base and a bouncy modifier, where every time the fireball bounces it creates a puddle of water which is then turned into a cloud of hot steam on every collision with a surface.

To add some depth, modifiers that make a spell easier to use may decrease the overall power, while adding more chaos into the mix rewards the player with a higher damage but harder to use spell.

If a large variety of base spells and modifiers are created, the player can then explore and theory craft how different combinations will work for (and against!) them. A fire ball thrown like a boomerang, may not be ideal for the players well being, for example.

An example of a game that utilizes a system similar to this is Noita. It goes even a little bit further by having wands that effect the spells and modifiers slotted in them.

Here is a wiki link to a list of the spells / modifiers in Noita as a reference.

  • \$\begingroup\$ huh, never heard of this game before, that system is surprisingly complex. I do think that the "back end" of it is what OP wants, but the interface seems to be more programming - like which is what they want to avoid. \$\endgroup\$ Commented Feb 13, 2020 at 17:20
  • 1
    \$\begingroup\$ A fire ball thrown like a boomerang, may not be ideal for the players well being That's a fun way of saying players can blow themselves up, right? \$\endgroup\$
    – Mars
    Commented Feb 14, 2020 at 2:25
  • \$\begingroup\$ @Mars Right. I think some inherent risk is important in a system like this to help avoid reduction into a numbers game where spell crafting is over-optimized to be as effective as possible. If there is risk involved with a more powerful / useful spell, the player has to play a balancing game with utility versus their own safety. \$\endgroup\$
    – Malloc
    Commented Feb 15, 2020 at 2:05
  • \$\begingroup\$ Check out the magic system in Stonekeep, where runes are combined to add modifiers. It is one of the best magic systems I have seen. \$\endgroup\$ Commented Feb 17, 2020 at 9:01

What you want is something that is unpredictable yet consistent but lets the player make an educated guess, with power progression.


The more "input" your spell system can take, the more chaotic the results can appear. Have your spells take both a mix of components as well as an incantation (arrange runes, take some text input, draw a constrained pattern with the mouse/touchpad/joystick).


A couple of behind-the-scenes formulas take the inputs, convert them to numbers and spit out more numbers that result in some basic values for your spell (its range, energy cost, power, effect strength). You can use the input or a part of it as a seed for a PRNG, which gives random numbers, but always the same ones if given a specific seed and state. The point is that if the player makes the spell exactly the same way twice, it should come out exactly the same way.

Educated guessing

Add some rules to your calculations that let certain components vaguely relate to the final results. Perhaps a certain herb always makes the spells made with it affect the undead more. Maybe one of the runes (nearly) guarantees a longer range or wider spread.

Power progression

Make more components available as the player progresses and have the player's own statistics play into the spells. The Fireball cast by a novice mage barely singes a monster's hair; the one a Grandmaster Wizard can muster will only leave a blackened spot and a foul smell in place.

Multiple ways of casting

Make the magic effects different depending on who or how they're cast upon. An ice spell can make the ground slippery, freeze an enemy in place or extinguish the spellcaster who's been set on fire.

Randomize the rules

If you want each playthrough to be unique and the spell creation, testing and learning aspect to be an important game mechanic, make the rules random every playthrough - so that people don't memorize/write down in a wiki all the strictly best combinations. Alternatively, don't, and now you have a nice emergent magic system going.

  • \$\begingroup\$ Not sure what "unpredictable" means, but that sounds like the opposite of what I'd want. It sounds like OP also wants something systemic, like programming, without the tedium of programming. \$\endgroup\$
    – Mars
    Commented Feb 14, 2020 at 2:22
  • \$\begingroup\$ @Mars second to last paragraph, OP wants something that isn't easy to figure out. Unpredictability means there's no telling what the result will be of any particular combination, but the outcome is always the same so once the player learns a good combination they can reuse it. \$\endgroup\$ Commented Feb 14, 2020 at 6:19
  • \$\begingroup\$ Ah, when you put it that way, I see what you mean. I didn't know you were responding to that particular point there. Sounds god-awful though. "Hey, we have 2^10 spell combinations, with no particular patterns! Good luck spending every waking second for the rest of your life finding something good!" \$\endgroup\$
    – Mars
    Commented Feb 14, 2020 at 6:23
  • 1
    \$\begingroup\$ I also suggest to have some vague direction to it so that it is possible to "hint" towards specific effects. Perhaps a few pre-existing spells to ease the player into the system could be a good idea. \$\endgroup\$ Commented Feb 14, 2020 at 6:31
  • 1
    \$\begingroup\$ This will definitely require a lot of tweaking and playtesting. It may also be a game mechanic without mass appeal. There hasn't been any obvious feedback from OP yet, perhaps I missed the mark entirely, or was right on point, or right in between. \$\endgroup\$ Commented Feb 14, 2020 at 6:40

First of all you need to make it clear to yourself what kind of magic system you really want. As far as i know there is no common definiton for it, but i would call it scientific magic vs blackbox magic. You want scientific magic.

Blackbox Magic is somewhat unapproachable, unintuitiv and not explainable. Most games like Skyrim and most other games do it like that. There might be a source for the magic, but magic effects are just THERE. And either they are usable and recreatable (by casting spells or binding them to items) or they are part of the world (like magical creatures, portals and other magical effects).

Scientific Magic is what i like to call magic that is approachable, repeatable and able to get almost infinitly complex. Instead of the caster saying 'Fire ball' and a flaming ball of exploding fire flies in the enemies face, the caster understands, that his spell first weaves a ball of in a magic matrix, fill that ball with mana, adjust this infused mana with the aspect of fire and propel it with a fling of another magic matrix. If this sounds like an engineer process... well, it is. And as this all seems constructed, maybe there is a way around it.

So to design this engineering approach, i also want to adress some of htmlcoderexe's examples, as i find some of them quite fitting, while others not so much.


As i said, this kind of magic has to be approachable. What i mean is, that in its basics, it should seem logical. Fire is hot and the opposite of cold. If something is moving, a force has been applied, etc.
Your magic system needs to have basic elements, that do something, but not a lot.

In addition to that, if you combine two of those basic elements, something different might happen.


Lets combine two elements and try the spell -> Something happens.
Combine the elements in the same way -> Same thing happens.
Combine the elements in another way -> The same thing or something different happens.
Anything else and the player might be discouraged to try something new because... something new could happened if he does the same thing again... so why change?

Infinitly complex

Now instead of two basic elements, build some more complex elements from several basic elements, combine those to a greater effect (and more mana required) and to create more complexe elements or to archive different effects.

I dont want to trick you. To archive this kind of depth, you certainly will to implement some kind of 'Programming', but the trick is to not let the player have the feeling that it is. So lets design it.

The idea

Imagine this. In your world is a language, that conveys magic effects into the real world. Something like the dragon language from Skyrim.
Lets asume you have some basic words (our basic elements) your player starts with. Deep down in a ruin, he finds the word for Iref, but does not know, what it does. He speaks the word and something in his hands begins to burn, maybe even some of his clothes. From this he knows, that Iref is Fire. Not very useful yet, but somewhere else he finds the word Llab and casts it, and he sees a 'ball of magic' infront of him.
As a natural explorer, he tries 'Iref Llab' and a magic ball filled with fire appeares. It does not move and if touched, it just bursts like a bubble, not like an explosion. And so he tries to find new words and combines them.

To implement it, let the player have some kind of writing board, where he writes those runes (maybe more like drag and drop) or something and arrange them like he thinks it is right. Technical this IS programming, but the fun behind is to figure out the way you are able to programm more complex stuff.

Now you can think of other ways to modify the interactions. E.g. instead of fire the player gets Temperature. Now it makes a difference how he combines that with the ball. 'Temperature Ball would be a ball filled with fire, while Ball Temperature would be an ice ball. ** Temperatur Ball Velocity ** would push that Fireball away from the caster, while Velocity Temperatur Ball would push the ball against the caster etc.

Later on an experienced caster would get more complexe elements like **temperature ball* or ** ball temperature* as an own Word to implement in the spell, and even this could be combined to more complex spells.

  • A fire ball that really explodes
  • A Healing Aura with different targets
  • Creating intelligent creatures from differen basic elements
  • A ball filled with multiple fireballs (something like a cluster grenade)

Evolution instead of programming

Simply put: the player chooses spells and then obtains mutations and combinations of these spells. Repeating this step will eventually refine spells to a player's liking, without requiring any programming.

In the context of evolutionary algorithms, the player would determine the fitness of spells by experimentation.

But be warned, that writing good mutation and crossover functions, for things with the same level of sophistication as programming, can be very challenging.


Have each spell consists of a power level, a projection method, an element, and a series of optional modifiers controlled with slider bars.

The power level determines a spell's base mana cost, required user level, etc and will scale up the potency of the spell as it is increased.

The projection component says if it is a touch spell, a line of sight spell, an aura, an AOE etc. Each projection also has fixed co-effecants that apply to it such as base potency, range, radius, rate of fire, etc. These values are balanced against each other such that each projection's baseline efficiencies are make since against their weaknesses.

The element determines what a spell's power actually means. A fire element would turn a spell's potency into fire damage, but a heal element would turn it into a health recovery, and a root element would use the potency to determine how strong of a monster it can hold, etc.

Lastly you have your modifiers. These are sliders that are dynamically added to the UI based on the projection and element type. For example, an AOE might have sliders for More Damage <-> More Radius, More Damage <-> More Range, and More Mana <-> Longer Cool Down, etc. and a Fire element might have additional sliders for things like Quick Weak Burn <-> Strong Long Burn, and Burn Chance <-> Initial Damage, etc.

While this sort of system opens up countless spell combinations, the UI is can be entirely managed through a simple series of drop downs and sliders that anyone should be able to easily grasp.

As for the research thing, this could be approached 2 ways:

One is player knowledge based research (IE: Meta Gaming). If the system is complex enough, "un-intended" metas and exploits will crop up. You can leverage knowledge of these metas through intentionally lacking and vague in game descriptions of things. So don't tell players this effect has 50% armor penetration and 25% less damage, just tell them there is a trade off and force them to experiment to see when those trade offs yield the best results. You can further this by adding Easter Egg side effects to abilities that you just do not mention at all like making Light based AOEs and Auras break stealth or making casting ice spells break burn effects. As a result you will see more experienced players and factions naturally rise to the top by knowing how to exploit these esoteric knowledges.

Example of Meta gaming based research: Lightning attacks get a massive to-hit bonus against enemies in heavy armor; so a player cranks the accuracy <-> damage slider all the way to damage letting the lightning easter egg effect compensate for the inaccuracy, then push the range <-> cool down slider all the way to cool down because heavy armored opponents are slower meaning you get to dictate the engagement range. Then put armor penetration <-> damage slider all the way to armor penetration since this spell is specialized at killing tanks. By exploiting the natural weaknesses of heavy armor, a less armored faster opponent can run in close and bear into him with massive armor penetrating DPS killing an opponent who may theoretically be much stronger.

The other more common way to do it is that you could make all of the above unlockable content; so, you might just start off with 1-2 projection types, 1-4 elements, and no modifiers. Then as you achieve things whether it be through finding reagents or crafting tools, leveling up, or whatever, you unlock new types and elements as you progress. I personally find this approach more boring, but it tends to appeal better to mainstream audiences because newer players often mistake that which they do not understand with bugs, "bad game design", and hax. If you start them off limited to few enough options that they can understand it, and expose them slowly to emergent metas, then it's less of a shock to the player.

  • 1
    \$\begingroup\$ How does this solve the research and mystique aspects of it? I would like a magic system that players have to delve into and discover for themselves. Can't just present them a slider UI. \$\endgroup\$
    – minseong
    Commented Feb 14, 2020 at 17:17
  • \$\begingroup\$ @theonlygusti I've expanded on that. You actually can just give them sliders because no system is perfectly balanced. The more you give people choices and the less you explain the repercussions of these choices, the more experience will factor into effective spell crafting and and casting. \$\endgroup\$
    – Nosajimiki
    Commented Feb 14, 2020 at 17:52

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .