Author Topic: "Abandoned Games" exemption?  (Read 27846 times)

Mageman

  • Lieutenant
  • ***
  • Posts: 94
Re: "Abandoned Games" exemption?
« Reply #20 on: December 02, 2015, 12:17:30 AM »
Actually, I think most of the text was on your local computer. So all you would do is recreate the AI, and point to the text and let the local software remain on your computer - which you own.
My Reality:
#1 I love my wife!
#2 I miss CoX!
#3 Refer to rule #1!
#4 I seem to have an itch!

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #21 on: December 02, 2015, 12:48:41 AM »
I'm pretty sure you're wrong about that. Reading through the Paragon Chat forums, I've read multiple times from Codewalker and Arcana that a lot of the text resources were serverside, particularly for npcs and missions.

That's the reason the hack CodeWalker had to do to get Ascendent in Steel Canyon was notable and not trivial.

Take a glance at http://www.cohtitan.com/forum/index.php?topic=7866.0
« Last Edit: December 02, 2015, 12:54:13 AM by Golden Aurora »

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #22 on: December 02, 2015, 01:48:16 AM »
Actually, I think most of the text was on your local computer. So all you would do is recreate the AI, and point to the text and let the local software remain on your computer - which you own.

Some of the displayed text was stored locally.  Some isn't.  I believe mission dialog boxes were stored locally (not sure).  NPC channel dialog was not stored locally**.  However, things like mission scripts were stored server-side.  Basically, the pieces exist on the client, but the instructions for what to do with them were primarily server-side.

There are also very complicated legal questions about whether having the data in the client is even helpful.  For example, all the data that you'd need to recreate, say, a Freak Tank exists on the client.  The models, the visual textures, the entire set of definitions for what powers the Freak has and even how they work are on the client.  But they do you no good on the client, because the client has no code that allows it to do anything with that data - its there because of a quirk of implementation.  Its the server that needs to know what powers a Freak tank has.  If you look it up on the client, and copy that data into your server implementation to allow the server to spawn and manipulate a Freak NPC, or even write your server to suck that data out of a game client, you're copying content without permission.  That's almost certainly a copyright violation.

Maybe, just maybe, it would be legal to reverse engineer a game server that ran locally on your PC itself, that read the appropriate files and used them in a "server" implementation that your own game client could use.  However, even after reverse engineering mapserver technology and NPC AI and spawn logic and combat mechanics and everything else you'd need to make the gameclient something other than Icon or Paragon Chat, you'd still be missing the information necessary to do things like run game content.  Basically, you might be able to get a single player Architect working.


** At one point it was, but I believe it was removed.  As part of the development process, the devs could set switches that determined what of the server data also showed up in the client.  Sometimes, things got pushed that shouldn't have, and were later removed.  Sometimes things were not pushed because it was not necessary, and then later were pushed when it became necessary.  For example, originally powers data was in the client, but the attribmods associated with powers were not (attribmods are basically the power's effects).  There were technical reasons for including the core power data but the attribmods were not considered necessary.  They became necessary in Issue 11, when the Real Numbers system required access to that data from within the client.  So game clients from Issue 10 and earlier have no power effect data in their files, and game clients from Issue 11 and later do.

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #23 on: December 02, 2015, 02:01:20 AM »
It actually doesn't even seem that hard to do when I think about it, as far as referencing in game resources.
Everything is an array or a memory location when you break it down. Do you really need to know the name of the Freakshow boss 'Dreck'? Npcs[20].Object[2732] works just as well.
Abstract the resources into a form that can be handled by servers without copyright infringement.
All you'd need is a clientside lookup, really.

Of course that sounds alot easier than it actually would be, but I'm confident there has to be a good solution to this sort of thing.

Another example is if you needed to compare if something is "Dreck" or not, sha-1: 2fddd9503ac5bc4514dcd9529eea262515aee8e7 works too!
« Last Edit: December 02, 2015, 02:08:14 AM by Golden Aurora »

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #24 on: December 02, 2015, 03:10:49 AM »
It actually doesn't even seem that hard to do when I think about it, as far as referencing in game resources.

