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

Another issue is what to do about people closing the game mid-way through an event.
This is tricky.

I am going to have a mix of local variables and server saved variables. Local variables clear if you close the game; server variables are hard saved.

So variables used during an event are local, such that restarting the game restarts the event. But once you've done the event, it's hard saved.

How that will work in practice I don't know, it's gonna take a lot of testing.
 
So you've got session-scope, what type is the second one? (player-scope or server-scope)

I'm looking into doing player and server scopes, and trying to work out the best way to split them. I think putting server variables at like 5,000+ would be good enough. I don't think there's any use in having session scope as it means people will just close their client and reopen to trigger it again (eg. for faster tree spawns, etc)
 
I've been investigating RPGMaker MV and its limitations and I've decided against using it. The main issues are the mapping editor, specifically the way priority works in the tilemap. It's very difficult to make objects walk-aroundable like a tree for example where a character is more than one tile tall as all tiles are either above or below, there is no dynamic ability to determine what should be in-front and behind based on where the two items are located.

Instead I've decided to use MKXP-Z, and I'll be making some changes (hopefully) to support uncapped framerate and any tilemap size.

A few weeks ago, I spent some time converting MV's code to C# so I can run the interpreter code remotely so the client is only a visual representation, with no important code client-side. As part of that, I ended up attempting to copy everything, including stuff I didn't need, which sent me down rabbit holes and eventually got stuck. As with this shift to MKXP, I'll also be rewriting the server again, but trimmed down to only support the bare minimum of what I need for now. Also, because this client will be desktop only, I am able to leverage UDP as well, which I'll be using for non-critical information (movement updates, etc.) and possibly input state (naturally with additional systems on top), I'll investigate that when I get there.

Because it's desktop as well, I'm hoping I can run much larger maps without issue. I want to avoid map transitions for the most part, similar to Skyrim where the outside is mostly the same map including houses, and dungeons etc. are their own maps. Hopefully because the client is going to be super dumb, I don't need to run event update code as frequently as might be otherwise required, so most of the heavy lifting will be the tilemap and network stuff.

Also currently thinking about the most efficient way to set up visual equipment. I'm thinking I'll have a front, back, left, right for each weapon, and I'll specify an anchor point on the sprite and on the character. Then I break the character into many layers and interleave them in the correct spot. Different stances could be an issue though, for two handed weapons. Also attack animations relative to worn armour. Hopefully if I throw everything into a function that renders a spritesheet, I can just add the additional stuff later without too much breaking.

I've decided to entirely not worry about people opening the game files and having a look around, and therefore I don't care about any sort of obfuscation even if it's a desktop app. My goal is for everything to be so server sided that modifying the client does nothing, even with full source code access. If they break visuals and make everything bug out, it just means they'll have a self inflicted poor experience. And hey, if people want to improve my client and make it better, less work for me!
 
Progress update: I've been proceeding with development up until Monday this week, when I hit my next major roadblock. My jank version of MKXP-Z I built for some reason is missing Ruby's Array.pack(). I have no idea why. I had managed to hack Socket functionality in by "require"ing some .so binaries, but I'm not able to do the same for what I thought was meant to be a built in method. I've spent the last four days (now only 3 days of holiday time left) trying to compile CRuby and I can't get it to work. If I can't fix it using 12 hours a day, there's no way I'll be able to work it out once I'm back at work.

So yeah, until I get this worked out (if ever?) no more progress for me. I don't think I've ever been this frustrated before. If the thread dies from here on you'll know what happened. CRuby sucks.
 
Finally managed to compile mkxp-z so progress can resume. Currently trying to work out the best way to handle sending messages between sessions with the least code overhead (for player movements, event state sync, etc.).
 
Thanks Xhu!

Big news: server side logic is now working, with both global and per-player events (in terms of visibility, updates, collision checks, etc.). Global events can interact with other global events, per-session events can interact with both global and other per-session events.

