Author Topic: Coming Soon  (Read 210027 times)

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #260 on: June 24, 2015, 01:44:56 PM »
In a totally unrelated matter: with all of this chatter about using CoXMPP as a vehicle for virtual tabletop gaming, have you given any thought to including dice rolling commands? AIM does this with a pretty simple format, it's something like //roll-dice-#-sides-# (ex //roll-dice-5-sides-10 for 5 10 sided dice), which would cover the overwhelming majority of dice-based gaming needs. Alternatively, dice notation common to P&P would be less verbose for traffic concerns, ex /roll 5d10 for the same logic.

It's something I hadn't thought of until yesterday when people were talking about using the /em dice emote for it. But it wouldn't be hard to do and could print its output in everybody's system channel, "soandso rolls a 6 (20)" for instance if you rolled a d20. I'll add it to the list.

Nyghtshade

  • HERC Advisor
  • Elite Boss
  • *****
  • Posts: 881
Re: Coming Soon
« Reply #261 on: June 24, 2015, 02:28:26 PM »
First, in case I haven't already said this, I just want to thank everyone working on this project for their vision, determination, compassion for the entire CoH community in putting together this project, not to mention the years of hard, hard work.  We are all in your debt, and you all have my heartfelt thanks for SoonTM

Second, having that die-roll feature for everyone using SoonTM for tabletop gaming - that would be awesome!

Last -- and I don't need an answer, just hoping it's covered in the upcoming FAQ post -- it was mentioned that each instance caps at around 30.  I'm hoping there'd be a way for a group of friends logging in to all choose the same instance to RP together, or at least choose a zone that didn't have a ton of instances.  That would certainly be helpful, too.

Again, heartfelt thanks for all your group is doing on this, Codewalker!

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #262 on: June 24, 2015, 02:38:41 PM »
So we won't be doing that closing scene from "Unity" live then ... AWWWW :'(

( ;D)

See Y'all in Atlas Park 333!

It can be changed on a zone by zone basis, so on launch day I may set Atlas Park to "unlimited" and see if we can crash the server. :D

Last -- and I don't need an answer, just hoping it's covered in the upcoming FAQ post -- it was mentioned that each instance caps at around 30.  I'm hoping there'd be a way for a group of friends logging in to all choose the same instance to RP together, or at least choose a zone that didn't have a ton of instances.  That would certainly be helpful, too.

The zone cap is simply the "maximum users" enforced in a chatroom by the XMPP server, it's not part of the client software itself. So for a close-knit group you do have the option of running your own server to use for events like that if you want, and setting the default chatroom capacity to 50, 100, or even unlimited. The server we've tested this project the most extensively with - Openfire - is quite easy to install and set up.

The characters you create are not tied to the server, so you can jump back and forth between logging in to our public one and logging in to your private one with ease.

BraveStar

  • Lieutenant
  • ***
  • Posts: 54
Re: Coming Soon
« Reply #263 on: June 24, 2015, 02:48:18 PM »
"excuse me, little hero. Do you have a moment to talk about our lord and savior?"

This forum software really needs a "Like" button. LMAO

ValianceOnline

  • Lieutenant
  • ***
  • Posts: 87
    • Valiance Online
Re: Coming Soon
« Reply #264 on: June 24, 2015, 02:48:38 PM »
Wow that is awesome!  8)

BraveStar

  • Lieutenant
  • ***
  • Posts: 54
Re: Coming Soon
« Reply #265 on: June 24, 2015, 03:05:33 PM »
You know the talk about using this for a virtual tabletop made me think of an interesting question; Would everyone who teleported (or whatever you want to call it) to a specific mission map be in the same instance of that map or in separate instances? If separate, would there be a way to get friends onto the same map instance that you are in?

Another interesting thought; Would it be possible to make the player who spawned an instance the owner of that specific instance with rights to spawn and control NPCs? This is just random ideas bobbing to the surface of my mind. I know you folks are already very busy just getting Soon(tm) working.

