Why COH will not get a server emulator.

Started by Leandro, January 03, 2013, 03:37:38 PM

Leandro

There's been some discussion on the boards about a "server emulator" that would allow people to play the game without the official servers. I can say with a high amount of certainty that such a thing does not exist, and is not being worked on. I feel it is necessary for everybody to understand what they are talking about when they ask for a "server emulator".

An emulator tries to copy the internal workings of something else, to some level of accuracy. Projects such as Nintendo emulators don't just look at what a specific game and say "we'll make that Nintendo game work on a PC"; that would be porting the game. An emulator works on a lower level; it looks at the collection of chips that the Nintendo console has, and says "we'll translate the internals of the chips into a program". They emulate the individual instructions of the chip. There's no instruction that says "play the Mario song" in a sound chip; there is a lot of instructions regarding the set up of instruments, the notes that are going to be played, the timing, and all the instructions come together to play many different songs.

Accurate emulators will try to copy even the smallest quirks of the original, because you never know when something tiny will cause a noticeable difference. It takes a 3GHz quad-core computer to play Nintendo games with full accuracy. Accuracy is what emulators strive for; compatibility with the games is a side effect of how accurate the emulation is. Sure, there are crappy emulators that are not very accurate, and hopes that the software won't notice. This works well in practice because software is very tolerant to small glitches; your computer would crash every 5 minutes otherwise. But the goal of an emulator is accurate duplication of the internal workings of the original.

That is why emulators have always been met with a bad face legally. Their aim is to copy the original, as closely as possible. Some emulators won't even run unless they are supplied with part of the original machine; the BIOS, for example, which is proprietary code of the original developer. While reverse-engineering the internal workings and re-implementing them is legal (that's how the first IBM PC compatible computers were made), this doesn't stop companies from getting upset at their code being copied so faithfully that it might as well be "stolen".

What does any of that have to do with City of Heroes? Quite a bit, actually. City of Heroes requires a server to talk to it and return information, but the relationship between the client and the server is much more tolerant. It has to be; by communicating through the Internet, you are exposing yourself to all sorts of technical glitches: packet loss, data arriving out of order, lag, and so on. The client does not expect the server to do things in a very specific way; it just expects it to do something and return a result, and it doesn't care how the result was obtained. This is why emulating the original server is not necessary. You just want a server that is compatible with the game client.

To understand the difference, I'll just have to expose you to a little bit of programming. Don't worry, it'll be simplified enough that you don't need any programming background to understand it; but seeing the difference in code will help you greatly understand it.

Imagine that City of Heroes asks the server, "what was the last character that was logged in from this account?"; and the way the original server determines that is:

1. Assume the "result" character logged in January 2000.
2. Get the data for a character in this account.
3. Get the date the character was last logged in.
4. If the date is closer to today than the "result" character, turn this character into the "result" character.
5. If there are more characters in this account, go back to line 2.
6. Return the "result" character


This code would ask for each character individually, look at their date, and keep replacing its result character with the latest one it finds, until it runs out of characters and it returns that. The code would ask the database for each character individually, taking longer to process; on the other hand, it would use less memory because it only has to hold two characters at once: the preliminary "result" and the one being processed.

An emulator would try to copy this behavior exactly, because accuracy is the goal. The fact that it makes several database requests can produce subtle variations in timing, the fact that it constantly replaces the "result" character might result in leftover data from a character "bleeding" to another, if the account has NO characters this would return an empty character last logged in January 2000... there might be all sorts of tiny glitches that would have to be copied exactly, even if the result is wrong as a result. An emulator doesn't care if the result is "wrong"; it only cares that it's accurate.

However, someone writing a server compatible with City of Heroes doesn't want bugs. They don't want slow code prone to glitches. They don't care how the original server worked. They see the client ask the server "what was the last character that was logged in from this account?" and they write this code:

1. Get me a list of all the characters in the account into a big "array" (a list, basically).
2. Sort the array by the "last logged in" field, so the last logged in character is at the top of the array.
3. Return the top item on the array.


This code runs faster, it only hits the database once (for a list) and doesn't replace a dummy character over and over. It uses more memory, but this particular developer thought it was a fair trade for faster execution. It just does what it's expected to do and returns a result, but the result was obtained in a completely different way than the original server did. And that doesn't matter, because the client doesn't care about the internals, only the result.

This is the very important difference. An emulator targets accuracy, with compatibility as a side effect; a compatible server just wants compatibility, not internal accuracy.

This is further proven by servers that sacrifice accuracy on purpose. There are servers for other games where the level cap is increased from 50 to 250; where characters are assigned "helper pets" that don't exist in the original game; where PVP is enabled in every area when the original was limited to arenas; and the list goes on. The server just wants to speak the same "language" as the client to deliver an experience that might be exactly the same, or it might be completely different.

So, what you all want is not a "server emulator". You want a compatible server. You don't want something that is based off Paragon Studios' code, with all the legal headaches it involves; you want original code that works better than what they had. Our devs have said many times how much the original code was a mess, how maintaining it was a nightmare, how they wish they had more resources to rewrite the damn thing. We do not want to emulate that! We want to make something that gives us the same play experience, but is smoother, better and faster.