Now to implement the actual event command system (or a basic version of it for now) and spin up a database and we're good to go!

Then I'll only have to, like, make the whole game, yay!

What's also cool is that because the whole game is server-side, people could (if they felt so inclined) make their own client if they're not happy with mine (see: RuneLite). Maybe I should make the client open-source to start with? :biggrin:

In terms of scalability, each world will need to be its own instance of the server, with no clustering or multi-host support. Each session has its own thread. There is one primary game thread, and each tick, all maps are updated in parallel as there will be many, many events and maps to run and keeping the tickrate high will be tricky. Currently it doesn't dip under 60hz, but that's with only one player, fingers crossed it scales wide well.
 
I'm not going to pretend my lil' noggin understood much, but congrats! If you ever need an extra person to test it out as you go, just let me know! Have you got much of your design done sorted or...?
 
Xhukari":3tajrr85 said:
I'm not going to pretend my lil' noggin understood much, but congrats! If you ever need an extra person to test it out as you go, just let me know! Have you got much of your design done sorted or...?
Totally clueless as to the actual design of the game, its all just a technical challenge for me currently. It'd be so cool to onboard someone for lore etc. but its a lot of work for little reward.

In its current state it's more of a framework than a game :lol:

And yes, I'll be sure to keep you posted about testing!
 
Updating this thread with some thoughts I had back in Feb in the Discord:

Thinking about an ability to toggle weapon use from "measured", "neutral" or "ferocious", possibly with increments in between that change how much damage you deal, attack rate, and weapon durability and stamina consumption. This can give crafting characters a role in the fight, being able to repair items between battles, allowing the front line to use "ferocious" more often, same with healers for stamina. Having durability like this also encourages the crafting ecosystem too, and while it may be inconvenient, having the ability to choose how careful you are with your tools is a sacrifice players may want to make for day-to-day use to make repairs less intrusive, with the ability to ramp it up a bit in a pinch.

Having weapon durability in this fashion will also encourage players to have more than a single primary weapon, like one for bosses and one for grinding/ads. This may also introduce meaningful variation between the different metals/alloys--eg. ingame, darksteel is a steel/carbon hybrid material, described as retaining a sharper edge, at the cost of increased brittle characteristics and was previously the next "tier" above steel, but now it could be more of a sidegrade, or have a specific use for special weapons used infrequently due to its accelerated degradation.

Weapon repair kits would be available for craft/purchase, and weapons won't disappear when broken so you can get as attached to them as you want, and grinding in the field for a while shouldn't have too much transit time if you're carrying items and using measured strikes.

Currently unsure of how to manage the magic system, whether to go component-based like Runescape or Mana based like... most other MMOs. While the component system is annoying, I find that my impression of magic is changed as it feels like it's not bullshit from nowhere generated by a blue bar, but actually constructed using elements from within the world and genuinely valuable. It also adds more components to the ingame economy. Hmm
 
I think having a partner would be really cool, like an AI partner that you could control the behaviour of as well (spell options, tactics, etc), along with chatting to them Skyrim style. Give them equipment, a playstyle, provide company

Another thing is the Merchantry craft--It'd be really cool to have high level merchants able to have a cart that takes items from place to place, accessible in dungeons and stuff. Also, using the same trade contracts that allow players to ask other players to craft items for them, the same thing could be used to transport items between banks.
 
Durability is a tricky one. As to my understanding, it is one of the elements that is rarely liked in games (Fallout for example). Or side-lined to practically not exist (WoW). If you do want to do a durability system, I would strongly urge you to avoid similar systems to what Fallout had. Where the performance of the equipment would gradually lessen as the durability went lower and lower. Maybe like a milestone system instead? Such as, 100-75% the weapon performance 100%, 74-50% the weapon's performance 90%. Or something like that.

