Paragon Chat Development Roadmap and Wishlist

Started by Codewalker, July 13, 2015, 04:14:25 PM

FloatingFatMan

Quote from: Rejolt on July 15, 2015, 11:01:53 AM
We've been given the maps and friends that we can slowly do more stuff with. Our chefs are taking us from starving to ramen noodles. I'm not going to ask for better place settings as they try to make us steaks.

A big part of the problem isn't even going to be the walk path for peds, but server capacity. We just have to accept that the an XMPP chat server doesn't have as much capacity as the original game server did; period.  I'd rather the slots be taken up with real people instead of hundreds of bots walking around the place...

Perhaps a better option is just to have a program running on the client machine that just sends peds to your local game, and it never goes to the server. Of course, that means other people won't see the same peds (or any if not running the app), but at least it doesn't clog the server with essentially useless bots.

Rejolt

Quote from: FloatingFatMan on July 15, 2015, 11:41:14 AM
A big part of the problem isn't even going to be the walk path for peds, but server capacity. We just have to accept that the an XMPP chat server doesn't have as much capacity as the original game server did; period.  I'd rather the slots be taken up with real people instead of hundreds of bots walking around the place...

Perhaps a better option is just to have a program running on the client machine that just sends peds to your local game, and it never goes to the server. Of course, that means other people won't see the same peds (or any if not running the app), but at least it doesn't clog the server with essentially useless bots.

Does that play out like Propel objects or alakazamreact? Everyone sees a different object because it was their client and not the server creating it?

I'd be down with that down the line after we have "franchises" for players to take home.

Wait, can I run the propel animation in game now or do I need a target?
Rejolt Industries LLC is now a thing. Woo!

FloatingFatMan

Quote from: Rejolt on July 15, 2015, 12:01:09 PM
Does that play out like Propel objects or alakazamreact? Everyone sees a different object because it was their client and not the server creating it?

I'd be down with that down the line after we have "franchises" for players to take home.

Possibly, but I wouldn't hold my breath waiting on CW to code it. He's got far too much to do to Paragon Chat to spend time doing something like this. Why not have a go yourself?

Quote from: Rejolt on July 15, 2015, 12:01:09 PM
Wait, can I run the propel animation in game now or do I need a target?

You need a target. All powers need a target, even if it's yourself like with PBAoE's.

The-Hunter-JLJ

Quote from: Leandro on July 15, 2015, 09:33:56 AM
It's just a low priority thing that is far more complicated than it looks. What the maps have, client-side, are specific points saying "an NPC can walk to here", not a "walk path" that includes information like "don't approach me from the north because there's a building in the way". Creating proper walk paths out of the navigation points is not trivial and there are more important things that have priority.

The actual generated walk paths (as well as all other information for NPC movement) were server side, and the client only has remnants on how they work for debug purposes.

No argument at all that it should be low priority, Leandro. It *IS* striking how often you hear people comment about the lack of pedestrians and cars. I've taken to joking that the NPCs and cars are too dumb to update their clients and are still afflicted with the invisibility bug, so we can hear them but not see them.

I'm a hardware guy, not a coder, so I take your assurance that it's a far more difficult problem than it at first appears to heart. My point is more that there may be a way of achieving something to show peds & traffic that is considerably lower impact than the way it was originally implemented. As an observation, not as a suggestion that it needs to even be considered.

FFM is not wrong that we need to save the bandwidth and server horsepower for actual players. But do keep in mind that CoH (mostly) worked at launch, with FAR less capable servers and networks than we have available now a decade later. My suspicion is that if you include what you can farm out to the clients, you may well have MORE raw processing power available than Cryptic did at launch. And your available usable bandwidth is probably not a lot worse, either, given how much networks have improved since 2004. (Building networks is what I did for a living, so this, I know.) Actually utilizing all those nice gaming rigs you're being given access to over reasonable sized pipes MIGHT of course be a nightmare of another order entirely.

What I am pointing out is that there may be ways to implement things like pedestrian traffic which requires minimal network traffic, and pushes the processing out to the clients.  Certainly not worth worrying about short or even medium term, but it appears that what you've created is flexible and extensible enough to allow the creativity of the community to be brought to bear in the long term. You guys have already pulled off something I thought sounded a bit nuts when I first heard it proposed. I figure it is entirely possible one of you or some other genius may have a brilliant idea at any moment. (grin)

Leandro

Quote from: The-Hunter-JLJ on July 15, 2015, 12:59:05 PM
I'm a hardware guy, not a coder, so I take your assurance that it's a far more difficult problem than it at first appears to heart. My point is more that there may be a way of achieving something to show peds & traffic that is considerably lower impact than the way it was originally implemented.

My reply was mostly to correct the assumption that "Ya know though... the walk-path information IS available on the client side." It's not, not in an immediately usable way. I am sure that once we do have the ability to show pedestrians, a way to show them that is very optimized will be found; but right now, that's putting the cart way before the horse.

