Author Topic: Coming Soon  (Read 210026 times)

FloatingFatMan

  • An Offal
  • Elite Boss
  • *****
  • Posts: 1,178
  • Kheldian's Forever!
Re: Coming Soon
« Reply #360 on: June 29, 2015, 08:54:45 PM »
Now, I understand we can connect to this via Trillian, which is awesome, since I use Trillian alot, and can thus get updates on the happening of the community while at work and such. I also understand that "local and emote" chats won't work, because you will not have an avatar, as that requires the CoH client.

How DOES one appear to the CoH Client users? Are you just a "Voice from the Heavens?" My question is more on the lines of if I try to pull up a window using the global handle. Also, can said Trillian User be logged in with a character, or just via global handle?

As I understand it, and I may be wrong, your messages would appear in Broadcast chat, under your global name.  I think you'd probably need to be in game to post from a character name.

Also, as this is not Icon, I presume we cannot load NPC's onto the world. Am I correct in this or not?

Again, only as I understand, but the only NPC's present will be ones CW has coded to be there.  I think he said something about the same set as you get in Icon when you start it up.

FloatingFatMan

  • An Offal
  • Elite Boss
  • *****
  • Posts: 1,178
  • Kheldian's Forever!
Re: Coming Soon
« Reply #361 on: June 29, 2015, 08:56:23 PM »
I also dislike lying, and sometimes let emotion cloud my judgement like anyone.
But lying is not the same thing as articulating your responses to avoid conflict, which is a social tool.

 :)

Meh, I prefer to be direct. All this pussy footing around a subject just irritates me, and when I get irritated, I get very very polite. :p

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #362 on: June 29, 2015, 09:03:27 PM »
How DOES one appear to the CoH Client users? Are you just a "Voice from the Heavens?" My question is more on the lines of if I try to pull up a window using the global handle. Also, can said Trillian User be logged in with a character, or just via global handle?

Based on what's been stated about the architecture of Paragon Chat, I assume if you connect to the server with a chat client then your chat shows up on the global channel (assuming you haven't left it) but because your chat client has no knowledge of and does not use the side channels that the Paragon Chat client uses to transmit game information to all other PC clients, you basically are like someone on Triumph global chatting with people on Freedom.  Which is to say, you can chat on global channels, but you otherwise do not exist to them at all.  You are not a disembodied voice, you just aren't there at all.

benkenobi

  • Underling
  • *
  • Posts: 13
  • Nōlī turbāre circulōs meōs!
Re: Coming Soon
« Reply #363 on: June 29, 2015, 09:18:03 PM »
Based on what's been stated about the architecture of Paragon Chat, I assume if you connect to the server with a chat client then your chat shows up on the global channel (assuming you haven't left it) but because your chat client has no knowledge of and does not use the side channels that the Paragon Chat client uses to transmit game information to all other PC clients, you basically are like someone on Triumph global chatting with people on Freedom.  Which is to say, you can chat on global channels, but you otherwise do not exist to them at all.  You are not a disembodied voice, you just aren't there at all.

Spiritworld! ooooOOOOOOoooo  :o /ghosty
# Quantum Mechanics
(rand(0..1)) ? True : False;

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #364 on: June 29, 2015, 09:22:41 PM »
How DOES one appear to the CoH Client users? Are you just a "Voice from the Heavens?" My question is more on the lines of if I try to pull up a window using the global handle. Also, can said Trillian User be logged in with a character, or just via global handle?

FFM pretty much nailed it.

As I understand it, and I may be wrong, your messages would appear in Broadcast chat, under your global name.  I think you'd probably need to be in game to post from a character name.

Again, only as I understand, but the only NPC's present will be ones CW has coded to be there.  I think he said something about the same set as you get in Icon when you start it up.

To elaborate, if you join the XMPP room called "Paragon Chat", that's the global channel that gets added to new characters by default, so you'll see a lot of people joining it as their global name, and that's how what you type will appear as well.

By contrast, if you join the room called "Atlas Park" what you're actually joining is AP's broadcast chat. You'll see people using the Paragon Chat client join it using their character name as a nickname (though you can still click info to find out which account/global they are), and anything sent to zone broadcast or request chat will show up in the room. If you send a message to that room, people in game who arein AP will see it in broadcast chat as coming from your global, but of course there won't be an actual player in AP they could go find.