Not hard.  Tedious, not hard.

Quote
Everything is an array or a memory location when you break it down.

For the most part, its actually a structured file in a virtual file system.

Quote
Another example is if you needed to compare if something is "Dreck" or not, sha-1: 2fddd9503ac5bc4514dcd9529eea262515aee8e7 works too!

Not sure what you mean by this, but if you mean what I think you mean this is a thing that never has to happen within the technology of a game engine.  Everything that exists within the game (when it was running) was something the mapservers themselves spawned into the space: its impossible for the game engine to not know what a thing is.  The mapserver spawns "Dreck" if its told to spawn Dreck, either by interactive command or because of a mission script that tells it to do so.  There's no other reason why the game engine would need to "find" Dreck within the game content files.  If it needed to know anything about Dreck, its because it was told to by something that identified Dreck by Dreck's internal entity name.

To put it another way, at no time is a game engine told to spawn "something called 'Dreck'" and the game engine has to somehow "figure out" what you mean by that.  Its told to spawn Dreck_the_Elite_Boss_version (not the real name for that NPC, just making up something for clarity) and that name identifies the data associated with that NPC.  If you were writing your own local single player mapserver, you'd write your own code that referenced the IDs within the client pigg files, which is where the data you needed would be.

Incidentally, Paragon Chat does this, specifically for player animation sequence files.  Paragon Chat needs to know how animations work, and it uses the data within the game client to figure this out; the same data the game client itself uses to know how to run animations.  The original game map servers also needed to know this, but contained the sequence files within their own code.  Paragon Chat can't do that, because that would be a copyright violation.  But reading the copy you already have is, if not black-letter legal in every country, at least within the grey area of not distributing copyright content.

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #25 on: December 02, 2015, 03:33:48 AM »
I had been looking at it from the perspective of the loaded binaries in memory rather than the pig/bin files.
What I had been getting at with the sha-1 example is that it should be possible to write mapserver code which does not use any copyrighted resources directly.
You can't copyright the number 2567. You also can't copyright a sha-1 hash I'd assume.
While I will plead ignorance to the finer details of how the game is implemented, my point is that it should be possible to have your cake and eat it too.
That is to have a mapserver utilizing resources already in the client generically without infringing.

With your animations example, the applicable response is to transmit information about how animations work in a completely different format which is outside the scope of how the game was implemented. With animations you generally have what is a running loop over some time interval right? Transmitting how many times that should run per second isn't infringing on anything. It's just a number.

I'm unsure if this conveys what I'm thinking clearly, but my hope is it does.
As always, thank you for taking time to explain this and to share my thoughts.

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: "Abandoned Games" exemption?
« Reply #26 on: December 02, 2015, 03:44:43 AM »
I believe mission dialog boxes were stored locally (not sure).  NPC channel dialog was not stored locally**.

Mission briefing text was removed at the same time as NPC dialog, circa Issue 20. It was a real treasure trove of information around Going Rogue beta, where some bits of contacts, missions, and one entire zone (The Fringe) that were cut from release were available.

My personal theory is that they were worried about pigg divers spoiling the "Who Will Die" series, which caused a review of the client files and the discovery that all of the mission text as well as souvenirs were being included. Of course they ended up giving it away anyway by putting some of the framework for the Penelope Yin TF into Independence Port early, but that might have slipped by people who weren't doing extensive bin-file diffs.

IIRC there are a few other conspicuous absences that must have existed purely serverside. Some NPC names are missing, but others are present (technically none of them need to exist on the client except for pets visible in real numbers). The one that has the most impact on potential Paragon Chat features is the long text description for badges. I guess someone was worried about them containing hints about how to earn them.

Very early builds, as in pre-release beta and the copy that's on the launch CD included the actual source *.ms text files that the client messages are built from, with comments and everything. Later those were removed and only the packed bin file remained.

If you look it up on the client, and copy that data into your server implementation to allow the server to spawn and manipulate a Freak NPC, or even write your server to suck that data out of a game client, you're copying content without permission.

