Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Another possible MMO thread

I'm not here to steal Ellie's thunder, I swear!

Overview
I want to create an mmo that encourages communication, even if it's archaic in terms of modern MMO design. I also want people to have roles that feel valueable as part of a team. I also understand that there will be many technical limitations to what I can achieve, so I want to design it in a way that makes the burden as manageable as possible. This will alter decisions like what kind of combat system to use, how to interact in the overworld, etc. As childish as "I WANT TO MAKE AN MMO" fundamentally is, I want to keep it as achievable as possible.

Ability Decay/Rustiness: Another part of this system is the way you need to specialise and maintain abilities. It can be imagined like there is an EXP cap, where leveling past an amount of EXP will sap exp from other disciplines. Some abilities may also decay to a point over time, as no one person can be perfect at everything forever, targeting how things work in the real world. This means no single player can max out everything and be the best at it all, it will always be a trade off and thus finding people that synergise with you will be important. Discipline stats are the primary ones that are likely to decay, whereas Basic Parameters are the foundation your character builds upon--they shouldn't decay much, if at all. The scaling here will also be extreme for the EXP sap--getting above a threshold like level 90/100 will mean you lose significantly on other skills, where as only being level 75 would mean you can have multiple other disciplines at reasonable levels at the same time. Ideally, jack-of-all-trades-master-of-none will still be useful for smaller parties.

AFK/Offline functionality: Crafting time is also a big deal. Time is a significant resource, but not in the microtransaction pay-to-skip way. I want adventurers to need people to craft for them as something more than just because they have the level and you don't, but also because they don't have the time. Crafting will also continue when offline, and prevent ability decay, etc. Items can be queued to be performed when offline, and those specialising in crafting disciplines will have access to faster craft times, which will be significant enough to warrant players offering crafting services to others. This is a great option to still be valuable even if you can't spend a lot of time sitting playing in a single session. This leads into trading contracts.

Trading Contracts: Item trading is integral, naturally. This is obviously a requirement, but I'd also like to have trading contracts, where two people can sign a contract and the system will prevent the recipient from doing anything other than crafting with the materials supplied. If the contract lapses the items are returned to the original owner. This is to support item trading for the purpose of running a business without scamming other players.

Merchantry: Merchantry is a bit of a standout. Mechanically, the NPCs won't pay much for players' items. I want to support player driven trading economies, and the Merchantry discipline is designed to support selling player to player, even if it's garbage. Merchants will be able to sell to NPCs for better prices, and they can also open their own stall available to other players. At this point there will be no "Exchange" or "Trading Post", it'll be old-school style. As Merchantry level increases, there is a higher chance of NPCs buying items from your stall, paying your listed price (or above market price). I want people to rely on merchants to sell their items to, rather than going straight to NPCs, again to encourage communication.

Battle System: Active-time battle x Tactical. An ATB where you can also modify your position on the board relative to enemies. This is to reduce animation requirements, but should also provide enough flexibility to be enjoyable. A "regroup" option will likely exist, allowing the battle to pause and party members to discuss tactics during the pause, as all party members control their own character. I'd also like people maining crafting disciplines to be able to participate in combat for fun as well, whether that means I'll need to bias enemies away from them, artificially boost their agility, deprioritise them from AI target selection, who knows. They should be able to perform their craft in combat too, whether its sharpening weapons, repairing armor, healing the wounded, taking coffee orders, etc.

Art style: Time fantasy-esque. I'd like to use something close to the RMXP RTP, but I feel like Time fantasy is executed really well, and reduces pixel art overhead. Battler sprites will be used in the ATB, and these will be generated via 3D model and a shader, allowing for full character customisation and visual equipment. The overworld will have a diluted version of visual equipment, likely limited to hair+colour, eye+colour and armour. Possibly a weapon as well to indicate combat style.


Character physical attributes (aka "Basic Parameters")
These parameters apply across disciplines and are effectively a multiplier for a stat. You can have high proficiency in two-handed weaponship, but if you don't have the strength to back up your combat knowledge, you'll have a hard time. Similarly, if you've been metalworking for your whole life, even at level 1 two-handed weaponship, you should be able to hit harder than someone who's never done any sort of training whatsoever. This is a separation of knowedge vs your actual physical stats.