And that's why City of Heroes is not getting a server emulator. Stop asking for one.

However, do keep cheering for a compatible server and know that we will have one eventually.

That is all.

damienray

Even tho I had a basic understanding of the differences, this made it crystal clear to me.  Thank you !
(Now may I have my invite to a compatible server, pretty please with a break-free on top?)
;)

Little Green Frog

As a non-native speaker, I feel like I am walking on a thin ice here, but I always understood the word emulation not as a process of making a perfect copy or a mirror image, but as an act of imitating something in a manner that is in effect indistinguishable from the original. Sure, some emulators are very precise and thorough, especially those that are trying to mimic hardware, but only because - as you pointed it out yourself - even a little quirk could matter. If only they could get away with being less precise, they probably would.

So, the word emulation fits here perfectly. And, frankly, compatible server sounds weird. ;)

Artillerie

Thank you for the clarification Leandro, many people here are obviously quite technical but others - myself included - are not. Making the situation clearer for us can only help us to support various schemes in the long run.

Heroette

Wow, that was educational.  I did not know the difference (nor did I even know one existed).  I just know when I play a game on the internet, I expect it to work.  So, if there is a compatibility server ever created, I sure would like to know about it.  That is my formal request.  Thank you.

Codewalker

Quote from: Leandro on January 03, 2013, 03:37:38 PM
1. Get me a list of all the characters in the account into a big "array" (a list, basically).
2. Sort the array by the "last logged in" field, so the last logged in character is at the top of the array.
3. Return the top item on the array.

Boo.

1. Query the database for characters that match the desired account name,
   sorted by last logon date (descending), limit 1. Cause finding needles in
   haystacks is what SQL servers have been doing for ages and they're really
   good at it.
2. Profit!

Minotaur

This is true in many areas of IT, non technical people use a term for something which is not the technically correct one, but is understood by similar people. I don't think anybody expected what Leandro called an emulator, much more what he called a compatible server, but to most of us, that is what we understand as an emulator (and indeed it's called an emulator in the non gaming area of IT I used to work in, I made a couple).

Leandro

Quote from: Little Green Frog on January 03, 2013, 04:07:55 PMI always understood the word emulation not as a process of making a perfect copy or a mirror image, but as an act of imitating something in a manner that is in effect indistinguishable from the original.

And that's not what we want. By that definition, we'd be stuck with Issue 24 beta, never advancing the game or adding things to it. No finished Kallisti Wharf, no new powersets, no new costume pieces, no contacts with new story arcs, no Moonbase. Is that what you want? As soon as we start adding things, then you can no longer say it's indistinguishable from the original.

Quote from: Little Green Frog on January 03, 2013, 04:07:55 PMAnd, frankly, compatible server sounds weird. ;)

What about "community server"? That's my preferred term, actually. It has a nice ring to it.

dwturducken

I guess the important question is: Is a "community server" legally distinguishable from an emulator, thus making it "safe" to run one?

It's a rhetorical question. I'm assuming the "emulators" that NCSoft has gone after in the past were something more akin to "community servers," anyway. However, it would be interesting to see if there is any legal precedent for the case on technical grounds.
I wouldn't use the word "replace," but there's no word for "take over for you and make everything better almost immediately," so we just say "replace."

Little Green Frog

#9
Quote from: Leandro on January 03, 2013, 05:03:18 PM
And that's not what we want. By that definition, we'd be stuck with Issue 24 beta, never advancing the game or adding things to it. No finished Kallisti Wharf, no new powersets, no new costume pieces, no contacts with new story arcs, no Moonbase.

Ah, I see where the misconception comes from now. You are mixing business logic with content, while they should be perceived as separate entities. An emulator keeps being an emulator regardless of whether it handles content for Issue 24, Issue 4, or Fan Issue 13 as long as the client connecting to it thinks it is connected to a server. But it's not the original server, hence we call it an emulator. I believe that is the correct and more importantly the intended use of the term emulation in computing.

Quote from: Leandro on January 03, 2013, 05:03:18 PM
Is that what you want?

This is beside the point, but since you asked, then yes, of course it is. Or at least I would like to have a choice to run in "classic mode", please. For sentimental reasons. And because fan made issues would be, well, fan made issues. Once upon a time a well crafted fan made content for a game happens, but I see that as a very rare event. No disrespect for you guys. I simply have no idea what are you capable of in terms of writing, map design and so forth.

Quote from: Leandro on January 03, 2013, 05:03:18 PM
What about "community server"? That's my preferred term, actually. It has a nice ring to it.

Sounds much better. But it wasn't my intention to meddle with the naming. Whatever choice will be good. I simply wanted to point out that people using the word emulator are actually correct and there is no need to invent anything more technically accurate.

edit: wording

Starsman

Quote from: Leandro on January 03, 2013, 03:37:38 PMSo, what you all want is not a "server emulator". You want a compatible server.

Can't believe you wrote such a well thought piece to do what amounts to a semantics argument/correction...  :o the overuse of the word "emulator" must have REALLY been burning you inside out  ;)

