Project Holodeck – An Open Source MMORPG System – Design Document v0.1

The following is version 0.1 of a design document for Project Holodeck, an open source MMORPG framework I’m planning to create. You will be very welcome to join in with this project, which will be released under a non-commercial open source licence. This document, like everything about the project, is currently in development and will undoubtedly change as the project develops.

Game Engine and Status

The plan is to build the game framework in the Godot engine (likely Godot 4 but it could be a later version, providing it remains Open Source). The project will be made available as an Open Source MMORPG framework under a non-Commercial licence; so others can modify it to run their own games, learn how to make an MMORPG, etc.

Skills, Stats, Classes and Progression

Project Holodeck will have levels but these will be more a record of a player’s standing compared to other players within the game; not as a means of locking off content. Similarly, a player who chooses Class A will still be able to learn the skills of Class B, albeit at a higher cost.

A player within a specific class will have their level determined by a formula based on the “core skills” laid out for their chosen class, regardless of the levels they have in non-core skills.

For example, Player X has level 15 in Core Skill A and Level 25 in Core Skill B. Their level would therefore be 20 (if the game is set with a formula to average out all the core skill levels to determine Class Level). Meanwhile, Player Y has level 5 in Core Skill A, level 25 in Core Skill B and level 30 in Non-Core Skill C so their level would be 15.

This ensures that player status can’t be determined simply by looking at a player’s level and is instead determined within the game by the actions a player can perform; and how they use the skills they have available to them.

Players will begin the game with “average stats” that are granted to all players in the same way. Same strength, same magical ability, same dexterity, etc. At the end of the introductory area, a player will be able to change their stats in order to suit their chosen playing style, or to keep them as-is. There will also be facilities in the game world that will allow the player to re-adjust their stats for a price; with a time limit between visits so stats can’t just be altered to min-max for each quest, etc. This will act as a barrier to “munchkinism” and also as a money sink to remove in-game money and help to prevent richer characters getting stupidly wealthy too quickly.

Skill levels can be gained in two ways: by using a skill or ability in-game, or by spending XP on training. Training will cost money if the skill being trained is not a Core Skill (which acts as a money sink to prevent high-level players getting stupidly rich too fast) while Core Skill training will be free from a trainer of the same Class as the character.

Levelling by using a skill should be slow, so a formula will be needed to determine how low a chance there is of a level being gained each time the skill is used. The skill should level faster at low levels, then progressively slower as levels are gained.

In-game actions should rely on multiple skills in order to determine success and failure. For example, fighting shouldn’t simply be a check on Swords (a skill) to determine how well you swing a sword, it should take dexterity (a core stat); Tactics (a skill) and the weight being carried into account as well.

An archer attempting to shoot an arrow on horseback should require more than just Bows (a skill) but Dexterity (core stat); Horse Riding (skill), enemy distance and weight into account as well. This will make the game more realistic; allow for multiple chances of levelling a skill through use; and encourage players to take the game world into account when planning how they’ll get through an encounter.

Level Capping and Restrictions

Items, armour, etc will not be restricted by level. Instead, every item, etc will be available for any player to use but its effectiveness will be determined by your skill level in its prerequisites; and this check will be made every time the item comes into play.

For example, a high level spell may require several skills to be used in order to be cast successfully. If one of the skill checks fails, the spell doesn’t cast – and on a severe check fail, it might even backfire. Alternatively, a complex weapon could simply miss when used; while a piece of complicated armour could fail to stop damage being taken. Next attack (or defence), you might get lucky (or not). The closer you are to the level requirements, the more likely you’ll be to use the item properly; which incentivises using the right stuff for your level without preventing a player from giving something a go.

On the other hand, a dungeon will get ridiculously easy if you’re too high a skill level for it. Players should therefore have the option of temporarily dropping their skills to a level cap that’s predetermined for that dungeon. This will let high-level players run a dungeon with their lower-level friends without dominating the dungeon. The option should be given to the whole group however, so a group who just fancy rushing through a low level dungeon as a party of high-level Uberbadasses for a laugh can still do that if they want to. Maybe they want to get revenge on a boss that killed them a lot when they were lower level? You do you.

PVP and Griefing