Depends on the jurisdiction. In some, temporary copies in memory in order for software to function are not considered 'real' copies. Others lean more towards the UCITA-ish "running any program makes a copy, so you can't use anything without a license" BS. Obviously I'm a little biased since I consider that interpretation to be a gross violation of the original intent of copyright.

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #27 on: December 02, 2015, 01:51:25 PM »
Temporary in memory copies of executable binary images should not fall under copyright infringement for the same reason that someone taking a picture of your house to measure its size or other dimensions shouldn't be considered home invasion. Of course on a jurisdiction by jurisdiction basis, I have no idea what's legal. I live in California so I automatically assume everything is decently conservative.

I see where the npc scripts logic is going though. If you store that clientside in a way the CoH client is able to recognise then just reference ids from the serverside implementation, you're really not infringing anything. They included all this stuff at one time to begin with anyways. The game was designed that way purposely to handle that type of implementation.

Maybe it's good that they were being shoddy with handling their source material. Heh.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #28 on: December 02, 2015, 09:11:24 PM »
Depends on the jurisdiction. In some, temporary copies in memory in order for software to function are not considered 'real' copies. Others lean more towards the UCITA-ish "running any program makes a copy, so you can't use anything without a license" BS. Obviously I'm a little biased since I consider that interpretation to be a gross violation of the original intent of copyright.

In this case I was referring to attempting to write a central server that copied pigg files from cooperating clients to use in a shared environment as a sort of bootstrap.  That's a copyright violation in almost any jurisdiction, and there isn't a moral leg to stand on there.  Copying into memory, for the purposes of using the physically owned copy is a different issue, relevant to things like local servers and things like Paragon Chat.  There, I think the law simply hasn't caught up to the state of the art of 1960s computer technology yet.

Azrael

  • Elite Boss
  • *****
  • Posts: 666
Re: "Abandoned Games" exemption?
« Reply #29 on: December 03, 2015, 07:30:12 PM »
Quote
BS

Indeed.

Who needs a central server?  I'm quite happy with re-engineered code to enable my local client behave 'like' CoH using a single and LAN player experience using a micro server which sits alongside the client copy.  In much the way that Paragon Chat does now as an 'enabler' of functionality eg.  I walk, I fly, I super speed, I emote, I explore the zones.  Yes.  We know Paragon Chat will probably be 'handed over' to something that will probably do far more than Paragon Chat just as Paragon Chat does far more than Icon.

It doesn't HAVE to be the 'original' game.  It's gone.  (Unless a deal can be struck.)  But it doesn't have to be.  With an Architect/LUA tooled(?) mission maker, with 'GM' powers to create a 'chat' map with spawn able NPCs?  That allows the community to truly 'own' CoH.

How are NC Soft going to play 'whack a mole' with people who were given the 'clients' for 'free' and are using said client to 'chat' or in the future, 'some semblance of CoH' (as we knew it...)?  Are they going to sue 150K former customers?  What?   For running a micro server single player or LAN player game?

And let's face it.  When teaming, I never viewed CoH as anything more than a 'LAN' experience.  Ie.  You only ever teamed with 2-8 players in the main.  In a similar way to a LAN experience of Unreal Tourney.

I found Golden Aurora's posts intriguing regarding the abstracting of certain things to allow them on the local level.  And similarly.  Codewalker and the rest of the SCoRE team seem driven to test the waters and see how we go.  So far...Paragon Chat gives a delicious insight into their strategy with a hand off to some form of 'real time' combat (micro server, I guess?) functionality in the future.

It's only code and a matter of time.

Azrael.

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #30 on: December 04, 2015, 05:53:53 AM »
That and exactly that. Code and a matter of time.
I mean face it. WoW emulators have existed for years.
Why should one moderately crappy Blizzard MMO have private servers (while the game is still alive!) but ours is floundering in some drawn out negotiations debacle.

If I thought City of Titans would be done any day soon I probably wouldn't be writing this.
Their development reminds me Duke Nukem Forever's...

Vee

  • Elite Boss
  • *****
  • Posts: 2,376