Joshex

  • [citation needed]
  • Elite Boss
  • *****
  • Posts: 1,027
    • my talk page
Re: Coming Soon
« Reply #266 on: June 24, 2015, 03:12:36 PM »
That would mostly depend on how much of the client-server communications protocol is supported by the client side of SOON.
While developing the actual server would still not be easy, with SOON handling the communications it would be easier than otherwise.

battle calcs require range triggers, this means the program doing the calcs (the server) needs to have character positions and orientations as well as range sensors, and also means it needs to have the geometry, OR you could bypass the geometry by taking the player's reported position as cannon (allowing client geometry to assume the lead)... but that would allow players to attack through walls... yeah... there would need to be some environment geometry on the server. For this and for enemy spawning and motion.

but that sort of stuff would definitely be too close to a C&D for comfort.

for the most part though taking the player's position as the lead works. and could even help define the geometry. (direction is pressed at this location and no motion is allowed. spawn wall here.)



keep it on the backburner for if negotiations fail or don't yield what we all need. or keep it for if the negotiations are stalled for another year.

this reminds me, I think I'll replace my near sensor with a .getDistanceTo() bend. it will allow exact range control. I'll probably just keep the near sensor as a melee range "object name" recorder.
There is always another way. But it might not work exactly like you may desire.

A wise old rabbit once told me "Never give-up!, Trust your instincts!" granted the advice at the time led me on a tripped-out voyage out of an asteroid belt, but hey it was more impressive than a bunch of rocks and space monkies.

OzonePrime

  • Elite Boss
  • *****
  • Posts: 376
  • Never Give Up! Never Surrender!
Re: Coming Soon
« Reply #267 on: June 24, 2015, 03:49:48 PM »
Sweet! Hanging with my buds again, in Paragon! :)  Thanks guys!

Leandro

  • Elite Boss
  • *****
  • Posts: 310
Re: Coming Soon
« Reply #268 on: June 24, 2015, 04:17:12 PM »
battle calcs require range triggers, this means the program doing the calcs (the server) needs to have character positions and orientations as well as range sensors, and also means it needs to have the geometry, OR you could bypass the geometry by taking the player's reported position as cannon (allowing client geometry to assume the lead)... but that would allow players to attack through walls... yeah... there would need to be some environment geometry on the server. For this and for enemy spawning and motion.

Soon already needs (and uses) all of that. It loads the map from the same pigg files the game uses and does collision detection, as well as verifying that the motion sent by the client is valid (Codewalker can chime on the absolute pain that it was to duplicate the movement precisely). It needs to parse the maps, otherwise it wouldn't know where spawn locations are, where to send you to when you click on a door, or what to do when you click on an NPC.

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #269 on: June 24, 2015, 04:34:09 PM »
Yeah, you can't do anything in COH without the geometry. That's because the client doesn't send position updates to the server at all, it sends control inputs: forward, back, jump, etc. It's literally impossible to build a working server, translation layer, or anything else unless you can load the geometry and do a reasonable approximation of the same physics* and collision that the client does. If you don't get it close enough for government work, it's City of Constant Rubber Banding.

That's the main reason that getting movement working right has been such a bear for SEGS.

* Including wackiness like the gravitational constant being different when you're moving up versus moving down

Joshex

  • [citation needed]
  • Elite Boss
  • *****
  • Posts: 1,027
    • my talk page
Re: Coming Soon
« Reply #270 on: June 24, 2015, 04:56:30 PM »
Soon already needs (and uses) all of that. It loads the map from the same pigg files the game uses and does collision detection, as well as verifying that the motion sent by the client is valid (Codewalker can chime on the absolute pain that it was to duplicate the movement precisely). It needs to parse the maps, otherwise it wouldn't know where spawn locations are, where to send you to when you click on a door, or what to do when you click on an NPC.

but then.. the server code would be built into the client, making it a stand-alone application with networking.

for battle this will be disastrous, I can already imagine the trolls. you log-in and are auto defeated every step by @HahaU5uk who is not in range, zone, shard and is not a valid known target.

