Original post by Naxos For example, lets say you created a levitation spell. How do you specify 1) the object to levitate, 2) how long to levitate, and 3) How high to levitate. This is the tough part. Any ideas?
Depending on the spell, you can target an enemy/object during or after the incantation. Spell duration could be set by the incantation, or controlled after. Similarly, the height of the levitation could be woven into the spell itself.
For a levitation spell, the player could control the object's position and duration of levitation with the wand after she has cast the spell. For different levitation heights (or more conceptually, varying levitation strengths), then she can use a different spell.
:stylin:
:stylin: "Make games, not war."
"...if you're doing this to learn then just study a modern C++ compiler's implementation." -snk_kid
You want to keep the magic system as intuitive as possible. Whats more fun? A game where you are casting a variation of a fire spell with a wave of your mouse, or a game where you are trying to trace preset paths? I think the answer is obvious.
So consider a system like this: your character gains "elements", that show up as "buttons" on his hotbar(think MMO UIs). He clicks an element, then clicks and holds down the left or right button on the screen for attack or buff, respectively. Then for a fireball he would click near his character, hold down for a "charge up", then launch it in a direction with a swift release.
So where does your spell building fit in? Each element combines with other elements, at the cost of more mana. So fire+earth attack would be a molten ball that does physical and fire damage. Earth+darkness would result in a rock that explodes into dark energy. If you ran the cursor towards the enemy without releasing the mouse quickly, spikes of earth would come out of the ground following the mouse cursor.
In this system, you have intuitive spells that reward the user. You also have a lot of planning/thinking/smart coding to do to implement it ;)
I have always liked this idea. I think it might be quite difficult to figure out how all the different "magic seeds", as I call them, would work together. What happens when the player uses a fire seed with the flight seed? Does the spell just fail, or what? I don't know if anyone else would find it exciting, but I like the idea of doing spell research.
Say you were a mighty wizard, having mastered every spell known to wizardkind. Maybe you want to make your own. If you took your grid idea, then maybe you would spend some time, making patterns and looking at the effects. You then alter it slowly, bit by bit, until the final desired effect is reached. If you don't understand that, I mean that somehow, programmatically, different patterns are analyzed to produce different effects, and diverging from them slightly might make slightly different effects. This might allow players to devise totally new spells that nobody else in the game had, if you made it sufficiently flexible and fun to do.
I think that I would also make a table of effects that might happen if the player makes something that the computer decides is totally nonsensical. The price of the early research, where the player isn't getting any very useful results, might be that a rain of frogs falls on his head, that an imp steals some of his money, or that he gets teleported some distance away. I just think that it would be fun, as a player, to use, since it would allow me to have something unique to the game.
Of course, you would have to worry that your system would produce, on occasion, very, very powerful spells. You have a few options, as I see it. I like the idea that it totals up the different effects (Remember, these "seeds" are pre-programmed in. The programmer creates the Ice, Fire, Lightning, and Ray Attack seeds, and the player comes up with a pattern that signifies Fire and Ray attack) and the amount of damage they do. It then assigns a "mana cost" or whatever the game uses to determine spellcasting ability to the spell. You could also just brute-force all the combinations to check what kinds of spells are produced, if you want to assign the mana cost through the grid system, allowing the player to "optimize" his program.
Now, the thing is that you would have to figure out a way to specify the power level of the spell. I think that you might have some separate way of specifying the power level manually, because it would be quite difficult to program in a way of deciding the damage, or range, or duration, of the spell through a more-or-less random grid system. Another idea I had is that you could have a kind of 3D grid. Just like you have in the OP, but allowing the researcher to move the endpoints of the line in 3D space, specifying the power level of whatever that line might signify. This would also end up affecting mana cost.
My post is long enough now. Someone else can go back through and highlight the significant bits, if there are any. Cool idea, though.
my siteGenius is 1% inspiration and 99% perspiration
You want to keep the magic system as intuitive as possible. Whats more fun? A game where you are casting a variation of a fire spell with a wave of your mouse, or a game where you are trying to trace preset paths? I think the answer is obvious. (plus more...)
I did think about this type of system. However, this really takes the creativity out of the hands of the players, since all combinations of spells would have to be predetermined by the coder, would they not?
Also, the point is that there wouldn't be preset paths. The player would use the basic rules ( whatever they may be ) to extrapolate and create a new spell through the use of the grid.
Quote:
I think that I would also make a table of effects that might happen if the player makes something that the computer decides is totally nonsensical. The price of the early research, where the player isn't getting any very useful results, might be that a rain of frogs falls on his head, that an imp steals some of his money, or that he gets teleported some distance away. I just think that it would be fun, as a player, to use, since it would allow me to have something unique to the game.
I like that! It would be quite amusing to have spells that 'backfire' because they were malformed. :)
Quote:
Of course, you would have to worry that your system would produce, on occasion, very, very powerful spells.
I have noted this possiblity as well, and I can't think of a good counter for it until a system of rules to govern the creation of spells is set in place.
---------------------------------
Perhaps a logical way to proceed is to split up the kinds of magic into categories:
Spells that have an effect on the environment. Which would boil down codewise, as spells that would affect the variables in the environment. E.G. gravity, relative speed, etc.
Spells that have an effect on an individual. A wide array of things could be affected. Player speed, vision, health, coordination(mouse axis inverted :]), appearance(the model and/or textures it uses), position, orientation, mana...
Spells that have an effect on a specific object. Could be affected in ways similar to that of the individual.
Spells that could be classified as 'creational'. A spell that creates an object, or a spell that turns one object into a totally different kind of object with a new set of properties.
Spells that could be classified as 'elemental'. Earth, Air, Fire, Water. Though these types of spells might not work well with a grid system, hard to say.
You could go further and say that the point of magic is to produce some desired effect through unconventional means. Which might lead you to having a list of 'things'. Each of which has a list of properties (e.g. position, velocity, appearance, identity) that can be affected through magic. Therefore, by now knowing what things you can affect and the ways in which you can affect it, you can more easily define a system of rules governing the process by which you affect them. This, unfortunately, seems to bring back a problem I wanted to avoid: a preset and predetermined, though not explicit*, list of spells.
* i.e. the effect is not hard-coded, but the rules enforce a limited and unique number and type of spells
Part of me thinks it would be good if the spell system has the same level of control ( with certain limits to stop overpowering spells ) that a simple scripting language would provide. The only caution to that is the chance of magic making becoming more of an exercise in mundane programmatics than an activity of creativity and fun. The key, I think, is balance between control, creativity, logic, fun, and skill.
Also, you wouldn't necessarily have to base the system around combative magic. The magic could be for puzzle-solving and/or just simple(or not-so-simple) sand-box type fun.
Perhaps I'm overthinking this... did anybody even follow what I just said? Heh.
I like this idea very much! I've thought of similar things in the past, but this is a lot more "in-depth"
The grid idea that you had in your first post remided me very much of some sort of magical circut board. If a circut isn't complete or flows back on itself or any number of other things it won't work, but if it's all connected together just right with a bit of know-how you can do just about anything!
One extra little idea to consider: If you want a way of restricting player from getting really huge spells from hte get go, you may require that they have to combine different items together to create the spell. Like Diablo's Jem system, but more customizable. The player collects different stones that have differnt properties. Rubys contribute a fire element, Opals Water, Diamonds enhance the effect of a spell, etc. The quality of the stone would dictate how effective it is in the long run. (So a flawed Diamond would slightly increase the power of a spell, but a flawless Diamond would increase it's power tenfold) Tying back into your grid idea, the gems could be placed on a "spell board" that shows how the elements connect together, basically the spells "circut". Of course all of this would be a real pain to program, but if done right it could be awesome!
I'm kinda rambling, sorry. I just like the idea. Good luck, man!
// The user formerly known as Tojiro67445, formerly known as Toji [smile]
The grid idea that you had in your first post remided me very much of some sort of magical circut board. If a circut isn't complete or flows back on itself or any number of other things it won't work, but if it's all connected together just right with a bit of know-how you can do just about anything!
Yes, I thought much the same. Also, I'd also thought that a spell could be altered depending on whether the path of the symbols was cyclical or non-cyclical, and whether they crossed each other anywhere. ( though, after having draw some meaningless spells that had crossovers, I decided that crossovers looked kinda ugly... heh)
Quote:
One extra little idea to consider: If you want a way of restricting player from getting really huge spells from hte get go, you may require that they have to combine different items together to create the spell. Like Diablo's Jem system, but more customizable.
This could work :] Perhaps certain symbols required 'physical backing,' such as certain items, elements, gems... , before they would work ( or work well... heh ) But then you need to figure out how it plays into the grid.
Sounds like what you're shooting for is a more complex variation of Evil Islands. They had basic spells like fireball/heal, and you attached runes to them like double power, double duration, decrease cast time, autocast etc. You had to have a certain casting skill for a type of spell to be able to use a combination of runes. I loved being able to customize every spell on me with runes. Attack spells could be attached to weapons to cast on attack, and they would have a mana pool based on the weapon's power. It was a very clever system and I'd highly recommend looking into it for your game.
I've probably mentioned this many many times before, but I still like the idea of composite symbols. Pretty much create a "spell" language that uses compositions of simple symbols to represent more complex things. So, sort of like the number system in the language D'ni from the Myst games. The numbering system is composed of a few basic symbols and composition rules for combining them so you can count higher, like rotating a symbol, putting two together, etc.
On the implementation level, it becomes much easier, since each base symbol would then serve as some sort of modifier to later symbols, kind of like a predicate logic system. So, sure you can composite any set you choose, but the spell gets more complex as you try to make them larger. The hard part would probably be for the system to break the complex symbol apart into its base elements and then process it, but that can be worked around with some other mechanism.
The possibility then becomes alot larger than imagined. It also provides the built in fail-safe that super-powerful spells will take quite some skill and time to cast. Of course, there may be quite a few combinations in there that are duds, since they contain conflicting attributes, but then that's just something the players may just learn through trial and error.
point = ptline = lplane = plsphere = sphhorizontal = h, vertical = vTransform = TfTranslate = TlRotate = RtAir = A invisible wall = A + Tf + pl + v invisible platform = A + Tf + pl + h invisible sheild/levitation = A + Tf + sph + objFire = F fireball = F + Tf + pt + Tl + (direction)
Just some brainstorming.
I'm imagining a system similar to that of Wheel of Time, at least as far as elemental types. In Wheel of Time, the One Source (magic) is done by weaving multiple strands of elements together (eg., an eavesdropping spell is different weaves of Air and Spirit, IIRC). The actual incantation procedure would be quite the opposite, since they're forming threads of magic (think intricate rope piece), and we're using an actual language.
The similarities I would like to keep would be the ways in which the magic works. Using the One Source from WoT, one would create these weaves to manipulate the surrounding environment on an quantum/atomic level. Physical atomic variance results in 'magic' (this is in contrast to Star Wars, where the Force is divinely inspired).
This type of process would definitely be easier to create a language for, IMO, since all you'd need to do is describe what types of effects you'd want, rather than have a limited number of 'actions' to switch around. I think it lends itself more freedom and possiblities when you have a system where you can describe heating the water in an individual/object, then having that individual/object explode, combust, melt, etc. Or you could describe super-cooling the immediate air molecules around you, creating a fog barrier.
:stylin: "Make games, not war."
"...if you're doing this to learn then just study a modern C++ compiler's implementation." -snk_kid