Re: "Abandoned Games" exemption?
« Reply #31 on: December 04, 2015, 07:27:03 AM »
 :o If CoT had an established major developer working on it and this were 10 years from now that might be a fair criticism

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #32 on: December 04, 2015, 08:59:48 AM »
I had been looking at it from the perspective of the loaded binaries in memory rather than the pig/bin files.
What I had been getting at with the sha-1 example is that it should be possible to write mapserver code which does not use any copyrighted resources directly.
You can't copyright the number 2567. You also can't copyright a sha-1 hash I'd assume.
While I will plead ignorance to the finer details of how the game is implemented, my point is that it should be possible to have your cake and eat it too.
That is to have a mapserver utilizing resources already in the client generically without infringing.

With your animations example, the applicable response is to transmit information about how animations work in a completely different format which is outside the scope of how the game was implemented. With animations you generally have what is a running loop over some time interval right? Transmitting how many times that should run per second isn't infringing on anything. It's just a number.

I'm unsure if this conveys what I'm thinking clearly, but my hope is it does.
As always, thank you for taking time to explain this and to share my thoughts.

The problem with the hash reference idea is that it eliminates the need to use one piece of content - the names of things.  But a mapserver would only need to know or otherwise dance around the name of something if it intended to use that name to retrieve other information associated with that name.  At that point, you might as well use the name.  You can't copyright "a number", but you can copyright a set of numbers intended to express a specific thing, like say the numbers that collectively define the Power Bolt power.  You can't dodge copyright by trying to load those numbers out of the game client by accessing them as "the numbers in the pigg file associated with the power whose name hashes to 0x789123456. 

Let's try to be more specific.  Suppose we thought-experiment a game server that itself contains no copyright material.  The City game client connects to it, and at some point you decide to fight a Freak tank.  Lets jump past the starter questions of how the server knows how to spawn a specific critter like that and look at some simpler questions.  You target the Freak, and on screen you get the health and endurance bars of the target.  How big should the client make them numerically?  That's something that the server tells the client.  So the server has to know.  Since the server has no idea (no content) it has to be written to somehow get that information from the client.  But even though hypothetically speaking that data might be collectively in the pigg files somewhere, the client itself doesn't know that.  Its there, but the client doesn't use it.  So its not going to be floating around in memory for the server to snatch**.  The game server would have to search the client pigg files for that data itself.  If the server is on your computer and your game client is the only thing connected to it, copyright is a little fuzzy as to the legality of this.  But regardless of where the server gets the data (memory or files), if someone else connects to that server and your server also transmits that data to them, you're now on less firm ground.  Your server has taken copyright content out of your client and transmitted it to another person entirely.  Although this is an extremely simplified context, its designed to highlight the point.

I think you might be thinking that the data in question is in the client and the server only needs to "invoke" it, somehow.  But that's not how the game works.  There is a lot of data that in a sense only the server "knew" and the client didn't really know.  The server sent it to the client whenever it was needed.  Technically, that data was sometimes within the client's files, but the client for all practical purposes didn't know that, and didn't use it.  The client's files have all the information you need to create a Freak tank.  But the client has no idea how to do that.  It relies on the game server to tell it what the combat properties of a Freak tank are, and has no ability to look it up itself.  That complicates the idea I think you're trying to communicate.

** Codewalker might demolish this example by  pointing out that in this specific case at lot of that data might actually *be* in memory for technical reasons, but that technical gotcha isn't important to the example

Codewalker

  • Hero of the City
  • Titan Network Admin
  • Elite Boss
  • *****
  • Posts: 2,740
  • Moar Dots!
Re: "Abandoned Games" exemption?
« Reply #33 on: December 04, 2015, 09:27:25 AM »
** Codewalker might demolish this example by  pointing out that in this specific case at lot of that data might actually *be* in memory for technical reasons, but that technical gotcha isn't important to the example

That particular data is actually in the client's memory at all times. But if you hadn't said anything I wasn't going to nitpick you on it, since the discussion is about transmitting that data.

(1) In regards to your earlier comment responding to me, the idea of the agent on the client's computer sending data from the piggs over the wire to a server didn't occur to me. That seemed like a clear cut copyright violation to me so I didn't even consider it.