As such, there will be five main parameters (with regards to combat). These can be leveled up via both combat and crafting disciplines.
  • [dex]Dexterity: proficiency with fine details, required for archery, some magicks, some types of melee weapons that require exceptionally precise movements.
  • [str]Strength: strength, acting like a multiplier to melee attacks and for high-powered bows.
  • [int]Intelligence: how much you think and how adaptable you are to learning new things. Primarily used for casting magic.
  • [vit]Vitality: how weathered and robust your body is. Health and defenses scale primarily off of this stat.
  • [agi]Agility: physical agility, factoring into evasion and movement speed.

Crafting Disciplines
The Basic Parameters are affected by your disciplines. Members from different crafting disciplines will need to work together to build high level gear, as components will be required from more than one high level discipline to craft. There are currently 7 crafting disciplines: Metalworking, Woodworking, Leatherworking, Enchanting, Merchantry, Cooking, Pharmacy. I'd also really like Mining to make an appearance, but having that as a dedicated discipline is probably a bit pidgeonholed without enough area to expand. Perhaps it can be included in Metalworking? It would make sense for it to be based on [dex]+[str] but I'd like dedicated crafting professions to be able to progress in it without relying on the passive [str] and [dex] levels]

Note that these disciplines all have an associated level in the same way as your Basic Parameters. You won't need to only choose one, they will be levelled like any other stat. Gaining EXP in any discipline, whether it's a crafting or combat discipline, will also organically grow your Basic Parameters.

Below is a breakdown of some of the collaborations between disciplines:

  • Bladed weapons: Metalworking + Woodworking
  • Light armor, Robes, bags: Leatherworking
  • Heavy armor: Metalworking + Leatherworking
  • Jewelry: Metalworking
  • Staves, bows: Woodworking
  • Enchanted gear: Enchanting
  • Food: Cooking
  • Potions: Pharmacy


Combat Disciplines
Similarly to crafting disciplines, combat disciplines control what weapons you use and how well you use them. I'm not sure yet if the system should bias towards letting you have a crafting and combat discipline, or just let it naturally focus on one. I feel like one would be more cohesive, but that may be too restricting gameplay-wise.

  • One-handed weaponry: swords and shields, maces. Utilises [+str][+dex]
  • Dual-wielding: sword/knife, knife/knife, etc. Utilises [+str][++dex]
  • Two-handed weaponry: Greatswords, greataxes, spears. Utilises [++str][+dex] for heavy weapons or [+str][++dex] for spears, etc.
  • Archery: Bows, crossbows. Utilises [++dex][+str]
  • Harmony magic (name tbd): Healing and utility. Utilises [++int][+dex]
  • Chaos magic (name tbd): Damage and destruction. Utilises [++int][+str].

There will also be combat secondary attributes that are calculated rather than levelled:

  • [crit]Critical chance: Chance to critically strike. This is calculated based on gear and skills, not a levelled stat. Dexterity may influence this value.
  • [spd]Speed: Similar to crit chance, move speed (used for determining distance to move on the board + affects turn timer) is calculated based on player Agility, gear and skills. Movement speed cannot be levelled outside of increasing Agility, but it doesn't map directly.
 
Yes! I've wanted a Time Fantasy based MMO for years. I tried myself but I got distracted by Celianna and her pretties.

Des released the pallets that he used to make it which might be a good start by the way.

It will be interesting to contrast two games one where the focus is on combat stats and leveling those, and another with none.

Also no, steal my thunder, this is good, we'm making games again
 
Continuing from your thinking of using a 3D renderer to generate battlers from your PWoYM post:
For RMMV the concern is platforms without hardware acceleration available. That's mobile, some web-browsers and occasionally some desktop platforms. That's pretty much why I invested so much time into writing software 3D renderers for MV.
It's all very well that people spin up these wonderful looking Three.js demos in 20 minutes and every lines up to give them a pat on the back, but when you actually publish the game an annoyingly high percentage of players will complain that nothing works (about 1% of players, from the data people have privately given me over the years).

When I was doing discovery phase for an MV game on desktop/web/mobile/Switch (back in 2017, wow!) I specifically went with software 3D rendering for 100% compatibility. Hardware acceleration was going to be added later to improve performance of the 3D graphics.
vdQOQrD.gif

The system here was essentially pre-rendered sprites. The 3D models had their own canvas that they'd draw to and that would be used as a regular sprite. It was a pretty okay system.