Nyghtshade

  • HERC Advisor
  • Elite Boss
  • *****
  • Posts: 881
Re: Coming Soon
« Reply #365 on: June 29, 2015, 09:30:21 PM »
FFM pretty much nailed it.

To elaborate, if you join the XMPP room called "Paragon Chat", that's the global channel that gets added to new characters by default, so you'll see a lot of people joining it as their global name, and that's how what you type will appear as well.

By contrast, if you join the room called "Atlas Park" what you're actually joining is AP's broadcast chat. You'll see people using the Paragon Chat client join it using their character name as a nickname (though you can still click info to find out which account/global they are), and anything sent to zone broadcast or request chat will show up in the room. If you send a message to that room, people in game who arein AP will see it in broadcast chat as coming from your global, but of course there won't be an actual player in AP they could go find.

Will there be an RP-designated chat channel, to avoid having to pick RP conversations out piecemeal from a general channel scroll (I still remember trying to sort RP out of the vast scrolling of Pocket D, yikes?)   

Or, failing that, would the players' proximity affect what appears in the chat window, the way it did later in the game  (i.e. - get far enough away from other groups and your RP conversation doesn't have overlap from other groups?)

FloatingFatMan

  • An Offal
  • Elite Boss
  • *****
  • Posts: 1,178
  • Kheldian's Forever!
Re: Coming Soon
« Reply #366 on: June 29, 2015, 09:31:57 PM »
Will there be an RP-designated chat channel, to avoid having to pick RP conversations out piecemeal from a general channel scroll (I still remember trying to sort RP out of the vast scrolling of Pocket D, yikes?)   

Or, failing that, would the players' proximity affect what appears in the chat window, the way it did later in the game  (i.e. - get far enough away from other groups and your RP conversation doesn't have overlap from other groups?)

Local chat is implemented and is range sensitive.

Joshex

  • [citation needed]
  • Elite Boss
  • *****
  • Posts: 1,027
    • my talk page
Re: Coming Soon
« Reply #367 on: June 29, 2015, 09:53:19 PM »
Coh doesn't need the NC launcher at all, so there is nothing to break. Paragon Chat doesn't implement authserver, either, since it handles auth on its own window. The command line for launching the client to talk to Paragon Chat is cityofheroes.exe -project coh -db <IP>.

Funny thing: the COH client does not work with 127.0.0.1 as the server IP. If you pass it that IP, it will resolve the "real" IP for the local computer and connect to that, which triggers firewall warnings on Windows. To get around that, Paragon Chat tells the client to connect to 127.0.0.2, which works fine in Windows but not in Mac/Linux, because only 127.0.0.1 is configured as loopback by default in those operating systems. So, firewall warning, no Mac/Linux compatibility, or hack in Island Rum is needed. I better go talk to Manga.

interesting on the IP, seems CoX must have that built-in somewhere with a loop getting the IP from system, naturally that sets off warnings in windows. OK so -project coh, is -db necessary or can that be replaced with -auth <IP>? I assume it can. you know what I should have done, assumed City had shell/command line support and done cityofheroes.exe -h to see what popped up.

Best of luck.

He's going to need more than luck.  Its hard to be certain, because what the text says doesn't always map to what he intends, but it sounds like he's saying even though Codewalker has done the heavy lifting of figuring out how the client works, and mapped client actions to XML messages, Joshex is going to throw that out the window and just do the messaging raw, himself, because XML's docs are too long.  After, of course, he asks Codewalker "so, in a paragraph or two, how did you do that so I can replicate that work."  Because freedom.

I'm rather at a loss.  Codewalker's platform is about as good as it gets: anyone who can't bot this architecture deserves to have their programmer ID card confiscated.  But he wants to reinvent the wheel with marshmallows and a box of toothpicks, and he's never seen a circle before.

There's always someone that wants to do it the impossible way, because they don't understand the easy way, and can't execute the hard way.  If ever there was a time to sit down and learn the fundamentals, its now.  Its never going to get easier to write a line of code that does something City of Heroes-like.  Oh well.

no.

