Author Topic: Networked Servers - Large Community  (Read 1898 times)

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« on: October 29, 2012, 12:31:03 pm »


               I've been toying around with this idea for while now, just wanted to put it out there.


Yes - We have vaultster, and other means to achieve shared ServerVaults, and to facilitate portalling from one server to another.

One of the major limitations of this is
* The Player/Character of one server may be completely overpowered or underpowered for another server.

As result, if a character comes into your server from another server, they can bring all sorts of things with them, which can destroy balance, and maybe even economys if you are that rigid on gameplay systems.


So, the idea I had was this:

A Community Driven Space Station Server

Essentially a community webSite - for instance nwnconnections.com  were to host this space station server.
Servers redirect their vaultster to this server - so everyone goes here.

Servers who have an account at nwnconnections.com etc
Can customize rule-sets that define what players are allowed in, level caps, maximum item strength, disallowed feats, etc

These rule sets are all stored in a Database that is used by the Space Station.
The player is then able via conversation, to cycle through each of the servers in the list.
He can then attempt to enter the server from the conversation.
Before he gets there however, nwnx_areas plugin, would spawn a temporary customs area for that player.
The player has chests etc that he can drop items into (items that he isnt allowed to take on the plane/shuttle)
And then he can try to enter the server via clicking on the door or portal.

If he passes all the checks, imposed by the ruleset for that server, he portals to the destination server.
If he fails - he is returned to the room/never leaves the room, and has to go back and customize his inventory/ability scores to make himself allowable on the destination server.


Rulesets imposed could include (Customized by the PW Owner that he is travelling to)
(an Example ruleset)
No item of greater worth than 5000000 based on Bioware Pricing
No Gold on Person more than 250000
Remove Flat Out Base Ability Score Edits, and allow only Level Stats.
No more than 4 Ability Gains per Level
No More than 4 Skill Points per Level
Remove all Feats not present in Level Stats.
Remove Specified Feats (eg Playertools etc)
No Plot Items
No Immortal Flags on Self
No Plog Flags  on Self
Level Cap etc

Once he passes this, he is then Vaultstered to the destination server.
And the Destination Server admin, is reasonably assured that the Space Station, acted like a quaranteen/customs check area, which ensured that the over powered players from other servers, dont get onto his server, with their overpowered gear.
Instead, they have to get the 'immunizations' etc, to enter.

* Immunizations being the euphanism for 'Character Edits'  required to enter the target server.
               
               

               
            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #1 on: October 29, 2012, 04:50:11 pm »


               <caging for a...>

Right there with ya, big B!

That is what the Nexus was supposed to be all about, a central, neutral server for meet-up and transport to specific worlds, with "translators" that worked based on which server vault they were coming from and which server vault they were going to (with memory, so they are restored when back-tracking). Er, the *original* Neverwinter Nexus...

Was talking with KCoffee yesterday, in fact and have started on a Hypermodule™ for that very purpose ;-)

(Also, see thread on using GPG to validate characters...)

<...name badge>
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #2 on: October 29, 2012, 05:09:51 pm »


               I have a second Dedicated Server (less resources than my main)
I am gonna give this a try.

At first, its just gonna be a Single Area Module/Server, no need for hak's / CEP etc

I will try it with my own server.

Eg - Find a way of specifying details rulesets in a standardized way that can then apply the appropriate character edits to the inbound player.

At the very least - It will generate more traffic to my main server. Lol
               
               

               
            

Legacy_virusman

  • Sr. Member
  • ****
  • Posts: 448
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #3 on: October 30, 2012, 09:53:12 am »


               What happens if a high-level high-magic character enters the hub and tries to play on a low-level low-magic server?
What happens when he comes back to the hub? Is it going to be the original high-level character or deleveled one? That would be two different characters already.
How changes from one character version would apply to the other one?
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #4 on: October 30, 2012, 10:32:48 am »


               The way I envision it, and the system is far from perfect - I'll admit.

Im thinking that for every server that the player travels 'From' a stored copy of them can be stored in a database.
If they attempt to return to that Server via the hub, another customs checkpoint is needed to ensure they dont take anything they arent meant to into the server.
Its essentially a case of the server admin needs to make sure that the ruleset they define, allows people to exit their server, and then return again with no changes required to their character.