PVP will exist but in a limited fashion. PVP battles can happen anywhere but all players begin the game with Non-PVP status. To enable PVP, a player must undertake a Quest within the game and complete it successfully. They will then be able to turn on “Player Killer” status. This status cannot be turned off unless a player has not killed another player in the last hour of in-game time (so logging out for an hour won’t let a player avoid the repercussions of their actions).

If a player turns off “Player Killer” status, they must undertake the Quest again. This is to disincentivise griefing without repercussions, since it will mean you can’t just turn on PVP, kill a guy, turn it off until he logs out and then turn it back on again to grief some more.

It should also be possible to “flag” a player as a griefer and have a case against that player brought to a player-run court. Evidence can then be put forward by both parties and argued in the court, with the player-run judge(s) deciding if a PVP ban (of whatever length is deemed necessary) should be imposed. This will, hopefully, discourage being a dick.

Death, XP Loss, and Looting

Upon death, a percentage of your unused XP will remain with your corpse. It can be recovered by going back to the corpse. This allows players to either avoid the XP loss by venturing back into a potentially deadly situation, or to just chalk the matter up to experience and go about their day.

An “XP bank” system should also be made available, at an in-game cost. Players who know they are going to experiment with something potentially dangerous should be able to “bank” their XP with an NPC/in-game service. The cost should be quite high for this, to prevent over-use of the service and as a money sink to prevent characters getting super rich too quickly.

XP can be earned from combat but the amount of XP generated will depend on the difference between the combat levels of the target and the character. For example, an NPC rat with Claws (a skill) at 3, Health (a skill) at 6, Strength (a stat) of 1 and Dexterity (a stat) of 4 will have a combat level of, say 13 (the exact formula isn’t yet determined). Meanwhile, a character with Sword 4, Health 2, Strength 4 and Dexterity 4 would have a combat level of 22. Since the player is so much higher level than the rat, the XP gain would be less than the rat’s Base XP (which is generated by a formula, which we are thinking will be ([combat level] x 10) + 1 (so 131) but may be changed).

Upon death, a player’s corpse should be placed in the game at the location they died, with all their items left on it. A timer should then be set, after which the corpse will decay and the items become accessible to anyone who passes by. This will allow a player time to recover their items after dying, while also offering an incentive to clean up after yourself.

A player with the “Player Killer” marker set should be able to offer and accept a “Duel” with another “Player Killer” player. In the event of death in this duel, the losing player’s items will be made available for looting by the winning player. This will allow for the option of “full loot PVP” that some people seem to be so vocal about.

Banks and Currency

Banks will exist but not all banks have access to all funds, items, etc. A Bank of X will have branches in numerous locations and money deposited in that bank will be accessible at all branches. Items will not be accessible at all branches, they will be accessible only at the branch they were stored in. Item slots will also be limited at each branch of each bank, with the option of purchasing more slots at each branch for in-game money.

The purpose of this is twofold: it disincentivises hoarding of items in order to attempt to “corner the market” on specific goods should those goods become valuable in-game; and it acts as a money sink to take in-game money out of the game, helping to stop rich, endgame players from becoming stupidly wealthy.

Cash Shops

There won’t be one. This is an open-source project on a non-commercial licence. No facility to make real money purchases will be coded into the game.

Endgame

The hardest content in the game will be accessible from the start, with the hope that this will not only let players see where they can eventually visit but also potentially encourage lower level characters to make huge groups in order to raid the high level bosses. Imagine getting together every newbie on the server and all rushing “King Badass The Hardest” using starting weapons and armour just to see if you can manage to dent him.

Endgame quests, dungeons, items, etc will also be spread out across the main game world, so each location has a lot of low, medium, high and endgame content in it. There’s nothing worse than seeing an empty game zone because newbies can’t find anything to do there and neither can endgame characters, so the only person who visits is the occasional mid-level player doing a quest or two on their way to the next, far more important zone. Let’s keep the world alive by having things to do everywhere.

Once a character reaches maximum level in their Class (currently we are thinking level 100 but maybe this should be higher, say level 300) they will be able to sacrifice all Skills in order to permanently add one stat point to their character. This will give a permanent boost to the character at a cost of having to regain all those levels. The hope is that this will prevent players from sitting at high level without feeling like there’s anything else to gain for their character.