I am, and have been, working on a game. Most of my work has been conceptual, but I'm beginning the technical leap. What I do need help with is a moderation of ideas, though technical advice isn't unwelcome (though be warned I have a strong opinion).
If the wall is too much, skip down to current plans. It would help if you also read at least the background and magic sections. The details provided here are by no means complete, and any discussion is helpful and welcome, but know that its possible that suggestions have already been thought out. This has been my brain child for at least 9 years now.
BackgroundThe game would be best described as a DF for a 1st person RPG. Before I fell in love with DF, I too fell in love with how a complex and deep simulation could provide more flexibility, replay-ability, deeper immersion, and more interesting stories. I could try and list all of the features this game is supposed to have, but it would take too long and I would miss something. A better way is to ask, "If a fantasy world were real, would X exist? Could I do Y?" If the answer to that question is yes, its a feature or use case. So there should be an economy, somewhat realistic physics in combat, ability to start and manage an organization, a somewhat realistic health system, etc.
The world of the game is just one "realm." There are many realms, and where you see realm replace with planet, because thats what they are. In fact, in game the more educated should know this detail. The universe is "managed" on a scale similar to lovecraft, there exist several "cosmic gods" that are completely uncaring for a single, or even most, of the realms in the world. They exist merely to be at war for power with the others. Each has a sphere, and the different aspects of that sphere have different avatars, because the entity (as I will call those "cosmic gods") is body-less. Each entity is effectively a pool of mana, and when drained the empty pool may be appropriated by another entity. The universe currently stands at equilibrium, no entity is powerful enough alone to destroy and absorb another without making themselves too weak. Alliances always end in backstabs, so they basically just glare at each other. They have realized that they can extend their power by making pacts with mortals, but its never been enough. Their sheer power has caused entire realms and ecosystems to form around them; they each have their own domain. And their constant vigilance and watching others has created an entire new realm that links with each of theirs, and is effectively a battlefield.
The world you inhabit is just one of these realms. It is fairly standard fantasy stuff, humans, dwarves, orcs, goblins. I'm on the fence with elves, they're an awful concept, but by stripping away their perfections, much like what DF did, they could be usable. I don't like dragons, or at least dragons that fly (because it either focuses behavior by the player or behavior by the dragon for it to be usable as an adversary. For instance, a dragon could just fly and shoot jets of fire down, and melee focused players would be useless. Forcing behavior is gamey.). Vampires exist, and you could become one, lycanthropy will probably exist with increased transformation frequency, and you could become one. Necromancy is just magic, which exists, transforming to a lich should be possible. The world it self isn't well defined, but I plan on using a limited form of procedural generation. I plan on defining the world like a book, some details explicit, others left to the imagination, or procedural generation in this case. That does mean that kingdoms and cities should be defined, geography described, a world should generally exist on paper, but it doesn't.
There is no real story. The focus of the world is on conflict and power, and there are a series of factions you can join that are opposed to others. The hope is not to create an engaging story, but to provide enough direction the player has something to do, and enough simulation that they can get lost in the details and find their own way. Take that castle. How? You might hire some workers, and begin a tunnel to undermine the walls, and also strip mine a nearby hill side so that you can hire and arm mercenaries. The area proves to be rich, you decide to focus on the mining. After exhausting the area, you prospect other nearby sites, the whole area is rich. You undermine the castle, take it for yourself, and forgot about what cause led you here. You take all of the lords claims of land and become a mining mogul. Or you assassinate all of the leaders in the night, the leadership crumbles, people abandon their posts. Or you poison the water supply. Whatever works.
Technical detailsI'll be using OGRE3D for graphics, I'm considering Bullet physics, I'll integrate Lua for scripting much of the game. The engine is under development, so there are still decisions to be made here. It is worth noting that I value graphics least, and features first, and so I'm not aiming for the best graphical support, especially not where it would require a sacrifice in other features.
I plan to implement a client - server relationship for possible co-operative play. Though the game isn't going to be well balanced (Because life isn't balanced!), so be wary about games with strangers. People who are unpleasant, will unpleasantly drive a dagger in your back, just because.
Gameplay detailsThe RPG mechanics will heavily focus on 2 things, skills and attributes. Skills are malleable, they change over time, and mostly permanent. Skill rust won't exist, its will be modeled in the change in attributes. Skills are governed by different attributes of the character. There is a skill for generally any action you perform, and there is no penalty in using skills outside of your "role." The game has no notion of "class" or "role," instead the player simply is how they play.
Attributes are either physical or mental. Physical attributes are very malleable, they change with the actions the body performs. A sword fighter would become strong and agile, because those are the attributes that his behavior rewards. A sword fighter would be decent with a mace or warhammer because he would have a similar physical build that supports that skill. Complimentary skills that both roles used would also help, such as armor skill, blocking, dodging. Mental attributes are permanent, set up during character creation. I may learn, and I may learn new study techniques and habits, but my propensity for intellect doesn't change, and if it does it is minuscule. There are also some physical attributes that don't change, height, eye color, body build. I have a small build, no matter how much weight I gain, my frame remains the same, nor could I ever have physical prowess in the extreme.
I do intend on supporting different forms of character creation to automatically create a decent set of stats for a particular role. But I also don't intend on allowing permanent attributes to hinder gameplay, a man of average intelligence (as a mental attribute, intelligence is a poor word, cognition?) would make a fine mage. Less than average attributes would require the user to choose them.
There is no gamey "level." The closest thing is an internal device called the attribute queue. In its simplest implementation it, each newly earned attribute goes in the queue, pushing out the oldest attribute. What this means is that you have a maximum number of "attribute points" at any time. The queue can increase, though the exact mechanism isn't known. In reality it will become more complex so that changes in attributes happen smoothly. The idea is that attributes are earned through activity, so being a swordsman will make your body and attributes slowly converge to that of a swordsman. Changing abruptly to an archer or thief, your muscles will suffer from atrophy, your strength will drain over time. Eventually, you will be suited to being an archer or thief, not a swordsman, though you still have the skills. Physical skills, such as swinging a sword or mining a tunnel, draw heavily on physical attributes.
MagicI've tried to steer away from magic up until now. My definition of the world, a real fantasy world simulator, is pretty tough on magic. If it exists, it must do anything that magic can do. If you can write a story about a wizard that did anything, a player should be able to do it as well. Therefore I either cripple magic, or I make it the most dangerous and overpowered part of the game. Should someone like the underking, the king of worms, lord voldemort or dumbledore exist? Yes. But now I have to figure out how to try and balance it, and also provide the mechanism for magic to exist. Should spellmaking exist? Should new types of spells be possible? Or are all spells just the discovery and manipulation of pre-programmed spell effects? How should magic work?
My thoughts on balance are only to make people prefer other classes. If magic were real, it would be
hard. True masters would study for decades. Mages wouldn't be particularly common, and those that are would only know a handful of spells. So, increases in skill associated with magic should take longer than other skills. There isn't muscle memory to help you out, well, that depends on how you believe spells are cast, I subscribe to the belief that the proper series of thoughts do the trick, movement is just to help channel the physical manifestation when its present. Your body also has fewer physical attributes that can change to help you. There may be one, maybe, but the governing attributes would mostly be permanent, no help there. Your friends that chose other "roles" would be progressing faster than you are, struggling to summon a simple fireball, let alone throw it and cause an explosion, while they slay monsters with relative ease. Can you deal with the difficulty, or would you augment your playstyle and hybridize? Would you give it up all together?
So I have a plan on how to balance it, not perfect, but it should help. How does magic work though? And here is what I need help with. Magic has a long history as being a series of arcane words written onto a scroll or in a tome. What if magic was like programming? There are stories (well maybe not many) of mischievous wizards changing a few words of an existing incantation and changing what happens, sometimes with negative results. There are also a number of mages who write their own spells. The words mean something.
So my plan on magic is to create a magical language, which could be translated into raw Lua and run in engine. It would be like providing a framework and providing a translation. Why not go further? There exist different "gods" in different spheres. They could have a dialect of that language that would aid in the construction of spells associated with their sphere. The "gods" in the sphere of order, light, and justice would provide a dialect that makes healing spells easier to produce, while the "gods" in the sphere of death would provide a dialect that makes necromancy possible. Each of these dialects would compile to the original language, which would then compile to Lua.
Development plansI'm planning on producing several small demos focused around a particular feature. Combat and health would be one, magic another, etc. It will aid in a more agile development of the features and engine, and provide feedback. Once the "full version" were complete, or at least mostly complete, I would release a demo that is feature complete. The full game would not be free, but cost something like $5 - $15. It would be DRM free, modding compatible, and after a specified time period, such as 5 years, the game would be released open source. I'm looking at a long time frame, however, and its very well possible I never finish. This game would have so much in common with DF its embarrassing and even appear a little too derivative.
Current plansI'm focused on engine development, but I want to start building the magic system. It could very well be the most complicated part.
For that I could use feedback on what features an aspiring spell writer would be looking for.
Things that would be useful:
- Describe a spell you would like to see, an interesting one that isn't blatantly obvious (fireball, magic missile are obvious, give it a twist)
- Write how you think a spell would look. Make sure it comes with a description, and that it has the elements to fit it to its description
- Features that you would require if you wanted to make a spell
Writing what a fictional spell would look like without any reference is difficult. Here's a poor example I came up with in about 5 minutes:
I summon the spirits of flame //This describes what to initialize the next "variable" with. Fire in this case
May 100 fires fall from the heavens to the land in front of me //Here we create a list of variables, its token being "fires" and we give it a vector to initialize its position, the sky in front of the character, velocity going downwards.
Of the fires, For each flame streak violently across the sky //Here's a loop for each member of "fires" name it "flame" and apply a modifier, in this case to "streak violently" which could translate into increase its velocity
May each flame leave a flaming skar //Still part of the loop, make their collisions result in a "flaming skar" which means to leave a fire burning magically on the ground. Default duration, since no modifier exists. Default intensity.
May each flame leave myself unharmed //Make me immune from my own fire
May each 3rd flame explode with great intensity //one out of 3 "flames" will have a larger explosion
This creates a firestorm. Fireballs fall from the sky, quickly slamming into the earth. A small explosion is considered the default (think 8 inches in diameter) for fireball collisions. It also creates magical flames to engulf the area of collision and to burn for a time, default time, so maybe 60 seconds. The spell also makes the caster immune to his own fire damage from this spell. A backfiring fireball spell would still hurt him, since that's a different spell (different fire).
As you can see, it does follow a form not unfamiliar to whats expected when programming. We do have a variable, its initialized appropriately. We have a loop to iterate. We apply modifications. We even apply some modifications to different members inside of the loop. Some of it is more thought out than other parts, some of the language is filler to make it appear as prose. I invented parts of the framework I needed, but I wrote it such that it could belong to a framework.