In the example you are describing,
High Magic, would get de-leveled/de-magic'd to get into a low magic server.

If they were returning, to the high magic server, I would say they have 2 choices.

1. Return as Low Magic
2. Start a Merge Process

Merge could involve
(First - another database backup of the player, this time - coming FROM the low magic server)  
1. Put items you want to retain, into a chest.
2. Spawn a copy of the player from database. (the high magic version)
3. Give the items to the npc copy.
4. Optionally copy some ability scores/skills/feats to the NPC (If they are allowed by the destination server)
5. When the merge is done, nwnx possess the npc
6. Export Character - to make the Bic in servervault the npc' bic

Do vaultster, to transfer the merged Bic to the destination server. (assuming the ruleset gave the character the green light)


Its not going to be a simple process - no disagreement there.
To be strictly honest, the safest thing for servers who that participate in a system like to do, would to define RuleSets that make it so that the player who does transition in, is slightly weaker than the server average.
               
               

               
            

Legacy_Knight_Shield

  • Hero Member
  • *****
  • Posts: 812
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #5 on: October 30, 2012, 02:22:02 pm »


               If im hearing you correctly.PC wll login to the module then choose where they want to go.

Q:I like the idea ,can PW put a merchant/npc to avertise their world?
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #6 on: October 30, 2012, 02:51:18 pm »


               Yeah, Essentially its going to be programaticly advertising based on a database entry.

Eg: People who subscribe to a webSite eg: neverwinterconnections.com or something like that
Could opt in to have their server details shown on 'The Hub'

Then, for every server that is in the database & online, an area is generated: Lobby's etc
The Merchants inside those areas will have conversations that use Chat Tokens (SetCustomToken()) etc - to display a blurb about the server.
There will also be a portal, that allows the player to travel to the Customs Area (if required) or directly to the Server.

Imagine it like a Space Station, or an Airport.
Lots of Terminals


At the very least - it would be a Portal to an infinite amount of servers.
At the most - it could use Vaultster and Advanced scripting to legitamize/convert characters from one server to make them acceptable in another server.
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #7 on: October 30, 2012, 04:38:02 pm »


               I just had an idea.
My server is setup to use C# Code via nwnx plugins.

I happen to have this function, that can query servers, for their status and descriptions.

Im thinking I can setup the Hub server, so players who want to add their server to the available server list, could literally just speak the server IP Address and port, and then this code would go and get all the relevant info from the remote server, and then use it to generate the necessary info to create lobbys etc for each server.
I will give it a test tonight.
I am imagining a system where the player speaks something like
Server:90.22.121.122:5121
The system queries it (should get the data back within 2 seconds, or timeout - it is blocking, so it would freeze the Hub Server for that duration).

The info returned would be a long string containing the
Server Name,
Module Name,
Level Restrictions,
Item Level Restriction Enabled etc,
Password Required,
Player Population etc
as well as the Short Description that comes from the Desc.txt file


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace NwnxAssembly
{
    public class ServerStatusServices
    {
        public static string CheckStatus(string sIP, string sPort)
        {

            var timeToWait = TimeSpan.FromSeconds(2);

            var udpClient = new UdpClient(sIP, Convert.ToInt32(sPort));
            byte[] sendBytes = new byte[] { 0xFE, 0xFD, 0x00, 0xE0, 0xEB, 0x2D, 0x0E, 0x14, 0x01, 0x0B, 0x01, 0x05, 0x08, 0x0A, 0x33, 0x34, 0x35, 0x13, 0x04, 0x36, 0x37, 0x38, 0x39, 0x14, 0x3A, 0x3B, 0x3C, 0x3D, 0x00, 0x00 };
            udpClient.Send(sendBytes, sendBytes.Length);

            var asyncResult = udpClient.BeginReceive(null, null);
            asyncResult.AsyncWaitHandle.WaitOne(timeToWait);
            try
            {
                IPEndPoint remoteEP = null;
                byte[] receivedData = udpClient.EndReceive(asyncResult, ref remoteEP);
                return Encoding.ASCII.GetString(receivedData);
                // EndReceive worked and we have received data and remote endpoint
            }
            catch (Exception ex)
            {
                // EndReceive failed and we ended up here
                return "BAD_RESPONSE";
            }
            return "BAD_RESPONSE";

        }

    }
}

               
               

               
            

