Archive for the 'NWNX' Category

NWNX 1.08 final(ly) released

July 14th, 2007 by papillon

1.08 stayed in beta for quite a while, before getting officially released today. I wanted to make sure that there are really no known bugs before I call it “final”.

The new functions Obsidian Entertainment added specifically for NWNX turned out to be the best thing after sliced bread. They make NWNX so much cleaner and faster, it makes me want to get more of them ;-). So this is what I am trying to get from them next, specifically, more functions for working with GFF encoded object data right from the server’s memory.

Apart from that, new plugins are beeing released by the community, e.g. a new database adaptor for SQL Server and an adaption of the Profiler plugin to NWNX4, to name a few.

The nwnx.org website received much need attention as well. Parts of the download section have been rearranged, and most noteably, the documentation for NWNX4 got a complete rewrite. I feel NWNX4 as a whole (the program, the docs, the website, and the forums) has now attained a state that I feel comfortable with.

Current state of affairs

June 9th, 2007 by papillon

Long time no update, but of course I haven’t been sitting on my lazy ass since January :-).

Finally, Obsidian Entertainment included special functions for NWNX, that improve the interface between NWN2 and NWNX4 considerably ! The new NWNX4 is not only faster, it is also 100% safe from any future modifications that might ever be done to NWN2, since the dependency on SetLocalString is now gone.

I am currently working on closing some open bugs and getting an installer for 1.08 done.

NWNX4 gone beta!

January 27th, 2007 by papillon

NWNX4 is improving and stabilizing. I now consider it beta quality, good and feature complete enough to run live servers. The GUI that was released today brings NWNX4 up to par with its predecessor, and with the changes that have been made under the hood, clearly surpases it in certain areas.

The next task is to improve usability. The installation program is one of the top priority goals now, and work will also be done on the whole “new user experience”. The goal is to get new users up and running within 5 minutes of first hearing about NWNX.

Development update 27.01.2007: Long time no update, but NWNX4 improved even more !

Prototype 1.07 (Version 4.0.0.7) is available.

- Introducing NWNX4 GUI! You can now use a graphical user interface to control your server process.
- Added NWNX demo modules. Thanks go to Grinning Fool for providing them
- New INI file option for MySQL and SQLite plugins “Log level parameter”, which controls the amount of information that is written to the log files.
- MySQL and SQLite plugins: If a SELECT statement fails because of an SQL error, the resultset from an earlier query is deleted.
- Updated SQLite library to most recent version 3.3.11
- Fixed a nasty bug in the SQLite plugin that would cause it to stop returning data after an invalid SQL statement (SQL Error) was executed.
- Fixed a a bug that caused the SQLEncodeSpecialCharacters function to return bogus data every now and then. The DB plugins now use a private, static buffer for encoding special characters.
- Shortened string for persistent location storage. Locations can now be stored in less than 128 characters, which is the default column size that NWNX and sql_include assume in general.

NWNX4 GUI

December 17th, 2006 by papillon

After playing around with wxWidgets and trying out some ideas on a service handling interface, I decided to first do a quick solution that resembles the old NWNX2 GUI and supports only the interactive mode. That way, there is something out sooner, and I have more time to decide what kind of interface I really want for NWNX4.

To this end, I refactored parts of the controller source into a class, which can be used by the command line interface and the new GUI program alike.

NWNX4 development

December 10th, 2006 by papillon

The plugins and the controller program slowly loose their alpha-quality and are about to enter the beta phase. What is now needed for a first beta release is a graphical interface.

A break from working at the more low-level stuff will be nice. Yesterday, I started working on the GUI stuff, which will allow the creation and controlling of NWNX windows services. The design and functionality will somewhat resemble the MySQL Administration program, which has a clean interface and looks good, IMHO.

Development update

November 18th, 2006 by papillon

NWNX4 is making good progress !

As of today, there are two types of database plugins (SQLite and MySQL), and a nifty Timer plugin for accurate performance measures. There are lots of huge and small improvements everywhere. I am really exited about how nicely NWNX4 develops.

I’ve been through 4 prototypes now, each one adding a bit more functionality, with the last one quite a lot (MySQL support for example).

Linking against the mysql client library (which can be installed optionally with the server) became quite an adventure today. MySQL AB seems to use Visual C++ 2003, while I use the 2005 version. This leads to all kinds of nasty problems, effectively, you can not use their binary static library. I had to recompile it on 2005 to make it work. The upside is: MySQL versions 4.1 and 5.0 are equally supported by a single plugin !

These libs are needed for NWNX4:

mysqlclient.lib
taocrypt.lib
yassl.lib
zlib.lib

You can just open the .sln file in the windows source package, let VS 2005 convert it, and then compile the mysqclient project. Be sure to use the correct configuration! “classic nt” worked for me, while the default “authent” results in a library that complains about the server beeing not the (commercial) enterprise one. Oh well.

Development update

November 3rd, 2006 by papillon

I haven’t received my copy of NWN2 yet, so right now it is difficult to set a release date for the prototype (i.e. alpha) version. I think it is going to be in the next few days. It will not be a fully developed version with all the bells and whistles – but a functional prototype without a shiny GUI in the first few weeks.

The first database plugin (SQLite) is done and seems to work fine, although I did not get a chance to fully test it. Right after the first release, the plan is to continue work on the plugin interface, and after that is done, move on to the other plugins like SQL2005, MySQL, and so on. I plan to outsource some of those plugins, since I will not be able to do them all on my own.

Development update

October 7th, 2006 by papillon

I hit a small bump in the road today: The NWNX Controller can not pass information to the NWNX Hook using the nwserver command line. It (the server) just does not like unknown parameters and in turn fails to load the module (sic!).

I was planning to implement IPC (inter process communication) between the GUI and the Controller sometime later, but had to start on a prototype version between the Controller and the Hook today. A bit more complex than I would like it to be, but it works. A way to communicate between the Controller and the Hook was missing in NWNX2 anyway, so I am glad this is finally done.

Development update

October 3rd, 2006 by papillon

The new plugin architecture is done. While still resembling the old one, the interface is a bit simpler to understand. On the feature side, it is now possible for plugins to provide a “function class”, independent of it’s DLL filename.

That means that e.g. several database plugins (xp_sqlite.dll, xp_mysql.dll, and xp_sqlserver.dll) can share the same function class “sql” and register it with NWNX. On the other side, a script always calls a function based on it’s function class, no matter what the underlying plugin is named, meaning that a request for a “sql” type plugin is routed to one of the installed plugins that provides the “sql” class.

A simple change, but one that provides much better flexibility than the old, rather monolithic, approach.

SetLocalString hooked

October 1st, 2006 by papillon

The hook of SetLocalString in the NWN2 dedicated server is done!

I did some work on the logging and command line parsing functions, as well as laying out parts of the new plugin structure. Basic grunt work on which I plan to build on.