So unless you're going for PS1 style graphics and will write a software renderer for that (which isn't so bad, especially considering you're pre-rendering graphics which makes it way more sensible of an option) I wouldn't recommend 3D rendering with MV at least on the client side of things (a server doing it for you could be alright).

Do note all the 3D plugins for MV are either 20 minute Three.js integrations or an unfinished custom implementation in WebGL - would probably be smarter to build exactly what you need in a way that guarantees compatibility for the platforms you're targetting.

There's benefits to rendering 3D, you can do front and back poses pretty easily and visual equipment is practically free.
 
2 MMOs on one forum? My my, interesting times indeed! Not too familiar with what Time Fantasy is. Is that like a Chronotrigger aesthetic?
 
Xilef":2o2cq9yb said:
...[snip] So unless you're going for PS1 style graphics and will write a software renderer for that (which isn't so bad, especially considering you're pre-rendering graphics which makes it way more sensible of an option) I wouldn't recommend 3D rendering with MV at least on the client side of things (a server doing it for you could be alright)... [snip]
I'd like to be able to make a PS1 renderer and resources to match, but I just don't have the technical ability right now and learning will take too long in comparison to everything else I need to do. For now I've decided to do it server side--It will save me a bunch of time that way, and I can let the client stay 2D which simplifies things (for me) considerably. Rendering and caching portraits will be fast enough to handle the heavy lifting server-side. If I had to generate animations, I don't think the server would be able to scale very efficiently, but for portraits/battlers it's probably fine.

The main parts I'm stuck on right now are what to make the client with, and what to make the server(s) with. I'd like to do the server-side stuff in C# as it's my most comfortable language, I do it professionally and there are infinite available libraries for use with it. The primary question is how to create my server-side persistent game world. Should I use MV to build a game, feed that into the C# server and then something else for the client?

Any feedback would be appreciated. I've never used MV before and I don't even own it, but it sounds like I could use it as a creation tool, even if I don't end up using the MV Runtime for anything.

Xhukari":2o2cq9yb said:
2 MMOs on one forum? My my, interesting times indeed! Not too familiar with what Time Fantasy is. Is that like a Chronotrigger aesthetic?
Yep, that's right! The main benefit is that there is a whole bunch of resources already available for it, which helps alleviate the resources issue. Also I like the aesthetic so its a win-win
 
I've been thinking a bit more on how to structure this (because I don't own or have any experience with RPG Maker MV, so I need to daydream while I work out how to obtain it). Below uses scripting and class lingo from the earlier RPG Maker series.

Firstly, I think I'll implement a server-side interpreter for each player's session. The server will load the MV files and interpret them, but only send absolute commands to the client. I want to get to the point that I can create a client that is completely devoid of any data, and have the server send actions to it based on whats on the server.

As an example, if I create an event on the server within the server's MV project, I want that to be sent to the client on load (like, the event sprite, location, animation state, etc), and appear as expected on the map. It will probably be created as a subclass of some sort of Game_Character subclass (both for events and actual players), as we don't actually need the detailed Game_Event info as the server just tells us what's happening as the client is just a visual representation. That event's movements will be sent to the client from the server in the form of "Move event A from B,C to X,Y". This same system will control player characters as well, the server will tell the client where the player is. This will be super laggy for now, but we can do client side movement after server-side has been implemented, as it is important that movement etc. uses server-side as a point of truth.

Ideally the only difference between a player character and NPC is that the camera is attached to them. Of course later down the line other stats will be received but for now that's the goal. I'd like the ability to create an admin tool that allows me to spectate the game world, I think that would be really cool (and it's something I didn't have with my shitty highschool 'MMO'). I feel like if I can make a dumb spectator client that runs identically to an actual player without adding any code or loading any local Map data files, it means that enough of my processing is server side for it to be functionally safe from client abuse.

I'd like to consider load distribution at this point, considering each player and event will have their own interpreter (blocked most of the time of course, but it's still scaling with players and events regardless) so I think having the game interpreting divided by map(s) is the best way to go for now. There will need to be a core interpreter as well that can handle everything that needs validation that isn't on the map, but I'll worry about that one later.

Not sure about how much work it will be to create a server-side interpreter, but I also feel like it is a good way to start as it should be able to be divided up nicely by function so I can chip away at it.