I have a great deal of respect for Codewalker and Leandro's work, it's not the length of the XML docs, it's the java dead-end I see ahead ( a dead-end for me because I don't have the time to learn java though it's probably only slightly different). Either I code a plug-in in java to communicate with an exterior program and hope that I can use the plug-in to send game object messages to the client, then code the server to handle that operation, or I start fresh and write a new system that works as a stand alone server. that triggered a switch in my brain that said "dude you know squat about java, and the current system sounds a bit restricted, best stick with what you know or it could cost you a lot of time, could be a fun python puzzle, besides you already know how most of this works in python, why use a different system and confuse yourself?" and that's how I arrived at the conclusion that I have.

Paragon chat works well as a chat system with 3D movement support interfacing with the CoX client (Bravo! well done thankyou! amazing!), but they already stated it's restrictions, even if I could route an XML stanza through the XMPP server containing timer or gate info in CoX's message format it would be ignored by the XMPP client. dead end.

I only plow through dead ends if there's no way around them. the way around is to start over in a system that has no such inherent restrictions. the way over is to go with the flow and do things XMPP's way with a java plugin.

Spoiler for Hidden:
"Allmmoooost there....." "dude why are you climbing over that skyscraper?, that street right next to you goes to the same place!" "Because I decided to use java to try and resolve a dead-end in the current program, ok!?" then a random java programmer walks by:

"Oh yes, java very good! perfect program, you need nothing else, best program in the world, I have job as programmer at Apple, when I came in they told me I need know C++, I said I do, I write everything in java, they just businessmen and don't know difference, their computers have virus I made, everybody have virus I made, I very successful Troll. you want work in C++? Ha no! java better! java has web support, java can splash screen, java in everything because it great for molesting internet freedoms, you don't want to do 'if statement'!, in java we do Class(), you no need python or C++ or assembly language developer, I Java I better. Java used be own by sun for solaris, now it owned by troll, you no read news? you should learn java! everyone should learn java! nothing should be coded in anything but java!, you will like it."

It just sounds so sleazy, like a stereotypical bad car salesman or infomercial actor trying to sell you a "real winner" on the piece-o-crap scale. or like the tone they use in all those scam video sites "*JUST USE OUR PROGRAM TO GET THOUSANDS IN YOUR BANK ACCOUNT EACH WEEK*, I used cashquick and this is my paypal statement this month; I made 23 thousand dollars! *AND NOW YOU CAN TOO*"

second thought; walking around seems about good right now.

the above spoilered conversation is the outcome of every IRL conversation I've ever had with a Java coder professional or otherwise and why I gave up deep inside about making anything to work with PC the moment I heard 'plugin' + 'java' in this conversation. Not to say I'm discrediting PC, not to say I'm undermining their work or insulting them. not that I'm saying they can't go forwards with it.

I use python because I know it; I know it isn't the best or most capable and I know there is very little support for it in mainstream programs, and I will never force that opinion on others (especially with new python, there's a reason I use deprecated old 2.6.2 and it's not just because blender 2.49b runs it, it just so happens both blender and python made poor decisions to reconfigure themselves at about the same time and were/may still be crippled and not capable of what I need them to do) and as a final reason not to use java, I honestly don't want to be a douche like a lot of the people I've met to summarize the conversations into the paragraph above. Keep in mind I'm sure there are plenty of Java devs who aren't duche+bag+s, but I have never met them (I just have /ALL/ the luck don't I? at least I can't say my life is dull, I meet a corporate CEO? Corrupt_greedy_duche_INC., I meet a java developer? over-bragging Sir duchealot, I meet a duche? really funny, guy, really funny, why am I not laughing?, puts a bad impression in my mind of the things they own/use and people/society in general).

XMPP + needs java plugin == dead end + to me. #class that.

I'm not really ranting here, just explaining why I have this prohibition to working with java and that being the only option for adding in new features in Paragon Chat makes me consider starting over to accomplish the ski slopes timer and score system. I wanted to do a collab thing straight and simple: make timer, make player cubes to spawn when a message is received that they are in zone "pocket D", change their location to the location given by the server, when they hit a gate send the info to the server.