Anyways, the real REAL challenge is to tackle the "language" the server and clients used to talk to each other, without any documentation, and without live servers to monitor.

It's a shame CoH didn't have enough demand, while also enough upset players, to work on reverse-engineering that communication system when the game was still with us.
For the sake of the community: please stop the cultural "research" in your attempt to put blame on the game's cancelation.

It's sickening to see the community sink that low. It's worse to see the community does not get it.

I'm signing off and taking a break, blindly hope things change.

dwturducken

I thought that the efforts here (not the SaveCoH stuff but the technical efforts that started Titan in the first place) had done a lot of that kind of tracking and monitoring. I could be misremembering that, but I thought that Tony or Code had said that shortly after Black Friday.
I wouldn't use the word "replace," but there's no word for "take over for you and make everything better almost immediately," so we just say "replace."

Arachnion

Quote from: dwturducken on January 03, 2013, 06:50:04 PM
I thought that the efforts here (not the SaveCoH stuff but the technical efforts that started Titan in the first place) had done a lot of that kind of tracking and monitoring. I could be misremembering that, but I thought that Tony or Code had said that shortly after Black Friday.

I'm pretty sure the people involved have more than enough data.

I recall someone saying here they were monitoring the last three months of the game.

@OP: Well said, Leandro.

8)
I'm all dressed up with nowhere to go
Walkin' with a dead man over my shoulder

Waiting for an invitation to arrive
Goin' to a party where no one's still alive

houtex

<all what Leandro said>

Yeah, that's what I was talking about.  But people call the computer box a 'modem'(!) or 'hard drive' or many other things than a computer all the time where I work.

I... don't know why. 

But yes, what you said, Leandro, definitely, that's what I want.  A local one.  Because, well.. I want it. :)

Good on ya!  :thumbs up:

Mister Bison

In fact, the late CoH servers were images that were running on virtual machines in a cloud of servers. So there is nothing to emulate, or if there is, it will boil down to recoding it.

Based on reference.com, to emulate is to equal or excel others. CoH is protected by copyright. But is Usain Bolt protected by copyright ? Would he be, would besting him in sprint be copying him ? No, because everybody knows what running is. We all can make a robotic duck that quacks like a duck, and flies like a duck. Will it be a duck and then, infringe on Nature's copyright ? Nope ! It's an emulator of a duck !

So what Titan Network is actually plotting is not to do a community server. Neither an emulator. It'll be...

https://images.weserv.nl/?url=www.gifbin.com%2Fbin%2F1232550297_Dramatic+chipmunk.gif
Emulating an Emulator !
Yeeessss....

Codewalker

https://images.weserv.nl/?url=images2.wikia.nocookie.net%2F__cb20080110190923%2Fspacequest%2Fimages%2F4%2F41%2FSimSim.png

Starsman

Quote from: Codewalker on January 03, 2013, 10:12:30 PM
https://images.weserv.nl/?url=images2.wikia.nocookie.net%2F__cb20080110190923%2Fspacequest%2Fimages%2F4%2F41%2FSimSim.png

The third recursive loop seems to have crashed... it only has a blue screen!!!
For the sake of the community: please stop the cultural "research" in your attempt to put blame on the game's cancelation.

It's sickening to see the community sink that low. It's worse to see the community does not get it.

I'm signing off and taking a break, blindly hope things change.

dwturducken

Quote from: houtex on January 03, 2013, 09:23:44 PM
Yeah, that's what I was talking about.  But people call the computer box a 'modem'(!) or 'hard drive' or many other things than a computer all the time where I work.

The place I used to work handled computer support for several offices in the metro area. One of our longest-served customers had a problem that sounded like a hard drive issue, which he knew from experience would be better handled at our office, and, since we had recently switched him to a new Dell, the repair was likely to be covered by the warranty, so he said he would just drop the computer off on his way home. (Our office was actually on his way.) What I had forgotten was that his prior computer was an iMac. Guess what he brought in. :)
I wouldn't use the word "replace," but there's no word for "take over for you and make everything better almost immediately," so we just say "replace."

Atlantea

Quote from: Leandro on January 03, 2013, 05:03:18 PM
And that's not what we want. By that definition, we'd be stuck with Issue 24 beta, never advancing the game or adding things to it. No finished Kallisti Wharf, no new powersets, no new costume pieces, no contacts with new story arcs, no Moonbase. Is that what you want? As soon as we start adding things, then you can no longer say it's indistinguishable from the original.

What about "community server"? That's my preferred term, actually. It has a nice ring to it.

The above is a (not so) veiled hint Leandro just tossed out.

Just sayin. :D



"I've never believed in the End Times. We are mankind. Our footprints are on the moon. When the last trumpet sounds and the Beast rises from the pit — we will KILL it."
— Gen. Stacker Pentecost

Leandro

Quote from: Atlantea on January 04, 2013, 12:34:11 AM
The above is a (not so) veiled hint Leandro just tossed out.

It's no longer a hint if you point it out like that, but people on the Multimedia forum know very well that I intend for us to be able to make our own maps, and finish the incomplete bits that the devs left in the i24 Beta client. Their creations deserve to see the light of day as they intended.