(2) I'd just grab it from the files rather than memory if doing it locally. That's easier, and there's no meaningful distinction between the two methods that would make a difference legally.

Though, I'm not sure if the Freak Tank example is a particularly good one. All the the server is sending is the HP/Endurance totals and the costume index number, and that may be too small of a set of data to be reasonably covered by copyright. It's not sending the combat properties at all -- the client has no use for them -- it just uses them to determine what happens.

It does send the critter's display name as plain text, though, and that's one place that's definitely a gotcha for both copyright and maybe even trademark in some cases.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #34 on: December 04, 2015, 07:02:28 PM »
Though, I'm not sure if the Freak Tank example is a particularly good one. All the the server is sending is the HP/Endurance totals and the costume index number, and that may be too small of a set of data to be reasonably covered by copyright. It's not sending the combat properties at all -- the client has no use for them -- it just uses them to determine what happens.

More for simplicity for illustration purposes.  The real copyright violation would be the assertion that this hypothetical server was doing that for several thousand critters, for every combat attribute it had to look up to perform combat.  But that's just the example, repeated millions of time across a lot of design content, in a way difficult to claim was "fair use excerpts."

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #35 on: December 04, 2015, 11:08:26 PM »
I more envisioned a translation service between the server and the client.
The sort of thing that implements the functions of a MMO generically, then passes that to the local translation service (ala paragon chat) which interacts with the client directly.

So for instance, the server would understand the concept of a mob, hp totals, combat mods, damage functions, etc. It doesn't have to be a freakshow mob. Just some id for some mob and the values needed to do what it needs to do.

From there the values are passed to the translation service which can do whatever copyright infringing crap needed on their own local machine, sending it to the coh client.

So as an example:
Coh says use brawl on Freakshow mob to translation service.
Translation service says apply power id 123 to mob id 1234 at location 12, 32. Last known mob hp 1223.
Server parses message, looks up function for applying power to mob. Returns new mob hp and any other meta data needed.
Translation service takes meta data, applies it to coh specific data needed, and passes onto client.
Client proceeds as normal.

Does the server need to know the mob name? No. It needs an id and any meta data used in calculations. It's really just a unique identifier agreed on by the translation service and server.

None of what I described is really specific to coh. You could in theory apply this to any mmo following a similar combat system.
Anyways, I guess they could claim the mob hp total, or calculation meta data is infringing.. but whatever.

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #36 on: December 05, 2015, 12:18:21 AM »
So as an example:
Coh says use brawl on Freakshow mob to translation service.
Translation service says apply power id 123 to mob id 1234 at location 12, 32. Last known mob hp 1223.
Server parses message, looks up function for applying power to mob. Returns new mob hp and any other meta data needed.
Translation service takes meta data, applies it to coh specific data needed, and passes onto client.
Client proceeds as normal.

This is an abstraction error.  In this example, the server doesn't need to know specifics because its given the specifics from the translation layer.  But how does the translation layer know what they are?

Lets back up a step.  Imagine you're running the CoH client and you walk into a mission door.  That mission spawns a three critter spawn at a location thirty feet in front of you.  How does it know to do that?  There is no such information in the client files anywhere.  That information was in the server.  When you make the server, where does that information come from?  If you are recreating actual CoH missions, it ultimately comes from sources derived from the game itself; either someone documented that fact somewhere at some point in time, or someone has that data that was originally in the servers.  Either way, that's copyright material: the design on the mission.

But let's say we throw the mission content away.  Lets say we're running all new missions created by someone else.  But we still want to use CoH critters.  The mapserver has to spawn, say, three freak minions at that spot, because that's what the original, new mission data says to do.  The client doesn't know how to do that.  The client only knows how to spawn three entities that visually use freak minion graphical models.  They will *look* like freak minions, but strictly speaking they are just puppets.  The server knows about things like hit points and endurance and attributes and buff debuff stacks and powers.  The client's *files* have that information, but the client itself is completely ignorant of them.  So when the server spawns those three minions in its own data structures, how will it know what those critters hit points are, what their smashing resistances are, what powers are running on them?  It has to know, because its the thing that actually does the work of making things happen.