that way their work wouldn't go to waste, but XMPP has limitations I didn't expect. if I had made XMPP I would have forseen that people might someday want to send other 'miscellaneous' datatypes such as custom codes needed by other programs. So I expected the makers of XMPP to have done the same. nope. well then, Oh... Kay...

bad experiences with java people and programs, bad bad ones.

yes I know I've developed a bias against java from it, point is I don't want to associate myself with such a language if it's populated largely by those kind of people, it'd give me a bad name (yeah, I know that says a lot).

Spoiler for Hidden:
"Hi, I know java" Corporate CEO: "Ah Good! we need more of your kind here at Apple, our plans for world domination are founded on corrupt self-centered leapfrogging braggarts just like you!" "but.. I'm none of those things" CEO: "Of course you aren't!" *wink wink* "eh?!, eh?! seriously we got a project going right now, we need a java phone app that steals global location data from built in GPS systems and couples it with recorded sounds and video data without the user's permission or knowledge, it's for marketing purposes. I'll throw in 3 credit card numbers off the list we collect if you join today. and dont; worry about it they all agreed to this in the ToS to keep their iphones active."

"Hi NCSoft, we really want City of heroes back, we even made this program in Java to..." they stop reading: "What? Java? they are evil?! I had no idea they were part of the order of darkness just like we are! sheesh small world, then.. why would they want CoX back? everyone knows the order of darkness has some personal issues with that game..."

I joke, I joke.

final point, if you, codewalker or leandro want to use java to make new functions for PC, that's fine, more power to you and I'd be glad to see someone of your personality and knowledge caliber working with Java, seriously! it would be a welcomed change. but I'm not going to do java. Paragon chat was a lot of work and well done at that, major beyond kudos for it! very impressive and I'm sure you can eventually make all sorts of things happen with it! but for me to work on it in java, no.

But I want to try my hand at the ski slopes, and I know that's not a priority for codewalker at this moment, he has /MORE IMPORTANT/ things to do, I emphasize that on purpose, his work is important to us fans of CoX cause he indeed has something amazing to show that needs some finishing touches.

last time I met a java dev was in the supermarket, we were waiting for the final discounts to be done, he asks why I'm here in scotland, said for my masters, asked what I'm doing for my course, said making a game BOOM, JAVA DOUCHE ACTIVATE:

Spoiler for Hidden:
"you should use java, everything runs on java!, I use java, I make 23 quid an hour, java is perfect, why don;t you use java?"

because blender doesn't use java and I've already gotten a lot of the foundation built in blender and python

"oh you should scrap that and find a way to make a java plugin for blender"

blender doesn't use plugins like that.

"then you shouldn't use blender or find a way to hack it to accept java, use blahblah blah I know that runs java, if you want to be a real developer you need to use java or no one will ever buy your game and you can't publish it."

but programming from scratch in java like that means I'd need to program my own 3D space with complex linear algebra and physics, blender has that part done for me so I can focus on other things.

"of course, but then you have the pleasure of working with java, java is the best and I know a few companies who will buy your game if it's written in java"

I'm not making it for sale to some publisher not after what they did to some other games, I plan to run it myself

"just use java you'll feel like a better more intelligent person when you do, trust me just delete your work when you get home and go learn java you'll have your game in maybe 4 years."

but this is a one year masters and it's half way through

"don't worry about that, you tell your teacher java takes more time than that, it's ok if you flunk you will know java, you wont need an education, people will hire you"

so then I just said "uh huh..." and started nodding, got my discounts, and he was going on for another 45 minutes before he stopped following and let me go check out.

as I said, bad bad experiences with Java people that's why I sympathized with VV in another thread when she said "does Java get along with anybody?".

seriously the java coders I've met have literally given me a mental scar for life on all things Java.

or that company I went for an interview at, said they had a whole game system running on python and needed coders, they liked my work examples, said it was impressive, then said they normally don't use that much python actually, most of their system is written in Java, you know.. "for the web", but if I learned to use java they'd have a position for me, but right now that other guy over there knows java and knows squat of python so..

met these people at a python coders meeting too. fancy using 90% java and being a host at a python coders meeting.

If I made anything, I would not rival Codewalker and Leandro's project. It would be sent to them in source for their review, acceptance or rejection no strings attached. heck they can take credit for it as they did the ground work.