when you say collision detection, do you mean physics so objects don't go through each other? or do you mean 'Object type = Static:Actor with a property "wall"' for a battle calc to draw a line between and say if wall.positive: cancelattack?

and here I am ignoring my own work to ask questions about yours lol. oh well I hope for the best. I have many more interface and programming questions but for the sake of not putting you on the spot and getting back to my own project wont ask.

Yeah, you can't do anything in COH without the geometry. That's because the client doesn't send position updates to the server at all, it sends control inputs: forward, back, jump, etc. It's literally impossible to build a working server, translation layer, or anything else unless you can load the geometry and do a reasonable approximation of the same physics* and collision that the client does. If you don't get it close enough for government work, it's City of Constant Rubber Banding.

That's the main reason that getting movement working right has been such a bear for SEGS.

* Including wackiness like the gravitational constant being different when you're moving up versus moving down

ah so it does use that system! I thought that was a unique method I had developed to save server bandwidth by sending key presses instead of pickle location like a lot of other MMOs do. should have figured CoX's devs were smart enough to come up with that lol.

For flight I actually have a system you might find useful, I included a Local upward motion just strong enough to stop gravity but not strong enough to move the object. by doing this 'real physics flight' the 'gravity' scales itself. probably not very helpful now though as you've got your own system.

impressive work then seeing as you've gone through all that.
There is always another way. But it might not work exactly like you may desire.

A wise old rabbit once told me "Never give-up!, Trust your instincts!" granted the advice at the time led me on a tripped-out voyage out of an asteroid belt, but hey it was more impressive than a bunch of rocks and space monkies.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #271 on: June 24, 2015, 06:43:16 PM »
ah so it does use that system! I thought that was a unique method I had developed to save server bandwidth by sending key presses instead of pickle location like a lot of other MMOs do. should have figured CoX's devs were smart enough to come up with that lol.

You them and pretty much everyone who's ever done client-server programming.  But the real innovation is meshing that with client-side prediction.  Client-side prediction (and all that requires) I believe comes from the mind of John Carmack, which he implemented first in Duke Nukem, then refined for QuakeWorld, the multiplayer version of Quake, to deal with high latency low bandwidth dial up internet connections.  The important innovation wasn't sending inputs, it was coupling that with player-prediction to reduce the perceived lag of the system and allow for smoother control.  The downside was something every CoH player has seen: in certain situations where the server and client get out of sync, the system has to eventually correct for that which causes what Quake players called "warping" and we called "rubberbanding."

I would reasonably guess this feature is in CoH, the development of which started circa 1999, because of QuakeWorld, which was released in 1996 and whose (design) features were discussed in depth in the gaming community.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #272 on: June 24, 2015, 07:28:00 PM »
I should amplify a bit.  Why is sending inputs instead of position information not an interesting innovation?  Because it has to do with trust.  Everyone who writes client-server networked gaming eventually and usually pretty quickly has to address the question of hacking and cheating.  The question is can you trust the client?  And the answer is: no, absolutely not.  If you let the client send you the position of the player, you're allowing anyone with a debugger or modding tool to teleport anywhere in the game instantly.  Not good.  You could try to validate positions, but how do you determine every possible way a player might get to a location, to determine if they didn't get there legally?  You basically have to figure out every possible way to move, check to see what those methods do, and see if the position falls into one of them.

Anyone with a brain quickly realizes that rather than write a server that tries to figure out what the player did, its way simpler to just tell the server what the player did.  Then the server doesn't have to figure out if there's a set of inputs the player could generate that can create a particular result.  It just determines what the result of the transmitted inputs are.  But that creates a new problem.  The straight forward thing to do is to let the client tell the server "I moved forward," have the server figure out where that places the player in one game tick, and then transmit that new location to the client.  Then the client moves the player.  The problem is network and server lag: the time between when the client transmits that movement input, and when it gets the result back and displays it to the player.  This can be long in gaming terms: dozens, possibly hundreds of milliseconds.  When what you do is decoupled from what you see by more than about 50 milliseconds, human beings start to perceive a wrongness in what's happening: they perceive lagginess.