The side-effect of this performance reduction is that I can develop the game as if it was single player, being able to use the RMMV interface to perform all my functions (aided by some additional MP specific stuff of course) which I think is a worthwhile trade-off--creating my own eventing system (syntax+workflow, whether its text only or has an interface of some sort) is an unbelievable amount of work, and it's much easier to match an existing specification and just smash out the interpreter.
 
Before I can start any work on the technical side, I'm going to wait for RPG Maker MV to drop in price as I don't want to pay $115 AUD for it when it routinely drops to $23-30 AUD.

In the meantime, I'm brainstorming items and progression for the different crafting professions. So far I have over 100 items, and it's surprising how difficult it is to keep each discipline's crafting tree even. I really like some of the names I've got for my different fantasy trees and minerals though. Coming up with the leatherworking profession's materials is proving quite difficult--for woodworking and metalworking you can just increase by tree or ore rarity/value, but leatherworking is tricky because it doesn't scale like the others, and I don't want any discipline to be viewed as 'worse' than its siblings. Hmmmm.
 
it's surprising how difficult it is to keep each discipline's crafting tree even.
Yeah this is the issue I'm having. But, when I look at other games, their trees are rarely even also.

I'm starting to think that some skills are just made to be unequal, and that perhaps either the scarcity of their materials or the exp given should reflect that, rather than trying to keep it all the same?

That event's movements will be sent to the client from the server in the form of "Move event A from B,C to X,Y".
When I was doing live players I combined this with a pathfinding system so that instead of just moving the event, the game sort of sets where that event wants to be and it makes its way there.
 
Ellie":136y1h0f said:
Yeah this is the issue I'm having. But, when I look at other games, their trees are rarely even also.

I'm starting to think that some skills are just made to be unequal, and that perhaps either the scarcity of their materials or the exp given should reflect that, rather than trying to keep it all the same?
Yeah, that definitely works when the paths aren't exclusive, then it doesn't matter. But given the knowledge that a player can't max out all stats, if they aren't all worth the same then some people will lose out.

Ellie":136y1h0f said:
When I was doing live players I combined this with a pathfinding system so that instead of just moving the event, the game sort of sets where that event wants to be and it makes its way there.
Considering the server will need to work out the route so it knows where a given character is at all times, I might as well keep it absolute, but your method would definitely work if the player's exact location wasn't a big deal.

After doing more thinking, I might need to change my premise--The core gameplay loop is lacking. For most MMOs you can say that the primary goal is to experience everything in the game, which usually manifests as trying to max out all levels. To achieve that, you'll need to be able to go everywhere so you'll need to be able to fight everyone, which manifests in levelling up your combat abilities. My current concepts don't have either of these two goals in mind, so I might need to rethink my strategy a bit. Perhaps that just means I do away with the EXP cap, I'm not sure. That probably explains why adventurers only go in teams and include characters who main crafting skills in TV and anime, because repairing shit doesn't make for a compelling primary goal.

EDIT: Perhaps for now I should proceed as if it were a traditional MMO, and worry about the metagame later on. I think that is probably the best path forward for now. I feel like theres a lot of underlying stuff that would remain the same regardless, so I might as well prepare it anyway.
 
EDIT: Perhaps for now I should proceed as if it were a traditional MMO, and worry about the metagame later on. I think that is probably the best path forward for now.
Yeah I keep trying to think like this. But it's hard not to open another rabbit hole.
 
Currently investigating RMMV as much as I can without actually buying it.

If it's as autotile-centric as I think it is, I might need to look into alternatives.

Or perhaps I can write/use a tool to let me use Tiled instead, not sure just yet. I'd still like to use it for the engine and editor tools, just the mapping is a huge letdown considering I can't stand the blocky style of the RPGMs after XP.
 
There are people that have made rounder cliff walls and slopes.

I think the biggest complaint is that there just aren't enough resources to compliment the tiles. You know, they got snow forests and forts, but no snow monsters. Same with the desert. They've got 1 town worth of NPCs, and the generator doesn't have anything to wear for those other climates.

Rpg Maker MV Trinity aka "MV Limited Edition", which was suppose to come out on all consoles (hence "trinity"), had some expanded resources. But Trinity was a garbage fire. They canceled it's xbox release, and spent a year patching it for Ps4 and Nintendo. And because it was published by NIS and not Degica I doubt if they'll release a DLC pack on PC for the extra resources.