I may have spent my fair share of time playing on villain side, but even then I still had at least that level of moral code and ethics, even in a supervillain group with Reich in the name (not my choice of name, but it's my friend's, friend's base, you know how that goes).

Taking credit for the info they give me here or taking credit for it's application in a program would be like taking credit for python itself just for using it.

I thank Codewalker and Leandro for being so informative and accommodating, and I thank Arcana for being so intelligent when it comes to code and stats. You all rock and keep up the good work.

I really need to learn to express myself and my intentions more clearly rather than give it out in little bits.
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.

FloatingFatMan

  • An Offal
  • Elite Boss
  • *****
  • Posts: 1,178
  • Kheldian's Forever!
Re: Coming Soon
« Reply #368 on: June 29, 2015, 10:03:23 PM »
Joshex, I dislike Java almost as much as I dislike Ecmascript (javascript to mortals).  However, if the industry wants it, then as a professional, I have to learn it if I want to keep food on the table.  Sticking to one language just gets you one thing, unemployed.

Today, for example, my time was spent debugging someone else's WPF (XAML) code. Ew.  Tomorrow, I'll be debugging some ancient VB6 code (bleurgh), and the day after, who knows? It could be C#, C, ASM, HTML5, Fortran, SQL... Such is the dreary life of a programmer, and I've been one since 1988.  If you're not a polyglot, you've had it.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #369 on: June 29, 2015, 10:53:11 PM »
XMPP has limitations I didn't expect. if I had made XMPP I would have forseen that people might someday want to send other 'miscellaneous' datatypes such as custom codes needed by other programs. So I expected the makers of XMPP to have done the same. nope. well then, Oh... Kay...

How exactly do you think Codewalker got a generic XMPP server, that knows nothing about City of Heroes, to send messages between City of Heroes clients that make the game clients see each others' activity?  XMPP is just XML wrappers around data.  There's nothing you can't send.

Let's take a look at Codewalker's sample message again:

Code: [Select]
<message type="groupchat" to="test1@server.nice.try/Nomad"
from="novapraetoria_meta@conference.server.nice.try/Conan the Librarian">
<u xmlns="xx:u" p="-4742.7 40 -240.8" v="0 -0.6 0" o="0 -1.77 0" m="JUMPFALL"/>
</message>

XMPP messages are written in XML, this is a single <message> stanza, or message block.  The message type is "groupchat" which is a standard XMPP message type used to indicate multicast (many to many) communication.  The message has a defined "from" and "to" which can be used to determine where messages are destined for and where they come from.  Useful for message routing in the general case.  The actual meat of the message is the "u" block, which is probably part of a declared namespace from the start of transmission, and includes positional information (p=""), velocity information (v="") and orientation information (o="") and an action, like an emote or animation sequence, (i.e. m="JUMPFALL").  The only real parts of XMPP Codewalker is using are the wrappers to get message A to destination B.  The actual data being sent from client to client is basically just dumped into the XMPP message within a global wrapper.  Its not even "XML-ized" into XML blocks, because why bother.

What possible piece of information could you want to send that this can't accommodate?  This can literally accommodate anything.  Every piece of data any client could ever send to a server, or vice versa, could be written out in ASCII and stuck into a (longer) message.

That's why I'm still confused why you're opposed to learning XMPP.  You don't need to learn all of it.  Just the wrappers that Paragon Chat uses.  I've already starting taking some code I was futzing around with to play around with MMO architectures, and adapting it to making a PC bot and I haven't even seen Paragon Chat yet.  Don't have to.  The bot has to do certain things, and I already know what most of them are.  Login.  Broadcast the right information to start up, including character information.  Join the right rooms.  And then mostly move around and emote, tracking position, movement vector, and direction (orientation).  And a way to send the right bunches of those numbers at the correct rate for PC to send that properly to any other connected client in the same zone.  Once PC releases, all I have to do is take the numbers, and wrap them inside valid XMPP wrappers and ASCII encode the numbers in Codewalker's format, which is a completely separate routine I can write later.

None of this requires I be an expert at XMPP.  I just need to be sufficiently conversant with it to be able to understand what Codewalker did, and he's already tipped 80% of his hand already with that one message.  The rest is mostly details.

Incidentally, I'm worried a bit about the "once per second" throttle and how that affects what people logged into actual clients can see and do.  But I think its possible to make a punching dummy.  I'm not quite sure if it will work in practice, but in theory the pieces seem to be there.  Right now, can't spawn VFX (its on my list, Codewalker).  So no shooting.  But an MA kick like Crane Kick, that's just an animation sequence; basically an emote.  I can't make that animation actually do anything to anyone, but I could make a bot that tries to detect the kick, validate its in range and at the right orientation and then takes a dive. 

If Codewalker can create a primitive that spawns VFX, I could use the MUD** route and instead of having the caster execute powers, have the bot do it.  The bot can go faster than the client, and the bot can do things Codewalker can't allow players to do to each other, like fall down and die.  You just have to spawn the VFX backwards, making sure the animation plays towards the bot and away from the player, exactly the opposite of what powers normally do.

All that is possible without touching the server at all, except to connect the bot to it.  Before thinking about hacking the chat server, I think its important to see what's possible with a generic server first, leveraging the capabilities we already have, or could get just by torturing Codewalker until he writes them.  Custom servers and complicated, glitchy, horribly unstable things.  Standard XMPP servers are notorious for being that without customization.  And a chat server will always prevent players from abusing other players.  But a bot can do anything to itself when asked: we could do a lot by asking a bot to take one for the team, rather than asking Codewalker to add features that allow players to do things to the environment or each other.

Hypothetically speaking, an interesting feature for PC X.whatever for X>>>1 is opt-in.  Players could register with a bot, and opt into its effects.  When you opt in, you'd be granting the bot the ability to do things to you, like move you around.  Codewalker could then more safely add features that would be useful to, say, role playing GMs that would be unsafe to add globally.  Opt-in would whitelist the GM and any or all of his bots, whereupon the GM could do "unsafe" things.  Codewalker himself hinted that he might add the ability to create private rooms where the instantiator had roughly the same equivalent rights: anyone entering that room would be subject to greater control by the GM that people in public spaces are normally protected from.  That opens the door to all kinds of additional interesting possibilities.  Including things like ways to potentially operate the ski slopes.  Again, without tampering with the central chat server.

Putting most of my cards on the table, I'm thinking about server mods because I'm an architecture person; that's what I do.  But it may be months or years before I seriously mess with that, when there's so much you can do without touching the server.  And things you figure out how to do without messing with the server are highly portable, and thus more interesting.  They may require modifications to the Paragon Chat local, call it proxy, itself.  But I suspect every feature I want is currently something Codewalker really wants to do eventually anyway.  I just have to convince him to do my list before his list.  Not easy, but easier than say liking java.


** Back in the day, the way MUDs often worked is that rather than have the game understand what players could and could not do, programmers could add objects in the MUD that had self-contained intelligence that knew what could be done to them.  That way, all the brains were in the custom thing, and not in the engine or even in the clients, to the extent that MUDs even had clients as such.

Nyx Nought Nothing

  • New Efforts # 11,000!
  • Elite Boss
  • *****
  • Posts: 796
  • Ha!
Re: Coming Soon
« Reply #370 on: June 29, 2015, 11:08:05 PM »
i've been contemplating the Dunning-Kruger effect quite a bit more often than usual for the past week. For some reason.
So far so good. Onward and upward!

Leandro

  • Elite Boss
  • *****
  • Posts: 310
Re: Coming Soon
« Reply #371 on: June 29, 2015, 11:40:09 PM »
The once-a-second restriction is there just to limit bandwidth usage, and that's just on what Paragon Chat itself is sending. It could certainly update more often, but it's better to be cautious and check server load and bandwidth usage with slow updates at first. If you send 10 packets a second, Paragon Chat will process them.

Part of the reason why the source isn't being released immediately is that we don't want someone to build a version that sends faster updates, distribute it as "use this, it has smoother movement!" and either kill the bandwidth or, worse, hide a keylogger or steal passwords.

The Fifth Horseman

  • Elite Boss
  • *****
  • Posts: 961
  • Outside known realities.
Re: Coming Soon
« Reply #372 on: June 29, 2015, 11:42:45 PM »
it made it so I was restricted to 2 options, communicate directly with the XMPP server or make my own client server system, the last option is still possible, and I'm tempted to try. -auth it all starts from there, no wait... I still need a way to break CityofHeroes.exe away from the NCSoft launcher. Codewalker, sorry to bother.. especially with an unrelated question but; how did you manage to make the client run without auto-triggering the NCSoft launcher?
That's not even a real question, Joshex. The client doesn't need the launcher to work. Temporarily replace the game executable with a simple application that will show you the arguments with which the client is started. Try running it from the launcher. See what you get.
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.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #373 on: June 30, 2015, 12:05:29 AM »
The once-a-second restriction is there just to limit bandwidth usage, and that's just on what Paragon Chat itself is sending. It could certainly update more often, but it's better to be cautious and check server load and bandwidth usage with slow updates at first. If you send 10 packets a second, Paragon Chat will process them.

That's what I figured, which is why I figured bots would actually be able to do more than conventional players.  What I wasn't 100% certain about was whether Codewalker put throttles into the local client, to prevent the exploit you described.  If those existed, the bots could bot themselves to death at 30 frames per second, but nobody would actually see that happen.

benkenobi

  • Underling
  • *
  • Posts: 13
  • Nōlī turbāre circulōs meōs!
Re: Coming Soon
« Reply #374 on: June 30, 2015, 12:14:21 AM »
That's what I figured, which is why I figured bots would actually be able to do more than conventional players.  What I wasn't 100% certain about was whether Codewalker put throttles into the local client, to prevent the exploit you described.  If those existed, the bots could bot themselves to death at 30 frames per second, but nobody would actually see that happen.

Sounds quantum mechanically legit. ;)
# Quantum Mechanics
(rand(0..1)) ? True : False;

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #375 on: June 30, 2015, 01:46:44 AM »
(lots of stuff about not wanting to write plug-ins in java snipped for brevity)