Do you still have your weapon disciplines? Because I think dealing with durability and components as a magic-weapon user is going to suuuuck. Call me bias, but I'm a fan of Guild Wars 1's mana system. Where essentially armour that offered less defences, would offer more mana regen and higher mana totals. Though that game also had it so that you had a smaller pool that recharged quickly, compared to something like WoW.

Another option is of course -- why not both? Have a mana system in place, but then for specifically powerful spells, you would need components. Hell, another possible idea is that you could even have the components change the element of the spells. So like, it defaults to an Air element, but add a fire component, now it's a fire spell?

Partners could work. It sounds like a more advanced AI than you see in most MMOs for their combat pets. Though I would suggest a way to make going partner-less perfectly viable. As there is a good number of people who don't like dealing with followers in the slightest.
 
Xhukari":8g4bjrg7 said:
Durability is a tricky one. As to my understanding, it is one of the elements that is rarely liked in games (Fallout for example). Or side-lined to practically not exist (WoW). If you do want to do a durability system, I would strongly urge you to avoid similar systems to what Fallout had. Where the performance of the equipment would gradually lessen as the durability went lower and lower. Maybe like a milestone system instead? Such as, 100-75% the weapon performance 100%, 74-50% the weapon's performance 90%. Or something like that.
For sure. I think it'd be better to integrate it properly rather than have it technically there, but sidelined. I wasn't thinking of adding damage scaling based on durability, because that really would be a constant pain in the backside, but rather a broken or not-broken status. It's more to encourage the player to bring more than just the gear they're wearing, and rather than have the super sword that is always used until they find something better, to instead use different weapons for different situations and to think about backup gear too. If it ends up being no good, I can just remove it, easier to later remove than add, but I'd be interested to see how it plays.

Xhukari":8g4bjrg7 said:
Do you still have your weapon disciplines? Because I think dealing with durability and components as a magic-weapon user is going to suuuuck.
Hmm, I hadn't considered magic weapons as a magic discipline, but having magic behave more like "skills", and weapons affecting the default attacks. You could spec into just magic, but you'd struggle when it comes to melee combat. More powerful spells that have better scaling have a higher resource cost, but you don't have to use your strongest spell all the time. It'd also behave like the equivalent for needing to repair weapons. Magic may end up being hard-mode, but I'm OK with that.

Xhukari":8g4bjrg7 said:
Another option is of course -- why not both? Have a mana system in place, but then for specifically powerful spells, you would need components.
This is also an option, but I was hoping to find a way around using "mana" as a resource, but it's not out of the question. I don't have any specific reason for wanting to get rid of mana.

Xhukari":8g4bjrg7 said:
Hell, another possible idea is that you could even have the components change the element of the spells. So like, it defaults to an Air element, but add a fire component, now it's a fire spell?
Hmm, for now that'd be out of scope, I feel like that kind of mechanic would be a little more complex than would be worth for now, but I appreciate the idea.

Xhukari":8g4bjrg7 said:
Partners could work. It sounds like a more advanced AI than you see in most MMOs for their combat pets. Though I would suggest a way to make going partner-less perfectly viable. As there is a good number of people who don't like dealing with followers in the slightest.
That's a good point. I'll need to have a think about it, it'd definitely make life easier two compared to one, so keeping it balanced would be difficult. It might need to be relegated to optional late game content perhaps, even if adventuring with a partner would be fun early. I also have no idea how I'd give the full customisation mechanics an in-world explanation other than being some sort of conjuration, perhaps. Hmm.
 
ZenVirZan":2t4xjvsr said:
I wasn't thinking of adding damage scaling based on durability, because that really would be a constant pain in the backside, but rather a broken or not-broken status. It's more to encourage the player to bring more than just the gear they're wearing, and rather than have the super sword that is always used until they find something better, to instead use different weapons for different situations and to think about backup gear too.