Legacy_Lazarus Magni

  • Hero Member
  • *****
  • Posts: 1837
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #8 on: October 30, 2012, 06:57:53 pm »


               This is definitely an interesting idea. I quite like the concept of a NWN 1 connected universe. It would be incredibly complicated though, and quite a few issues would have to be worked out.

As far as the issue of bic files going back and forth between servers, this could be simplified by having it only be one way. What I mean is a player could go from their home server to an new one, undergo the filtering process for the new server, but once that bic file is established on the new server’s vault it would not be able to go back to the home server in it’s altered state.

This would eliminate the need to refilter/rebuild toons, and have it only occur once. It would not be vaultster then, but this might be a good thing. It would preserve the integrity of the PC on their home servers (e.g.  going to a new server with a much faster xp rate and then coming back to the home server at a much higher lvl.)

It would be more like plane walking, rather than a shared universe, where going from one plane to another doesn’t affect your character on your original plane.

To have a truly shared universe, I think all servers would have to be using a universal rule set (xp rate, item guidelines, and possibly even core scripts.)

Something like this might also require having multiple versions. For example having low, medium, and high magic versions, or even broken down further to high magic low xp rate, high magic high xp rate, ect…

The PWs would have to come to some sort of agreement about what constituted these things.

A fascinating concept though.
               
               

               


                     Modifié par Lazarus Magni, 30 octobre 2012 - 06:59 .
                     
                  


            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #9 on: October 30, 2012, 10:36:55 pm »


               <fishing for...>

Lazarus Magni wrote...
This is definitely an interesting idea. I quite like the concept of a NWN 1 connected universe. It would be incredibly complicated though, and quite a few issues would have to be worked out.

But worth it, I think. *Very* worth it.

As far as the issue of bic files going back and forth between servers, this could be simplified by having it only be one way. What I mean is a player could go from their home server to an new one, undergo the filtering process for the new server, but once that bic file is established on the new server’s vault it would not be able to go back to the home server in it’s altered state.

This, I think, would be a good *setting* between servers. They may choose one way or the other, but it wouldn't need to be either/or.

...
To have a truly shared universe, I think all servers would have to be using a universal rule set (xp rate, item guidelines, and possibly even core scripts.)

Something like this might also require having multiple versions. For
example having low, medium, and high magic versions, or even broken down
further to high magic low xp rate, high magic high xp rate, ect…

The PWs would have to come to some sort of agreement about what constituted these things.

A fascinating concept though.

I think a better approach is to establish "translators" between server vault pairs.  If all the characters on a star of servers use the same server vault/HR set, then no translation needed.  Between  two related, but slightly different rule sets- minimal translation. Between wildly different servers (think D20 vs Mothra, er, Arnheim) - Heavy custom translator.

There is the trust issue involved, also. If I was to link Amethyst with Arnheim, I'd probably be willing to accept the characters with minimal translation because I know his world has similar xp/magic/whatnot values and I trust characters coming from there.

Were an unknown server to look for a link, I'd have the strictest translator involved to be sure the L33t folk were pared down.

Finally, natives of Amethyst, players who are regulars and built their characters in my server vault family, would have certain very palpable advantages over world-walker.  The idea being to open up the migration of players among servers, but to still encourage your natives to stay and play.

I am *really* behind this initiative, in case anyone missed it :-)

<...a babelfish>
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #10 on: October 30, 2012, 11:09:28 pm »


               In case anyone is interested
I've made good progress tonight.

I have a persistent server up already, called 'The Hub:Online Portal'

Its currently displaying the details for my own PW, and players can cycle through a conversation, and choose which server to portal to.

Granted - it doesnt do character transfers yet.
One hurdle at a time.


I am in the process of developing the mechanism allowing people to add their own servers via ingame conversation.

Note - That code I added above works a charm, its able to tell immediately whether the server is up or down.
Granted - my server that I am testing it with, is next door to it, so might not be an adequette test.
Anyone wana beta test?

Hub IP is  31.132.2.125:5121
               
               

               
            