The only way I can see this working is if the "translation layers" are really full-fledged mapservers in their own right, capable of doing everything mapservers used to do.  Then, the only thing you'd need to pass around, in theory, are controls and synchronization data.  When a player does something on his or her client, that action information itself is sent to all other "translation layers" and executed in the same way using nothing but local data.  But while this might arguably dodge copyright issues, it does so at the expense of invoking hypothetical technology that to the best of my knowledge doesn't exist.  City of Heroes itself just didn't work in a way that would make this easy to do, as Codewalker has discovered in trying to make Paragon Chat.  In effect, your idea could be paraphrased into something like "make Paragon Chat local servers into full map servers, invent distributed synchronization technology, and presume no one ever tries to cheat the system."

The critical gloss-over is the "and synchronization data" part.  Its what I call a non-trivial problem to make that work given the way City of Heroes works.  City relied on a lot of things happening in very specific ways, within very specific latency windows, and presumed central synchronization.  There's no obvious way to simply synchronize a bunch of individual map servers to work in a reasonable manner that I'm aware of.  I've thought about what such a game architecture would require, and I don't think City was compatible with those requirements.

The reason why we normally presume central servers for combat is that if you really want to replicate how City used to work, its extremely difficult to do that without a central server arbitrating everything.  Its *possible* to envision distributed combat, and in fact I've directly speculated about that very thing in connection with Paragon Chat, but only in the sense of returning a shallow substitute for machinima or role play purposes.  Without a central arbiter of action, some copyright problems are lessened and the expense of having to invent technology that I don't think even exists in the form needed in this context.  You'd create a more difficult problem for yourself than literally recreating the City servers from scratch.  You'd be building something radically more advanced than that.

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #37 on: December 05, 2015, 12:43:58 AM »
This is an abstraction error.  In this example, the server doesn't need to know specifics because its given the specifics from the translation layer.  But how does the translation layer know what they are?

Lets back up a step.  Imagine you're running the CoH client and you walk into a mission door.  That mission spawns a three critter spawn at a location thirty feet in front of you.  How does it know to do that?  There is no such information in the client files anywhere.  That information was in the server.  When you make the server, where does that information come from?  If you are recreating actual CoH missions, it ultimately comes from sources derived from the game itself; either someone documented that fact somewhere at some point in time, or someone has that data that was originally in the servers.  Either way, that's copyright material: the design on the mission.

Yes and no. Really all you need for a mission is an array of xyz coords, and the ids of the mobs. Maybe some custom triggers on some maps. I'd imagine some sort of tool for either creating this or importing it from somewhere would be needed. As that data is serverside, it's likely lost. But on the other hand, it gives you the ability to procedurally generate maps with random mob placements, etc. It's implied all this data would be stored on the server.

But let's say we throw the mission content away.  Lets say we're running all new missions created by someone else.  But we still want to use CoH critters.  The mapserver has to spawn, say, three freak minions at that spot, because that's what the original, new mission data says to do.  The client doesn't know how to do that.  The client only knows how to spawn three entities that visually use freak minion graphical models.  They will *look* like freak minions, but strictly speaking they are just puppets.  The server knows about things like hit points and endurance and attributes and buff debuff stacks and powers.  The client's *files* have that information, but the client itself is completely ignorant of them.  So when the server spawns those three minions in its own data structures, how will it know what those critters hit points are, what their smashing resistances are, what powers are running on them?  It has to know, because its the thing that actually does the work of making things happen.

Moving the map file critter placements to the server would be necessary here, likely in some other format as detailed above. The client doesn't need to know really what's on the map. It should be told by the server. In fact, if you could patch in critter placements into the maps based on the server's data, that would be ideal. Again, I have no idea what limitations the engine had.

