Skip to content

Server Requirements

Hello folks, been poking around seeing all the new NWN:EE things, and how far CEP & NWNX have come.

Made a module years back, but never had the resources to really host it. So looking at how possible it to harvest some of the old work for a new implementation.

Currently looking into possibly running a dedicated PW type server for 250 players sometime in mid to late 2020. It would run EE, CEP265, & NWNXEE.

In the past, band width was estimated at 32K per player, which calls for 8-9Mbit for the server pipe. If this is still the case, then great!

What I am really stuck on is the CPU & Memory for such a server. More is always better, but there is a minimum required for acceptable play, which is mostly what is needed.

Any pointers on getting back up to speed on the useful data sets would be most welcome! Currently looking at a potential of some 1200 hours of work for a launch. Almost like dusting off an old book you never finished. Would be neat to share my game with you all.

Best,

A divine clubber who couldn't use a club.

Comments

  • FreshLemonBunFreshLemonBun Member Posts: 909
    Well the first question should be where are you planning to get the 250 concurrent players from?

    A huge success would be to launch a new PW and get around 20 peak concurrent players every night, but I don't think anyone is reaching 250 players. The few that have peaked high do so during a sale and then drop to about half during regular months.

    I think they just switched to 64-bit but I haven't heard that really impacting anything yet, if I remember correctly it should allow more memory usage, but again I haven't heard anything yet. Even so it would probably mainly affect the resource cap which you probably wont reach for a while anyway.

    As for NWNXEE I don't think it has a proper Windows release yet if ever, and it doesn't support all key plugins that NWNX2 supported unless they changed that recently. CEP has had incremental updates but still uses old assets from the mid 00s, while filling some 2das up more than some people prefer. It's all still pretty basic stuff so far.

    My advice would be to start small, don't spend a lot of money, and just see how things go from there.
  • SherincallSherincall Member Posts: 387
    nwserver+nwnx will run on a (x86_64) toaster. You'll be hard pressed to find something that's weak enough to actually have issues. Start as cheap as possible (there's $2.5/mo VMs you can get from Hetzner that do the job), and you can scale up when it comes to that.
    As for NWNXEE I don't think it has a proper Windows release yet if ever, and it doesn't support all key plugins that NWNX2 supported unless they changed that recently.

    Windows support for NWNXEE is only through WSL/WSL2, or Docker (or VM). It will not support the windows nwserver.exe.

    It's not a 1:1 mapping to nwnx2 features, but it should support all the meaningful features nwnx2 had - if it is missing a particular obscure function, it's probably because no one actually used it.
  • FreshLemonBunFreshLemonBun Member Posts: 909
    It depends on what you mean by meaningful, standard features sure, database features sure. As far as I remember you still don't have or wont implement useful tools such as leto and resman to name probably the two more popular missing features. My comment was more a response to how far NWNX-like functionality has come, and I think it's fair to say NWNXEE doesn't push the cutting edge of what is possible if it doesn't support all of what was possible. You're free to provide implementations or alternatives though, it would do the community a service. I would remind you there are still servers totaling about 200 or more concurrent players during peak hours that have not yet adopted NWNEE due to issues porting some of those features nobody uses. So get it done or just accept that you don't provide it, one or the other.

    That said discussions about why things are meaningful or why they're not meaningful is a personal opinion and not useful to anyone. Discussing what is there and what isn't there is a matter of fact.

    For windows yeah the solution is not really good, while it's "possible" in windows, a linux server is preferred for NWNXEE which is something people should be aware of when setting up their server.
  • SherincallSherincall Member Posts: 387
    Oh, sorry, I really wasn't trying to diss any missing feature as "non-meaningful". I am honestly curious if there are features missing that are preventing people from migrating; if so, please request them.

    I looked at the list of actual NWNX requests that are still pending:

    https://github.com/nwnxee/unified/issues?q=is:open+is:issue+label:"RFE:+plugin"

    There is only two things there that are supported by nwnx2:
    - Support for reading/writing INI files. This was actually a paid request, but I think the person just decided to change their data into another format which was supported.
    - Ability to sync the player list across multiple servers. This is also a somewhat tricky territory as it allows faking of player numbers, which would be detrimental to the entire ecosystem. There is however a WIP there you could use.

    However, NWNX:EE is not a port of nwnx2, and the migration is not meant to be plug and play. Many of the nwnx2 approaches were, let's say suboptimal, and we didn't want to repeat those mistakes. It's very far from perfect now, but it's miles ahead of what was there previously.
    The price to pay for that however is that you'll need to change some of your code. Sometimes it's a simple rename of a function, or changing the argument order, but sometimes it's more.

    In case of LetoScript, rather than passing a string explaining the operations to make, you'd just use nwscript to do it directly (e.g. ModifyRawAbilityScore(oPC, ABILITY_STR, +2)). I do believe you can achieve the exact same result (even without relogging); again, if there's a feature missing and you need it, request it.

    As for nwnx_resman, what it did is now part of the base game's "development/" folder. NWNX:EE has some minor extensions here, but mostly it's not needed.


    From what I gathered from speaking with those 1.69 servers, the reasons they won't migrate are one of:
    1) They're using clientside extenders (nwncx, sinfarx) which don't work with EE
    2) They don't have the time to do nwscript changes required to work with nwnx:ee, but all the features they need are supported.
    3) They are using custom private NWNX plugins and their developer is not around anymore to port. They don't have the skills necessary to port themselves, but think these give them an edge and don't want to request the feature publicly so others could use it as well.


    Again, sorry if the "non-meaningful" came across as hostile. What I meant is that there were features in nwnx2 that, as far as anyone could see, were never used. Such as, for example:
    /* Sleep for the given number of microseconds. This will block the whole nwserver process. */
    void USleep (int usec);
    
    There were a couple of times when it was decided the original feature was too dangerous (e.g. ability of nwserver to invoke any process on the system), and we instead looked at the problems the feature was meant to solve and added specialized stuff there (e.g. function to delete a .bic file, instead of to delete any file on the system). This is one of the things nwnx2 did extremely poorly, but I don't want to go into detail as it would reveal glaring vulnerabilities on all 1.69 servers.


    As for Windows support, yes, it is entirely recommended to host your module on Linux, for a variety of reasons. However, if you cannot do it, or if you want a local test server while developing, WSL/WSL2 work great. It requires win10, and it requires you to use the command line instead of the server GUI, but many people are using them successfully.
  • FreshLemonBunFreshLemonBun Member Posts: 909
    Apology accepted, it did come off as a little dismissive but I understand that wasn't your intention. I will note however that much of the discussion and call for requests came very early on and was conducted in the threads. I believe Liareth and several others also participated in those discussions. That there is a request form is something that has probably escaped a lot of people's attention as requests were made within those threads.

    I do understand that NWNXEE is not NWNX2 and I also think that is a distinction that escapes a lot of people, and should know it's not an upgrade of NWNX2 but a re-envisioning. I personally do think that NWNXEE should provide implementations or direct alternatives to what was available for NWNX2. For other features now in NWNEE they're not fully extendable as far as I know, for example the consensus seems to be you cannot load brand new areas into a server without a restart and new module. That obviously would have pretty useful applications, so correct me if such things are available. As you mentioned things like cross-server communication i.e. shared lists is useful to have for an integrated experience despite concerns.

    As for those servers primarily affected I would suggest reaching out to them again because they all seem keen to migrate but don't seem to have the solutions to migrating their dependencies. Even Sinfar, although their client side features are something for Beamdog to implement, they have extensive server side functionality as well which is pretty impressive to say the least. According to the forums the folks at Higher Ground view their custom resman implementation as the biggest hurdle, it seems no alternative is suitable. I don't entirely remember what Avlis/CoPaP wanted besides being adamant that they rely on vaultster. Others have issues with windows support and so on.

    Even if hypothetically I attempted to replace one of those technically advanced servers with a newly built server for NWNEE with NWNXEE then I would not feel confident that I have all the tools I would need to do so.

    While this is an important discussion I would like to refrain from getting too far off-topic and into the details. This was simply a statement of fact that not all things are present and NWNXEE hasn't provided (as far as I know) much beyond the basic things NWNX2 had. For returning modders it's useful to understand that everything they could expect might not be available.
  • SherincallSherincall Member Posts: 387
    Agreed that this is getting too offtopic, so I won't digress further, except:

    If you depend on a nwnx2 feature not available in nwnx:ee to migrate, please reach out via github issues or discord (or even PM on these forums) and we'll get it settled.


    Also, for the sake of completeness, I'll address the features you mentioned:
    - Dynamically loading areas is possible, very similar to how it was done in nwnx2/1.69: put your areas in one of the special locations, and use nwscript to instance and destroy them as needed. No module restart needed.
    - Vaultster as such is not supported. Today there are several better ways to handle this that were not generally available in 2004 when the plugin was designed. It is not hard to replicate vaultster behavior with what is available though.
    - I'm not aware of what HG extensions to nwnx_resman are, but nwnx:ee supports everything that was in the nwnx2 resman, and several new features such as iterating resources using regex filters, or dynamically writing the resources back to disk (e.g. load a script/creature, modify it with scripts, then save it back so it overrides the original version)
Sign In or Register to comment.