The fact that the server we happen to be using at launch is written in Java really isn't important. Yes, if you want to write a plug-in, it has to be in java, but I mentioned that only an aside, not a main point.

The whole reason for using XMPP is so that Paragon Chat doesn't rely on any particular server software. It's an open standard and there are many different servers. Just because we haven't tested them, doesn't mean they won't work.

In fact, none of the items on our short, medium, or even our long term goals for PC will require any kind of custom server plugin. They're all things that can be reasonably done in a cooperative manner between clients using a common transport.

That's why when you mentioned the ski slope thing, my first take on it was a bot that sits in the Pocket D channel and watches the traffic. I only mentioned server plugins as a second possibility because you were so focused on it needing a server component. For what you're trying to do there is literally nothing to be gained by using a plugin. There's nothing a plugin can do that a regular user cannot that would be useful to you for what you're trying to accomplish.

XMPP is extremely extensible, but you're limited not by the server but rather what data Paragon Chat is willing to process and act on. The initial release will be quite limited in that regard, but as more features are added, different ways of interacting with it will appear. Eventually I'll be adding a scripting interface to the client itself, probably Lua as it's easy for people to pick up and popular for game scripting due to its lightweight implementation. Once that happens almost anything becomes possible, so long as people are willing to install client-side addons to it.