The meta data on the mobs can either be hard coded in (on the server). I think I hinted at that in the post. I.E. mob 321 has 1223 hp, gives 231 xp, has 534 end, and has power abilities 2,3,4,5, and uses critter ai 2 (in some xml/json file somewhere). That or passed in from the translation service in a generic form. The latter isn't optimal as it opens gateways of cheating. Farming mobs of 1hp 99999 xp bosses, anyone?

The role of the server in this case is just to take the generic form of a mob by id, mathematically having the bare meta data necessary for mapserver information, and to relay this back to the translation layers which presents this along with other local data in a format we know and love.

The only way I can see this working is if the "translation layers" are really full-fledged mapservers in their own right, capable of doing everything mapservers used to do.  Then, the only thing you'd need to pass around, in theory, are controls and synchronization data.  When a player does something on his or her client, that action information itself is sent to all other "translation layers" and executed in the same way using nothing but local data.  But while this might arguably dodge copyright issues, it does so at the expense of invoking hypothetical technology that to the best of my knowledge doesn't exist.  City of Heroes itself just didn't work in a way that would make this easy to do, as Codewalker has discovered in trying to make Paragon Chat.  In effect, your idea could be paraphrased into something like "make Paragon Chat local servers into full map servers, invent distributed synchronization technology, and presume no one ever tries to cheat the system."

The translation layers aren't responsible for battle logic. If you incorporate that into those layers, they could possibly be different for each and every player, which leads to sync issues, and all kinds of terrible things.

The critical gloss-over is the "and synchronization data" part.  Its what I call a non-trivial problem to make that work given the way City of Heroes works.  City relied on a lot of things happening in very specific ways, within very specific latency windows, and presumed central synchronization.  There's no obvious way to simply synchronize a bunch of individual map servers to work in a reasonable manner that I'm aware of.  I've thought about what such a game architecture would require, and I don't think City was compatible with those requirements.

In no way did I mean to imply any of this is trivial or easy to implement. We're taking an already hard piece of code and making it harder by abstracting out copyrighted and trademarked items. Performance goals, and other things associated with this would be major roadblocks. I recall CoH always having a 200ms+ latency even on cable internet. I wondered why for years, but assumed it was sync latencies, processing times, etc.

The reason why we normally presume central servers for combat is that if you really want to replicate how City used to work, its extremely difficult to do that without a central server arbitrating everything.  Its *possible* to envision distributed combat, and in fact I've directly speculated about that very thing in connection with Paragon Chat, but only in the sense of returning a shallow substitute for machinima or role play purposes.  Without a central arbiter of action, some copyright problems are lessened and the expense of having to invent technology that I don't think even exists in the form needed in this context.  You'd create a more difficult problem for yourself than literally recreating the City servers from scratch.  You'd be building something radically more advanced than that.

A central server (or group of them!) really should be responsible for its map instance, or predefined section of one. I don't know exactly which all pieces were on the client, server, or where so it's hard to give you precise details, but it should be possible. I mean what do you really need to implement combat logic? Timing (syncs.. thinking of hami raid where it had to slow down to calc everything), meta data (current hp, buffs, debuffs) , hard coded data (max hp, xp rewards, critter type, powers), critter ai, combat functions (power-damage calculation), location information (range information, movement updates) , and finally the local presentation layer of current data.

When you think of the data involved in this, most of it is pure numbers. Only the final portion contains copyrighted pieces. As we don't have the server side files to begin with, most of what would have to happen to implement this would be basically creating it from scratch. I mean at this level you could plausibly turn CoH into a fast paced MUD. That might be a stretch but I hope you get what I mean.

IMO the best way to play with this would be in paragon chat with the AE missions. They're small enough that it would make implementing anything there with custom mobs pretty much guaranteed not to infringe on copyrights. It wouldn't shock me if CW was already doing this, actually. If I didn't have a 9-6 job I would be all over this.

Edit: I will admit one thing I don't have an answer for. In order to create mob placements you need to be able to parse maps. Specifically boundaries which are accessible. The maps are copyrighted, I'd imagine. Parsing those serverside would probably be infringement. The only thing I can think of is extracting bounds information from map files and leaving them hard coded in a xml file. There probably is a better solution for this. I just don't have it.
« Last Edit: December 05, 2015, 12:53:45 AM by Golden Aurora »

