Areas of Development:
Skills / Spells
I will be working on a set of commands that can be used to manipulate data in files to make it faster to save information or update information within different data files used by the bot. I am thinking about making the commands specialized to prevent having to note the directory when using the command. For example, a 'playersave' alias could be saving the information to a player's save file while 'npcsave' could be saving it to an NPC's temporary save file. While this means more commands that need to be built, it prevents issues with choosing the wrong directory when writing the code and makes it simpler in the future for others to help with the development process; they just need to look at the different commands to save to files.
While this is relatively simple, I want the registration process to be robust in how it is handled to make it easy to add new features and stats to the game. The registration process should rely on a set of aliases to make it easier to enable and disable things.
Ensuring that players can protect their characters is essential. Since one of the ideas is letting the same user have multiple characters, I want there to be a system to switch to another character or even control your characters in a single party while also putting a password system into place requiring someone to authenticate before they can play. This system would strengthen security and ensure that someone doesn't just come out of nowhere and steal items. Passwords would be encrypted via MD5 and only stored in that way.
The idea would be to clear any commands that have a password in them to prevent passwords from being leaked in a log file or within the actual character data files themselves. Either way, I am also going to put a notice in the game to use a unique password for the bot that has never been used before as a way to further protect the players.
There are a number of things I want an admin to be able to control such as temporarily shutting down the bot and disabling certain features or areas if there is an issue identified. This will be done via commands in a private message on the bot. They should also be able to make announcements and such through this system and give / take items or modify stats on-the-fly.
For each feature of the game there will be an accompanying settings file to allow admins to make changes to the game on-the-fly. For example, one of the settings for exploration could impact the chance of a rare random event occurring. On a weekend, the admin could decide to double the chances of rare events for 48 hours and put and change the setting accordingly. Settings files will be updated either by editing the file directly, or by using commands in the bot to make the adjustments.
I want a feedback feature to be built into the bot where the player can file a bug report or make a suggestion. This would enable me to go through them when I am working on the bot and reach out directly to the person that made the submission for clarification. At the same time, I want there to be a bug tracker that they can log issues in which would also make it easy to track issues and mark them when they are resolved.
Each and every single command and line of text is going to be logged to make it easy for me to take action against those trying to misuse the bot or insult other players. It will also serve as a great way for me to debug issues as I can see what happened and when and deduce issues directly. I will need to make sure to remove passwords and such from the log automatically, but log the requests so I can tell if someone is just trying to guess passwords of other users or something to that extent.
The exploration system is going to be built to enable players to run into events that require them to make choices as well as battles and random items. This could include a string of random battles and other things. Exploring would give the player a random event while traveling would enable them to switch to another area, provided that they meet the requirements to access the area. Not all areas can be explored, such as towns and villages, since you essentially already know what is there. Areas like fields, forests, and such can always be explored.
The combat system will follow a turn-based approach where each player gets a turn to take an action depending on their agility and other skills that might affect their turn order and number of actions they can take in a round. Combat is between two different parties where outside parties are not able to influence the outcome. I may extend battles to multiple parties or larger parties, especially for special events, but I think for large events it is better to have a set number of enemies and then each party will challenge an enemy or group of enemies at a time until all of the enemies are defeated.
To produce a truly challenging combat system I am going to be implementing a form of scripting for AI enemies in the game. The idea is to give them a set of instructions based on the current situation such as gaining a new attack when they are below 50% health or getting a free cast when a specific skill is used on them. This will allow for me to make enemies that have multiple stages to them and also introduce new enemies to a battle if the circumstance are right (such as summoning a new enemy when the current enemy is at 20% or less health).
I've had an idea to introduce a loot system that would enable for randomized stats on loot, but given the nature of the game I don't think that is something that would be easy to use. Since two different items could have the same name, it would be cumbersome for the player to choose which item they are referring to whenever they need to do something with it. Instead, I am going to have static loot, but I want the loot to be quite variable in terms of its purpose and the quality of it. The idea is to have quality levels on loot enabling the same item to have better stats based on what quality level it is. I am still working out the details on this.
Since I am planning a wide variety of loot, trading between players is going to be greatly encouraged in order to allow players to get the drops they want from encounters. Players could opt to just keep grinding for the types of items they want, but trading could be a great opportunity for them to find items. I am wondering if I should do an auction system in the game to allow players to put items for sale that others would be able to search for, but I am not sure how that would be designed or how I could make it easy to use. Otherwise, we could do a "player shops" system where people can browse others' shops.
Each city/village will have its own shops which have items that players can buy. These could be items that heal / affect the player, equipment, or even quest items that they need to unlock different items. If I were to make a crafting system, they would also be able to buy crafting supplies here or whatever other items would be useful in the game.
Quests in the game will be found by talking with NPCs and randomly stumbling upon them when exploring in the game. In essence, a quest will give the player an objective. Once the player completes that objective, they either get another objective or they are rewarded for the quest. Quests will be the main way to progress to new areas in the game or to get special items / make money. They will often require additional exploration or access special areas in order to complete. Some may require the player to find a specific item.
Skills / Spells
(I will expand upon this later, it really comes down to how I decide to handle the skill / spell trees.)
One idea to keep the game fresh is to have timed events where everyone is able to work together to try to defeat a certain number of enemies in a specified amount of time. The benefits would most likely be increased experience game and increased drop rates during the event. I will work out the specific details on this at a later date since it might be an after launch thing.
One of the primary ways players will become stronger is through leveling. Players game experience whenever they defeat an enemy or complete a quest that awards experience. I may implement other ways to gain experience. Leveling will give players better stats and more skills / spells that they are able to obtain, although I may offer another way to unlock skills and spells outside of just leveling. I am unsure of whether I am going to lock any items or skills / spells around leveling as I generally find that type of restriction to be rather tedious. If someone gets a hold of a great weapon or piece of armor, they should be able to use it. Stat requirements might be one way to enable players to plan to use better weapons before they would normally expect to be able to use it, but I am not actually sure if I would go that route either.
Note: This is just my immediate thoughts on the structure of the game and how progression will be achieved. Changes can and will be made as the game is being developed, especially once I start receiving feedback from anyone that helps test the game.