And yes, I have read the majority of the XMPP specification in the course of this project, and learned a lot about how it works as a result. The docs aren't that bad, and the high level overview is not hard to find. A large portion of them involve detailed examples of what-if scenarios for both client and server and can be skipped over if you're not interested in that particular scenario from that particular point of view.

ukaserex

  • Elite Boss
  • *****
  • Posts: 500
Re: Coming Soon
« Reply #376 on: June 30, 2015, 01:57:11 AM »
It has been...12 years since I've taken a course in Java, and 11 years since I took C++. I dug around Windows MFC for extra credit ( I needed it) and somehow came out of Data Structures with an A ( one of 4 in a class of 26 I found out later)

And all that stuff you guys wrote - about 80% of it went over my head. It's been years since I used it - and I might be able to code "hello world" at gunpoint, but I'd probably forget the closing paren. (isn't that the singular form of parenthesis?)

So, glad you folks are doing all the heavy lifting, for sure.

Are we going to have to do any light lifting? Or just log in per usual and avoid swearing at people who keep stealing my kills? (Yes, I'm aware that there will be no powers - but I fully expect someone to say they finished off that level 5 Hellion boss I was scratching to death, pretend-wise. )
Those who have no idea what they are doing genuinely have no idea that they don't know what they're doing. - John Cleese

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: Coming Soon
« Reply #377 on: June 30, 2015, 02:01:12 AM »
That's what I figured, which is why I figured bots would actually be able to do more than conventional players.  What I wasn't 100% certain about was whether Codewalker put throttles into the local client, to prevent the exploit you described.  If those existed, the bots could bot themselves to death at 30 frames per second, but nobody would actually see that happen.

I didn't see any reason to rate limit the incoming updates. By that time the bandwidth is already wasted and there's nothing it can do about it. Perhaps limiting incoming messages could serve as a deterrent to writing misbehaving bots, but to me that seems like a problem that should be dealt with by server admins instead.

The one second rate limit is actually only for position updates; the absolute outgoing rate limit is two updates per second. If something else changes in the interim such as orientation, that can still be sent separately, but the position will tend to not be sent more often than once per second except under special circumstances. Velocity transitioning to a 0 magnitude vector is one of those.

The starting values for those are fairly conservative until we have a better idea of what bandwidth and server load we're looking at. In one experimental build I reduced them for more frequent updates, but it actually made things worse for jumping due to the updates for different variables not lining up together as often and having to wait for a future tick instead of all going out at once.

I have some plans for future versions to actually reduce the update frequency to the metadata channel, perhaps to 5 seconds at the most, while simultaneously implementing limited multicasting of more frequent updates to characters who are actually close to you, similar to how local chat works. Perhaps eventually shift toward a timecoded history stream to replay in between absolute updates, which is very similar to how the game itself achieves its extremely fluid motion even in laggy conditions.
« Last Edit: June 30, 2015, 02:06:31 AM by Codewalker »

Takinalis

  • Boss
  • ****
  • Posts: 107
Re: Coming Soon
« Reply #378 on: June 30, 2015, 02:04:41 AM »
i've been contemplating the Dunning-Kruger effect quite a bit more often than usual for the past week. For some reason.

i've been contemplating The BDLPSWDKS Effect quite a bit more often than usual for the past week. For some reason.
Valkyrie Blade - Virtue Server

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: Coming Soon
« Reply #379 on: June 30, 2015, 02:16:22 AM »
That's why when you mentioned the ski slope thing, my first take on it was a bot that sits in the Pocket D channel and watches the traffic. I only mentioned server plugins as a second possibility because you were so focused on it needing a server component. For what you're trying to do there is literally nothing to be gained by using a plugin. There's nothing a plugin can do that a regular user cannot that would be useful to you for what you're trying to accomplish.

Joshex conflated the client throttle with a server message queue and wanted to bypass that by sending messages directly to the clients without using the XMPP channel, not realizing those words only sound like they say something meaningful, but are actually programmatically nonsensical.

Also, he was worried that the one second positional interval would be too imprecise for race tracking, but unfortunately I don't think he has sufficient experience to come up with motion interpolation using player motion vectors and orientation.

I also don't think he's reached the same Eureka moment the more experienced developers have arrived at yet, namely that every client fundamentally gets basically everything every other client sends to the "server" which gives every client the same opportunity to be a "server" as the XMPP server itself, maybe moreso.  There's only one thing really you'd need a server mod for, and that's the case where you want a message from a client to *not* go to every other client.  Full on combat, rather than the simulated pretend combat I've described, would need something like that.  Sophisticated chat moderation might.  But anything that can in effect be done with a "referee" can be done with a chat client pretending to be a god-mode player.

The Really Big Eureka moment came for me two seconds after I saw the XMPP-signal, when I realized that the XMPP chat server wasn't really going to be "the server," its really the network stack.  In effect, Paragon Chat is a peer-to-peer distributed virtual environment, with XMPP as the network layer.  The network layer has a server, but the virtual environment has no server.

When Joshex realizes this, not just on paper but intuitively, he'll realize he can do everything he wants to do in python or any other language, and the limiting factor isn't language or XML, its algorithmic cleverness.