Legacy_henesua

  • Hero Member
  • *****
  • Posts: 6519
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #11 on: October 30, 2012, 11:18:11 pm »


                I wonder how the translation would work for dramatically different sets of CC. As you know and mention above, Rolo, I have made many changes to character building that can make a character built for Arnheim fundamentally different than a standard one. So... it seems to me that I'd probably have to collaborate with a specific server developer on a translator for characters moving from Arnheim to their server, and vice versa.

And I think for say a cleric entering Arnheim it could get very tricky. Do I allow them to pick a religion in the setting? Or do I enable my set of religions to expand and include theirs? Theoretically I could do the later. The former would require a merging of my "Welcome To Arnheim" character adjustment/building area with some NWNX and Leto magic. Unfortunately that is not presently in the cards as I don't have an intel based server. ...

and so anyway all that written merely to illustrate that translators would likely need to be specific for at least some worlds.

if teams worked in conjunction on this from the beginning however, the sky would be the limit. Way back in the months prior to release of NWN I tried to get some others to work with me on a similar idea (multiple modules built and served independently but linkable. Roger Zelazny's multiverse of Amber and Shadows was my inspiration ). Ondaderthad unfortunately destroyed that group to my great disappointment. Seeing this thread and the excitement here has piqued my own.
               
               

               


                     Modifié par henesua, 30 octobre 2012 - 11:18 .
                     
                  


            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #12 on: October 30, 2012, 11:48:16 pm »


               Thats where a sort of ruleset definition would need to be created.

Not gonna pretend that it can handle all scenarios or all servers.
Eg  - I have a server that has Gods that actually run around with Plot flag enabled - I bet those wouldnt want granted entry to other peoples servers.

As such - The Major, and most obvious things are the first things to tackle.

Server Admins could say
Allow/Disallow plot flag (most would disallow)
Max Character Level
Disallowed classes
Subraces
Feats
Skills
Ability Scores
Inventory

These are the major ones that would need to be processed.

The sneaky ones - would be things like Local Vars stored on the items as well.
Eg - Imagine SQL Injection attack, where instead of injecting bad sql, your actually putting specific variable values on your items, travelling to a server knowing that they have a system that would read and interpret those vars.

As such -I think Variables on items would prob be safer if they were deleted - this might reduce their value on certain servers. Who knows....

But guess it would be the receiving server admins choice if he wanted to accept them or not.
               
               

               
            

Legacy_henesua

  • Hero Member
  • *****
  • Posts: 6519
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #13 on: October 31, 2012, 12:12:09 am »


               Thats a start, and will work for servers that have similar set ups for the character files and related CC. Perhaps a generic solution could be put forward for those situations in which case the receiving server admin presents a ruleset that they wish to have passed prior to having any PCs sent to them.

I wonder if it is possible to have a verification process for this. Can the two servers talk to one another prior to sending a PC through the portal?
               
               

               
            

Baaleos

  • Administrator
  • Hero Member
  • *****
  • Posts: 1916
  • Karma: +0/-0
Networked Servers - Large Community
« Reply #14 on: October 31, 2012, 12:24:32 am »


               The WebService type setup I have - where I can actually call php webPages from inside the game, would be able to facilitate that sort of thing.

Eg:

The Hub calls its own PHP Page, which then calls the Server Owners PHP Page.
They can share data with eachother, and then the Hub php page would receive the output.

Here is a novel idea.
What about making it so that the php page actually downloads an ncs file from the destination server, which is then run on the player who is being translated/validated?

ncs Files are basically compiled Binary data files - they could be downloaded by the dotNet plugin I have for nwnx.
It downloads it to the externalsources directory - runs it  on the player, and then that way, the server admin gets the ability to customize entrants to his server the way he wants.
You might object to this idea - but lets face it - once the player enters that server admins server, the admin can do anything he wants to the bic file anyway - and since the script would only run on characters who were transitioning - no harm no foul.

Only thing though - is security - making sure that the Script doesnt have things like infinite loops, or GetFirstPC() calls etc
anything that would let the script access anything besides the player.


In other news -  I have got the data entry section done.
People can now enter the Hub server, and submit their servers to the database, which will then be displayed as travel destinations.