The MMO Project Part 15: Thinky pain.
So I took some time to rest. Didn't really end up resting much because cats are assholes but I did spend that time casually writing down some notes based on things I liked about MMOs from the old days, the golden age as it were as well as some notes about the pioneers of MMOs in general. Figured I would translate them from my legal pad to a blog post while I waited to see if the whiteboard shows up today. If it doesn't show up I will get around to writing the security between the servers like I've been meaning to do for a while now and start organizing some of these thoughts into the codeck. Before I do that though I might sit the hell down and mess around in EO and UO, writing down notes about basic things that I may not have considered yet.
At any rate, here's my scramblebrains in no particular order.
- Group Exp buffs. More exp in groups, maybe better drop rates?
- Quests to get into areas. Some epic areas will be epic quests. But things like getting a rope to go down a well(You keep the rope to reuse) Stuff like that.
- All Items have Abstract Properties. This will come in with crafting, dyes, stuff like that. As well as adding unexpected uses.
- Economy - This requires a lot of though, I will need to model it somehow but I could start with basic needs and supply + demand. It's not exactly at the forefront of my mind right now.
- Drop stuff on the ground. It's kinda weird to me that you can't really do this in MMOs anymore. I remember people would drop stuff to help out noobs or just hide crap around maps for player-run events. Or just write their guild name on the ground in Gold.
- Give players tools to deal with problems rather than patching out the problems. Like in UO, there was this guild that blocked up the exit of a town with furniture they made and clobbered anyone who came through the one tile wide exit they made. The seige lasted until the next patch when the devs added the ability for axes to chop up furniture.
- Enemy properties and weapon properties. Eg; A ghost can't be hit with a normal old bronze sword. Rub some spectre oil or whatever on it, no more swish. Or if the weapon was blessed or silver or something to that effect it would be able to hit. Some elements do more damage to some enemies. This isn't 100% going to be part of the game but I do like the mechanic so I will probably try it.
- Downtime is important in old school MMOs. It is where you get to know your group. It should be fun, too. There should be mechanics in place to make downtime interesting. This is something I need to spend a lot of time thinking about but it is something I very much intend to have. I want the game to be social, not like MMOs have become. What's the point of an MMO where you can basically just ignore every other player?
- Chaos zones. Places where PVP is enabled and the Mobs are tougher. High risk, high reward zones mostly meant for groups. Will have patrolling groups of mobs that will wreck a soloer unless they are really crafty and stealthy.
- Hostile Zones - Like Chaos zones but without PVP.
- Diety and Alignment. Not sure if I will implement this but it is something I am considering. I like the idea of being an evil or good character, though. It's always been interesting how good or evil would change how I do a lot of things. This decision is kind of half informed by Everquest and old school cRPGs.
- Epic/Lore weapons. The kind of thing you can only have one of and can not destroy or trade. Something that has cool effects, looks awesome and grows with you maybe? I wish WoW didn't give up on the idea of a weapon that levels up. This is a way later down the road kind of thing but I would like to exeperiment with it.
- Epic quests. How else would you get an epic weapon?
- Environmental Story Telling. Very important to me, I want mysteries to solve that give context clues in the environment. I want to hide interesting things in plain sight. I want to wander into an area and see a little carving in a rock that would just seem like some decoration on most games but have it lead you to some strange treasures or stories.
- Combat pets. Raise and breed pets that can come with you and fight by your side. Kind of a big one for me. I like the idea of having a travel companion you raised. A loyal bud that has it's own skills and stats, probably equipment too. This is a ways off but it is something I want to implement, I will have to consider it's place in grouping as well.
- Day and Night with different mobs spawning in some areas depending on the time of day. This depends on a dynamic lighting system which I will be working on probably by Milestone 3. I want to have it be hard to navigate at night without light or darkvision.
- Fetch quests should be repeatable, just keep giving the items to the npc. Eventually with diminishing returns. Also should not be the primary way of obtaining exp... just a secondary thing you collect while leveling anyway.
- Craft Quests - Something like the Witch in EO. Some items are only obtained by NPC crafting quests which should be fairly time consuming but the reward should be worth it.
- City maps should feel huge. Wont have any cities for a while though, just little towns, hamlets and villages because that's a lot of work.
- Deep forests. You can get lost if you wander too far off the path. Carry a map and a compass.
- Deep dungeons. I like to have some massive dungeons I can get lost in. Places I can set up camp and try to survive. Always wondering if I dare push any deeper in. Hidden rooms, false walls, traps, stuff like that. Some skills allowing the player to disarm traps or spot hidden stuff, like a dungeoneering skillset.
- No istanced dungeons outside of story stuff.
- Timed auction system, so I want to have the auctions run by an NPC who will run it like auctions work in real life. Rather then an NPC who knows of all the items. It should be reserved for people trying to sell expensive things. Maybe give guilds the option to hire an Auctioneer for their guild hall.
- Corpse runs. Kinda like that mechanic, gotta get back to your corpse to get your gear or get someone to res you.
- GM Events. GMs will run events, rather than having them all be automated like most of the stuff nowadays. This I feel gives the events more dynamism and personality. Each GM can bring their own stuff to the events. Maybe allow GMs to suggest events or plan their own events.
- Guild events. Guilds can register events on the calender for all players to participate in. This can be used as a way to recruit new players or as a way to show off how rich your guild is or just to hang out and have fun.
- Mysteries, like I said in the environmental story telling. I want to have mysteries in the game for players to solve and I want them to be rewarded for solving them. This will also take some thinking and research in some situations. Some of these will be really obscure and hard to figure out.
- Puzzles that can spawn monsters.
- Spell words? Maybe have spells be more like chat commands that can be fired with a hotkey so the character says them out loud but doesn't show in the chat log. I know the spam in the chat log would drive people nuts.
- Language learning. Some ancient ruins with languages long forgotten written on the walls. Might do, probably wont.
- Make sure that low level players can farm items needed by high level players. This will allow noobs to make money early.
- Dynamic lighting. This depends on if I retool to 3D or not, as the 3D version would have the lighting kind of already built in. The 2D version would require me writing the thing mostly from scratch. This is required for a day/night system and dark dungeons.
- Ships and sailing.
There are more things that I have floating around in my mind but I find that focusing too much on what could be clouds what currently needs to be. It can be quite distracting.
I just thought it would be a good idea to get some of these thoughts down somewhere so I could stop having them in my head, getting in the way of what needs to be done.
The next two things I should be focusing on after the security updates are the inventory and the maps, as I have been saying. I have been putting these off for a while as I have been kinda mulling them over, taking my time figuring them out. At this point I am thinking of having the character inventory be a foreign key of the character which is also the primary key, then have the actual inventory itself be a JSON list field with the item ID and amount. Then have a model for items with the name and description, etc. Then have a cache on the client side so the client does not need to poll for item information every time it needs to display the tooltip. This would be a lot of strain on the server for no reason.
I also have to have a look at some launches for mmos of the past as well as some post mortems. Get some ideas on pitfalls to expect and ways to avoid them.
My eyes are burning today, not sure if it's the lack of sleep or if I got something in my eyes or there's something in the air but main it's hard to see straight. So I am working through the day a bit crippled. It's already 2pm and I've got nothing but this post to show for it. Pretty bad. I guess at least I am organizing my thoughts a bit, so that's something but it's pretty dreadful progress as far as I am concerned.
What I am doing while I figure things out is watching some videos people made about EQ, epecifically P1999. I will probably play that more actually... I kinda feel like it might be the right game for me to play in my down time right now but also it will help me think more simply about my plans for development. The idea is to start basic and build up. I want the game to be more group oriented but soloable for people who want to run solo but it will of course be way faster with a group and probably more enjoyable depending on the folks you group up with of course.
Been writing down the things a map should know and control on the server. Figure if I can't see straight enough to code properly I can at least do some planning. Slow going but really have to consider these things bacause later on it will be hard to refactor this stuff. It's kinda important I think.
The map needs to know a lot about itself and the players' and monsters' positions as well as actually controlling the monsters movement in their idle state. (This will be less traffic I think, if I control individual monster idle wandering with the map, then hand it back to the monster whenever it engages.) Also the map needs to turn off AI if there is no player on it. So having it controlling the idle mode for the monsters will make this easier to do as it will be in one place.
Tha map also needs to be able to prevent players and monsters from ending up out of bounds as well as prevent the player from speed hacking or teleporting. The client is in the hands of the enemy after all.
Alright, managed to work out a bunch of stuff on paper for the maps and inventory. It'll be interesting trying to implement all this. Eyes still burning, might be something in the vents. Anyway it's about time to start cooking some dinner now. Feels like I didn't get anything done today, hopefully I can make up for that tomorrow.
Cheers.