Since the client knows what the player wants to do immediately, the client could just do it.  But again, we get to trust: how can we let the client do that, when we don't know if that's actually a legal move?  We decide to presume the player isn't cheating - if he or she is, then it doesn't matter what bad thing happens so long as it doesn't affect anyone else.  In the case where the player isn't cheating, we want to minimize the effects of lag on how they perceive the game.  They don't actually *know* when anyone else does anything else, so they can't generally perceive a lag between when someone else does something and when they see it.  They can only experience this with regard to their own controls.  Since their client has those inputs, we can program the client to predict what should happen when the user uses those controls.  They move forward, we move their character forward and then tell the server the player moved forward.  The server also moves the player forward, and retroactively tells the client what that should have done.  If that is what the client predicted, the client simply continues on.  If the server disagrees with what the client predicted, the client revokes the prediction, in effect undoing it and altering the actions to what the server tells it.  So long as the client predicts well, such corrections will be few and far between - what we would call rubberbanding.

Prediction allows us to take player inputs and display the result of those inputs immediately so they see them without delay, while still making the server the final authority on what happens.  For this to work, what the client predicts must be essentially exactly what the server would ordinarily allow.  For that reason, both the client and the server must check boundaries and geometry.  Since the client is going to allow you to move in any direction before the server validates that move, the client must be at least generally aware of where the player can and cannot move based on geometry.  Otherwise, players would walk through walls then rubberband bounce out of them regularly.  Conversely, anything that pretends to be a server must validate geometry in exactly the way the client expects it do, or prediction won't work right.

Some things you just can't predict, or more precisely you can't allow the client to predict, like combat.  So when you shoot something, that goes to the server, the server decides what's going to happen, and the client shows the results of that.  That's one reason why attacks could not reasonably execute faster than a certain time: the activation time and attack animation were in part covering for round trip lag to and from the combat engine in the mapserver.  And once you understand how this works, you start to see prediction failures in every MMO you play.  When I'm playing STO, I often see a "multiple fire effect" when I shoot torpedoes at a target I'm turning to bear on.  Basically, torpedoes only fire in a forward arc of about 90 degrees.  If the target is moving quickly right to left or vice versa, and you're turning to face them, you can shoot only if they are inside that arc.  But sometimes when you hit the button to fire a visual torp firing happens, then vanishes, then it happens again, then it vanishes, then it happens again, and this time the torpedo flies to the target.  What's almost certainly happening is that the client sees the target is inside my arc, but remember *I* am pointing where the client thinks I should be pointing *now* but the server doesn't know that yet.  So the client starts the torpedo animation and FX predicting I should be able to do that.  But by the time the server gets my inputs, in that split second the target has moved slightly, and now its *not* in my firing arc.  So the server says "nope, can't shoot yet" and the client revokes the attack.  Then it tries again, and again, until finally the server says "I agree, that torp can fire" and the attack continues on without being revoked.

CoH devs on a couple of occasions said we moved basically as fast as the game allowed us to move.  Many players didn't understand what that meant.  What I believe they meant was that if we moved significantly faster than the maximum speeds we were currently capped at, the client-side prediction would start to break down in combat and other areas, and we would start seeing the "oops torpedo" effect I'm describing in STO, only worse.

In any case, sending inputs is the first thing you learn about client-server gaming.  Its primary purpose isn't to reduce bandwidth, its to make sure you can validate what the client is telling you to do (in fact, you should probably periodically send positional information from server to client and/or vice versa anyway as a double check to confirm you're in sync with each other).  It is prediction, and the specifics of how you implement it to get the very best apparent performance combined with the least amount of synchronization problems, that is the real magic.  And everyone does this a little (or a lot) differently.

Nightsjester

  • Minion
  • **
  • Posts: 30