Definitely worth a shot! So it would be a binary 'can be used' / 'cannot be used'? As that is how WoW has it, though admittedly they have it with a massive amount of durability on the gear. Your system reminds me of Dark Souls, now I think about it. They have repair powder there too. And potentially an idea you could borrow from those games; some skills cause a big drain on the weapon's durability. Could be a way to add more value to the durability system, on top of your 3-way fighting style drain thing. :)

ZenVirZan":2t4xjvsr said:
Hmm, I hadn't considered magic weapons as a magic discipline, but having magic behave more like "skills", and weapons affecting the default attacks. You could spec into just magic, but you'd struggle when it comes to melee combat. More powerful spells that have better scaling have a higher resource cost, but you don't have to use your strongest spell all the time. It'd also behave like the equivalent for needing to repair weapons. Magic may end up being hard-mode, but I'm OK with that.
Oh that's interesting. I just assumed they would use stuff like wands or staves when I saw them listed in the disciplines. Sounds like most people would just dabble into a small bit of magic, and that outright spellcasters would be rare (due to said hardmode-esque). Hopefully the difficulty would be worth it! But I guess that's a balancing issue. It would seem that being a richy rich rich would benefit a spellcaster a lot more than the more traditional melee user. So I would imagine players would have alt characters / accounts that they funnel riches to, to fuel their progression?

ZenVirZan":2t4xjvsr said:
This is also an option, but I was hoping to find a way around using "mana" as a resource, but it's not out of the question. I don't have any specific reason for wanting to get rid of mana.
That's a fair shout. Would help differentiate your MMO from all the other mana-based ones out there. And with the component and durability system, you've at least got some form of cost beyond cooldown (which is one of my biggest issues with Guild Wars 2).

ZenVirZan":2t4xjvsr said:
That's a good point. I'll need to have a think about it, it'd definitely make life easier two compared to one, so keeping it balanced would be difficult. It might need to be relegated to optional late game content perhaps, even if adventuring with a partner would be fun early. I also have no idea how I'd give the full customisation mechanics an in-world explanation other than being some sort of conjuration, perhaps. Hmm.
Well another possible idea, is that you go all the way with it instead. Accept you won't win over those who dislike followers, and essentially build all the encounters to assume there will be at least 1 player and 1 AI. That way you can also delve deeper into monster mechanics, and really expand the synergy between the player and their follower. It could essentially become one of your Unique Selling Points.
 
Cross-posting from HBG as it was lost during migration:

Xhukari said:
Your system reminds me of Dark Souls, now I think about it. They have repair powder there too. And potentially an idea you could borrow from those games; some skills cause a big drain on the weapon's durability. Could be a way to add more value to the durability system, on top of your 3-way fighting style drain thing. :)
Dark Souls 1 was the first thing I thought of in terms of weapon durability balance :lol: Not quite the same as how I'd implement it, but was definitely the first thing that came to mind!

Xhukari said:
That's a fair shout. Would help differentiate your MMO from all the other mana-based ones out there. And with the component and durability system, you've at least got some form of cost beyond cooldown (which is one of my biggest issues with Guild Wars 2).
I personally really liked the cooldown-only mechanics, but I feel like GW2 was lacking some other stuff and was almost too streamlined in some cases, combat probably also played into it a bit there (instant health regen, nothing having lasting effects)

Xhukari said:
Well another possible idea, is that you go all the way with it instead. Accept you won't win over those who dislike followers, and essentially build all the encounters to assume there will be at least 1 player and 1 AI. That way you can also delve deeper into monster mechanics, and really expand the synergy between the player and their follower. It could essentially become one of your Unique Selling Points.
I am definitely considering that, like, a lot, but I worry I've already thrown enough mechanics at the player. I'll see how it goes from here, it's definitely not off the table though, if I could make it understandable in-universe. I think it'd be a lot of fun to adventure as a duo--makes getting extra gear more fun too, and you can experiment having your follower use a playstyle that differs from your own or aren't interested in playing.

I appreciate the thoughts Xhu!
 

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