FloatingFatMan

Quote from: Leandro on July 15, 2015, 02:15:53 PM
My reply was mostly to correct the assumption that "Ya know though... the walk-path information IS available on the client side." It's not, not in an immediately usable way. I am sure that once we do have the ability to show pedestrians, a way to show them that is very optimized will be found; but right now, that's putting the cart way before the horse.

Besides which, the walk path in some areas was completely crap, so I for one would want to redo them in places! :p

Noyjitat

Quote from: FloatingFatMan on July 15, 2015, 02:46:12 PM
Besides which, the walk path in some areas was completely crap, so I for one would want to redo them in places! :p

Especially "gaspee" or whatever it was called in Founders Falls. Looked like a mob marching around the fountain.

Rejolt

I've seen players use dual pistols and martial arts animations with no target just goofing off under atlas. However, no bullet streams or weapons were seen. My character would likely run Propel but it would come off as a slow motion alakazam.
Rejolt Industries LLC is now a thing. Woo!

BluArcher

Quote from: Rejolt on July 15, 2015, 04:40:19 PM
I've seen players use dual pistols and martial arts animations with no target just goofing off under atlas. However, no bullet streams or weapons were seen. My character would likely run Propel but it would come off as a slow motion alakazam.

That's due to some players hacking the files and turning the attack animations into emotes so they no long need a target

Eoraptor

Quote from: BluArcher on July 15, 2015, 06:56:55 PM
That's due to some players hacking the files and turning the attack animations into emotes so they no long need a target
this... what you're seeing is not the execution of an attack code, but the playing of an animation script which was originally bound to that attack when the game was still running. some players have rebound the animations as emotes rather than actions in order to add a bit more depth to roleplay. (basically it's the /em slap emote taken to the next level)
"Some people can read War and Peace and come away thinking it's a simple adventure story, while others can read the back of a chewing gum wrapper and unlock the secrets of the universe!"
-Lex Luthor

Garble

In Icon I was able to add the propel fx to a costume and found that without a target the animation goes to the center of the map. Specifically coordinates 0,0,0 in Atlas is around where you first enter the game.

It actually produced dibris you can knock around. Paragon Chat is less forgiving of hacked costumes though.

http://www.cohtitan.com/forum/index.php/topic,9216.0.html

TheCyberchill

I'd like to see those exclusive costume parts like the arachnos helmets capes logos, the two masks from that anniversary event, added to everyones costume directories

Nebularian

Quote from: BluArcher on July 15, 2015, 06:56:55 PM
That's due to some players hacking the files and turning the attack animations into emotes so they no long need a target

hmmmm  wonder if that could be done with an emp/def's heal all :)
(@Nebularian)(AKA Dylan Clearbrook) Champion/Virtue - Nebularian/Sgt. Raines/Nurse Darklight/Cosmicana-Cosmicella/Mercy Vengeance/Angel Sprite/Suzy Uzi/Blue Arc/Dark Carolyne 
Website: The Continuum Worlds

Vr2Lrose

useing combat emotes (nonweapon ones) with auras could also give cool power looks ie magnitism which looks like metal bits swirling around could look much like propel.

Nyx Nought Nothing


*reads roadmap*
https://farm4.staticflickr.com/3865/14684966334_c23eab80a1_q.jpg



Quote from: Paragon Avenger on July 15, 2015, 04:54:08 AM
Hey, shouldn't you name these versions?
...
0.97m = MilkdudChat
https://farm3.staticflickr.com/2581/3779834896_8d76d04d75_m.jpg
It should be mudkipchat.
So far so good. Onward and upward!

Nyghtshade

Quote from: Nebularian on July 15, 2015, 10:28:58 PM
hmmmm  wonder if that could be done with an emp/def's heal all :)
I would love to be able to do it with the Nature Affinity powerset.  Those were gorgeous animations.

Arcana

Quote from: Codewalker on July 15, 2015, 04:37:25 AM
Good idea! We'll go back in time and add it to version 0.97c, just to make sure it's done soon. :)

How the hell am I supposed to go back in time and fetch it?  Devs hate players.

Arcana

Quote from: The-Hunter-JLJ on July 15, 2015, 12:59:05 PMFFM is not wrong that we need to save the bandwidth and server horsepower for actual players. But do keep in mind that CoH (mostly) worked at launch, with FAR less capable servers and networks than we have available now a decade later. My suspicion is that if you include what you can farm out to the clients, you may well have MORE raw processing power available than Cryptic did at launch.

Yes and no.  Yes, server hardware is far faster now, and for that matter implementation technique is better now.  But players need to understand that no, server horsepower is not higher now than it was before, its actually *lower* for the simple reason we don't have servers.  Not in the conventional gaming sense.  Everything you are seeing is happening because either a) your client did it or b) another client did it and sent a message to your client to also do it.  You jump, you see your character jump.  She jumps, she sees her character jump and her Paragon Chat sends a message to your Paragon Chat so you see her character jump also.