Re: Coming Soon
« Reply #273 on: June 24, 2015, 07:40:07 PM »
I kinda-sorta brought this up elsewhere but Im curious how character data is going to be handled. I know for now its all going to be local but as time goes on and more stuff potentially gets introduced I hope some data is held remotely. At least to limit cheating as we get closer to having a real game.

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #274 on: June 24, 2015, 07:44:40 PM »
It may be common in real-time games like shooters and such, but in my experience it's somewhat rare to find in MMOs. MMO operators want to cram as many players onto as few servers as possible, so there is pressure on the development teams to budget as little CPU time as they can per player. Doing full collision and physics simulation takes a relatively large amount of horsepower when multiplied by tens or even hundreds of thousands of players.

So a lot of them don't. They trust the client more than they should, loading only a vastly simplified version of the world geometry for AI purposes and maybe line of sight checks. If they perform motion validation at all, they do so only in a gross sense (did you just claim to be halfway across the zone?). Take WoW for instance, it's ebbed and flowed but at times was not unheard of to see people speedhacking (running faster than normally allowed) in battlegrounds, or gold farmer bots mining resource nodes through walls, or from underneath the world and then teleporting to the next one. Instead of buying more servers, Blizzard takes the approach of trying to detect and ban anyone who abuses it, a large part of which is spyware-like anti-cheating software.

They know it's not a fight they can ever "win" -- the client will always hold the trump card at the end of the day. But they believe they can make it a seldom enough occurrence that most players aren't affected by it.

The Fifth Horseman

  • Elite Boss
  • *****
  • Posts: 961
  • Outside known realities.
Re: Coming Soon
« Reply #275 on: June 24, 2015, 08:16:40 PM »
battle calcs require range triggers, this means the program doing the calcs (the server) needs to have character positions and orientations as well as range sensors, and also means it needs to have the geometry, OR you could bypass the geometry by taking the player's reported position as cannon (allowing client geometry to assume the lead)... but that would allow players to attack through walls... yeah... there would need to be some environment geometry on the server. For this and for enemy spawning and motion.
Which is why I said "easier than otherwise, but still not easy".
We were heroes. We were villains. At the end of the world we all fought as one. It's what we did that defines us.
The end occurred pretty much as we predicted: all servers redlining until midnight... and then no servers to go around.

Somewhere beyond time and space, if you look hard you might find a flash of silver trailing crimson: a lone lost Spartan on his way home.

Leandro

  • Elite Boss
  • *****
  • Posts: 310
Re: Coming Soon
« Reply #276 on: June 24, 2015, 08:50:03 PM »
Worrying about combat cheating at this time is ridiculously too soon.  There's about two hundred things that need to be taken care of before we are fortunate to count that as a problem.

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #277 on: June 24, 2015, 09:09:24 PM »
Worrying about combat cheating at this time is ridiculously too SoonTM.  There's about two hundred things that need to be taken care of before we are fortunate to count that as a problem.

Fixed that for you.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #278 on: June 24, 2015, 09:13:12 PM »
It may be common in real-time games like shooters and such, but in my experience it's somewhat rare to find in MMOs.

And it probably exists in CoH specifically because in 1999 a programmer trying to write an MMO was more likely to steal from shooters than MMOs, because there simply wasn't that many MMOs to steal from.  And as you point out WoW goes the opposite way, not bothering with these technologies much (which is why WoW was originally a lot more apparently laggy than CoH, in the days before widespread broadband).

As more MMOs start to use frameworks for their systems like the Unreal engine, I think things like prediction will become more common simply because those toolkits had to implement those features for the types of games they originally supported.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #279 on: June 24, 2015, 09:18:45 PM »
Worrying about combat cheating at this time is ridiculously too soon.  There's about two hundred things that need to be taken care of before we are fortunate to count that as a problem.

Yeah, but its Codewalker's job to implement those two hundred things, leaving me free to thing about number two hundred and one.

My policy was always to never work on something someone else was working on, so you always look like a genius for working on something no one else was thinking about.  Always dance with the one that brung ya.