Also. Hnnngh. As I recall VX was mainly the result of the last global recession. 06-08. It was so underwhelming because I think the creative departments were getting shuffled around. Usually Rpg Maker rolls out with a new edition every 4-5 years, so it's kind over due. So I don't know what this Corona Pandemic will mean for it.
 
I would agree with the possible new engine thing, but at the same time, considering they are still updating it at this point and releasing DLC I can't see how it'd be profitable from the publisher's POV, especially as a lot of the technical limitations that were around with XP and VX(A) are now gone. Those three titles also didn't have the same updating ability MV has. I'd have thought they'd start dropping the price a little if they were preparing to release something new, to try and grab more purchases in the lead up to it.

It also looks like Tiled is an option, but it means that I'll need to make events twice, creating them in MV, then creating them in Tiled and setting their location, which looks like a royal pain in the ass. I'd imagine that can get messy fast.

I wonder if it'd be convenient to make a console script I could run in the background that grabs my tiled maps and creates a preview that MV can load, that way I can still see my events relative to the rest of the world? (Setting a pre-rendered parallax perhaps?) It would mean there's more meta-development to do before development can start which sucks though.
EDIT: looks like the easiest way would be to make a stand-alone tmx renderer using LibGDX, then have it output PNGs scaled x% to match MV's 48x48 tile size. Then I just set the map parallax to the output files and have it regenerate it whenever the .tmx is updated. ...Easy enough, I think?
 
An alternative is to just do all your mapping in a graphics program and consider there being two layers - below and above the player - anything below is just a flat panorama, which you can view in MV's map editor for placing events; anything above is either a picture overlay or events so that they appear above the player.
 
I think I'll leave it as MV's default for now until I run into issues. It's nice to know there are other options though (within reason) unlike some of the old RMs.

Also, I had a moment of weakness and googled MV ABS systems and now I'm falling back down the ABS hole. I had a look at Alpha ABS and god damn it just looks like so much more fun, and would be so much easier to implement mechanically in a multiplayer setting, the only catch is that latency would be an issue, just like every other MMO on the planet except maybe Runescape. I could try implementing it anyway but slowing down the combat pace as far as I can before it's too slow. If I can skirt that line, perhaps it's possible.
 
QABS is good and versatile but it has no support any more and doesn't yet have enemy teams, which I'm going to have t implement myself.
 
Up to the point where I'm implementing the server-side AudioManager, and the separation between client and server is starting to get blurry. It's weird to think I need to track the current playing BGM on the server, but I'll need to, just incase someone is in a cutscene or something and they quit their game.
 
Well it look me forever to data input the command codes to an enum, and that's not even implementing the actual functionality. What have I signed up for? :crazy:
oAwjrYJ.png
 
Fortunately loading all the data hasn't been an issue, I've created C# equivalents of all of the Game_x classes now as well so having virtual maps with virtual events, pathfinding etc. is all good to go so technically I shouldn't be far off running an instance if I wanted. I'm currently trying to work out what to do about actual event processing and how to share it--I think the Al Kharid example is a good thought experiment: the event can't be client side otherwise players can hack their way past, but it also can't be exclusively server side synchronised otherwise it will trigger for everyone and glitch out when someone walks through.

I think, at this point, I'll need to fall back on only synchronising event position (and making even that toggleable) and leaving the event commands fully player session exclusive. This will also make it easier in terms of "what if someone joins mid-event execution on a map" which wont be possible if the actual event commands are isolated per session. Evented raids etc. obviosuly won't be possible for now due to that, but I think for now complete server side processing + semi-synchronised events is a good start. Making a multiplayer game in any capacity that isn't really hackable is a pretty cool achievement, the depth of the multiplayer elements can probably be sorted out later. Starting safe and then making it more complex from there. Another issue is what to do about people closing the game mid-way through an event. I think restricting adding and removing items/editing any long term data until the event is complete is the best compromise, but it's not foolproof and I guess technically if they time it really well they might lose the item and not mark the event as complete/flip the switch. Hmm.

Having the events be processed on a per-player basis also means I don't need to immediately write a new chat system too which is nice.

This post is actually me pep-talking myself up because rewriting Game_Interpreter is the dryest shit ever aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top