There is no server that can tell everyone "here's a pedestrian, move him here."  None whatsoever.  The only way with Paragon Chat's current architecture to make pedestrians move is for Codewalker to add that capability directly to Paragon Chat itself, and to do so in a manner that everyone would see the same thing - otherwise it would be problematic if everyone started to see a totally different environment (I mean, you could do it, but its something I suspect Codewalker would really not want to do).

Everyone, from people running this on the fastest gaming rigs to people running this on their old Pentium desktops, will have to be able to run the City of Heroes client itself *and* whatever Codewalker puts into Paragon Chat.  If he decides to add NPCs, everyone's individual clients will have to be able to support them and in a synchronized fashion.  And then this starts to snowball.  Do we broadcast NPC localchat?  Do we perform NPC collision detection?

All these issues have solutions.  I mention them not to suggest I lack the capability of conceiving ways to solve them.  Its more to illustrate the scope and the limitations surrounding the problem.  The fact that computers are faster today than they were in 2004 is largely irrelevant to the actual problem(s) Codewalker faces.  The problem is that Codewalker can't really do this in the same way the game's mapservers did, because he doesn't have central mapservers to work with.  However he solves the problem, it will have to be different, support things the game never had to, solve problems the game's mapservers didn't need to worry about, and do so in a way that doesn't make it harder for people to run Paragon Chat for its intended purpose of being a community communications platform.

Arcana

Quote from: FloatingFatMan on July 15, 2015, 11:41:14 AM
A big part of the problem isn't even going to be the walk path for peds, but server capacity. We just have to accept that the an XMPP chat server doesn't have as much capacity as the original game server did; period.  I'd rather the slots be taken up with real people instead of hundreds of bots walking around the place...

Perhaps a better option is just to have a program running on the client machine that just sends peds to your local game, and it never goes to the server. Of course, that means other people won't see the same peds (or any if not running the app), but at least it doesn't clog the server with essentially useless bots.

Bandwidth isn't really the issue, I don't think.  If you spawn NPCs reasonably, and you make sure their walk paths go only between widely spaced and reasonable beacons, all you need to do is send a message that says "spawn NPC Alpha at beacon Beta" and "Alpha set course for beacon Gamma."  And then every Paragon Chat client who gets those two messages will spawn and walk the appropriate NPC.

Question: who spawns the NPC?  There's no server.  You can't just allow Paragon Chat to arbitrarily spawn NPCs, because then you'll have the problem where every client is spawning NPCs, and everyone has to see everyone else's NPCs.  The more people in the zone, the more NPCs get spawned.  My guess is that you have two options.  Option one: use a bot to do the spawning for everyone.  Option two: use elections.  Option three: collision throttles.    We could say, whenever a Presence was detected, perform an election to find out who has been logged in the longest.  Whoever is, wins the election and spawns all the NPCs.  Or, Codewalker to program Paragon Chat to randomly spawn NPCs, but to automatically back off and reset timers if it detects someone else has done so within a certain interval.

But just the question of where the spawning comes from is probably a question I think most people haven't considered.  Its part of the complexity of handling this issue properly, and its a non-intuitive question for people without an intuitive grasp of how different Paragon Chat's distributed architecture is from a conventional MMO.

Codewalker

Pedestrians make much more sense to implement entirely clientside. Using a deterministic algorithm with a seed value that can be reasonably synchronized (UTC perhaps?) is probably the simplest route. However, pedestrians need to have paths precalculated for them, because some zones could have hundreds of pedestrians in them and running realtime pathfinding algorithms for them all seems like a huge waste of CPU. There's also currently no pathfinding at all, so work needs to be done on algorithms to find walkable paths over arbitrary 3D geometry, which is hardly a trivial task.

Cars are somewhat more likely as they at least have beacons in the map files for 'stops' along their route, though they still need to have a network created between those beacons to create reasonably drivable paths.

Fixed paths like the Atlas blimp are much easier to implement and likely to be seen before any of the above. Those are already in the map.

There's also the issue of the generator names in map files not being defined anywhere (likely was in serverside data files). So someone will have to manually go through each of them and figure out what it's supposed to spawn, make a list of NPC models that make sense for it, determine reasonable spawn and despawn rates, and tie it to whatever deterministic algorithm is running the whole shebang.

Non-static NPCs placed by people with elevated access -- server admins / moderators in public zones and room owners in private instances -- are something I have planned, and those would need to go over XMPP. I'm currently strongly leaning towards using XMPP's publish-subscribe extension to maintain state for those, as it's designed to store either persistent or transient data that multiple clients can subscribe to and receive notifications when it changes, while new clients can quickly query the xmpp server to get the full state without having to bother their peers about it. When we get to that point I'll probably do a quick community brainstorming session on the forums to see if the design makes sense before implementing it.