Arcana

  • Sultaness of Stats
  • Elite Boss
  • *****
  • Posts: 3,672
Re: "Abandoned Games" exemption?
« Reply #38 on: December 05, 2015, 04:06:51 AM »
When you think of the data involved in this, most of it is pure numbers. Only the final portion contains copyrighted pieces.

Full stop.  I get the impression here that you think tables of numbers, because they are somehow "just numbers" cannot be copyrighted.  That's not true.  City used tables for things like critter health (because base critter health varied by intrinsic combat level).  Those tables can be copyrighted.  Damage was calculated from damage tables, also protected by copyright.  You can't say that since NCSoft can't copyright the number 1201, they can't assert copyright over a set of those numbers collectively.  They can.  Aggregates can be protected by copyright when the individual pieces can't be.  You can't copyright individual musical notes, but you can copyright a collection of them that forms a specific song.

You can't just say "right now, at this microsecond, my software is just using this one number, and this one number can't be copyrighted, so that's fine.  And then in the next microsecond I'm just using that number, and that number can't be copyrighted, so that's also fine, and just keep going.  Collectively, you're using the Boss_Grunt HitPoint attribute table, and the combat modifier table, and the power bolt attribmod data, and collectively that's copyright violation.

You also can't make your pseudo-server say something like "figure out whatever the damage is supposed to be when entity XYZ uses whatever power is listed first in its list of attack powers and then subtract that from whatever its max health is and then update the screen" because the client can't do that, and won't understand that.  Something has to do all those calculations for it, and that thing whatever it is must know the real numbers, and not proxies for those numbers.  Whatever that thing is, its using copyrighted content.

Quote
The meta data on the mobs can either be hard coded in (on the server). I think I hinted at that in the post. I.E. mob 321 has 1223 hp, gives 231 xp, has 534 end, and has power abilities 2,3,4,5, and uses critter ai 2 (in some xml/json file somewhere). That or passed in from the translation service in a generic form. The latter isn't optimal as it opens gateways of cheating. Farming mobs of 1hp 99999 xp bosses, anyone?

I should also point out for completeness sake that this is not how City of Heroes works.  Mobs aren't hardcoded with health, because then they wouldn't level scale.  They are defined by critter type, and the game contained tables that said for that type, at this level, health should be this value.  If you don't actually match how City worked, then its really not a City clone anymore.  If you're willing to diverge from how City worked, it might be simpler to avoid copyright problems by just making up your own mobs at that point.

Its the complexity of how City determined what numbers a mob had through a set of dynamic calculations that makes hardcoding tricks like this not work for City.  City was highly table-driven, and its really those tables that define a lot of what we saw in combat NPCs.  And since those tables represent unique design decisions for City of Heroes, they are obviously entitled to copyright protection.

I also don't think you are fully aware of how many things the game kept track of, and what a server needed to know about a critter.  Its a very large amount of information, and extremely difficult to disguise as "just a few numbers you can't copyright."  In order for a central mapserver to know what happens when entity A uses power P on entity B, its unavoidable that the mapserver knows all of those numbers for entity A and entity B and power P, along with all of its attribmods X, Y, and Z.  It can't "know" those things unless it contains the copyright data.  I don't see how you can dodge that.  The thing doing the calculations must know the numbers.  The numbers themselves are the copyright protected data that gets you into trouble.

Golden Aurora

  • Boss
  • ****
  • Posts: 108
Re: "Abandoned Games" exemption?
« Reply #39 on: December 05, 2015, 04:57:31 AM »
I'll plead ignorance of copyright law on that particular nuance. I had no idea something that generic was considered protected. In that case, I don't see a workable solution without violating the law.

As far as the data driven nature of the game I knew statistics scaled on level but there were some hard coded tables with values from which things derived. Whether that is in a table, script, or programmed in really doesn't matter so much. Some are just easier to maintain and access.

http://paragonwiki.com/wiki/Hit_Points

See the how to calculate section for an example of what I meant.

Damn, thought I had a good idea too.