Skip to content

Toolset for nix users

elegoselegos Member Posts: 12
edited December 2017 in Tools & Plugin Developers
Hello my dear community, old and new players/fans/modders/[title here],

I read the discussions of people querying the developers to release a Linux (and possibly OSX?) Aurora Toolset, but the reply was, more or less, "it'd be too much code to be rewritten".

Well, I promise nothing, but I'm starting off a toolset of my own, written in go (https://golang.org/) which will have a GTK 3 graphical interface, making it compatible with Linux, OSX and possibly Windows, too!

The source code is, for now, closed source, but it will be released once the basic file read/write functionalities will be ready (I'm currently working on ERF reading, which is the very beginning).

It will be hard, it will be tought, but it will be very fun as a side project. Obviously when it will become opensource (I hope very soon!) I will accept any help from the community and, why not, maybe from the developers, too :smile:

GOAL OF THE PROJECT:
To create an alternative toolset for the Aurora engine (addressed to Neverwinter Nights)

MODULES TO DEVELOP
  • A library to read and write the Aurora file formats
  • A library to compile the nss files into ncs ones (Nwn Source Script -> compiled)
  • A GUI made out of GTK as similar as possible to the NWN Aurora Toolset*
  • An engine made in OpenGL to render things, like areas, characters, items, etc (this will be tought as I've never wrote 3d code yet!)
  • Integrate a navigation system to navigate into the OpenGL engine
  • Integrate a select, drop, move, etc system to select, place, rotate, delete, enter a contextual menu of the items placed in the OpenGL window
  • NWScript editor (embed one with highlighting and functions references?)
  • Dialog editor
  • Factions editor
  • (put here all the rest of the Toolset features)...
* to begin with. Additional development may be placed later to improve the user experience. One of the things I'd love to work with is a "NWScript-ES" featuring ecma-script 2015+ syntax (and features)... I need to study what ncs files look like and what are the limits imposed by the Aurora engine. Obviously this would break compatibility with the original Toolset, or at least it'd break the compilation without the alternative toolset.

I will keep you updated!

UPDATE 28/12/2017: here is the public repo => https://github.com/elegos/nwn-toolset-go
Post edited by elegos on

Comments

  • elegoselegos Member Posts: 12
    edited December 2017
    Hello Sherincall,

    thanks for the feedback, I really appreciate it :)

    As previously stated and as you pointed out, this has a multiple purposes:
    1. To understand how a game's files are managed (I've always wanted to get in touch with the game development, and NWN introduced me into the programming world for the very first time 15 years ago! And now I'm a professional programmer :smile: )
    2. As a (very big) side project
    3. To learn go, as my profession now requires to for some important parts of the product
    4. To share with the community a library (now) and a graphical tool (later) able to manipulate the game's files, whatever nature they are (and here is @niv 's tools, even if I've never heard of nim!)
    Honestly I think I passed more time in the editor than in the game, back in the NWN times, and this happened developing server emulators for various games - I just keep being attracted from the "under the hood" scene, rather than the game itself - weird, I know :D

    My hope now and here is not to be able to develop the thing all alone, or finish in an year, or to "ship" a product, not be cause I'm afraid I'm not going to finish it (I want to "finish" it step by step, not all at once, which is very unprobable), but because I believe in team-working with other people having the same passion, which is not that common.

    At this moment I'm having fun reading the GFF file format :)

    I'll release the source code (and continue developing it) once I'll finish reading and parsing the GFF file format with the relative tests :)

    As per the compiler, good catch on those two, I may embed them in the toolset obviously, rather than creating my own (even if I think it could be much of fun implementing one as a side-side project :p ). As the editor thoguh, I'd like to keep the toolset's philosophy to have "one toolset to make (almost) everything", giving the user to eventually switch to an executable of choice, creating a temporary script file for editing purposes.

    P.S.
    NWN is 15 years old and people still love it, I doubt it will go nowhere in the relatively close future :D
  • SherincallSherincall Member Posts: 387
    Great! Glad we're (mostly) on the same page.

    I already have a huge backlog, and I don't know Go, but I'm available as a second set of eyes, for what that's worth. :)

    Can't wait to see what you've got.
  • elegoselegos Member Posts: 12
    edited December 2017
    Hello there!

    I've just published the very early stage of the library :smile:

    You can find it here: https://github.com/elegos/nwn-toolset-go

    As you can see, the GFF file format doesn't have either the tests or the field/struct extractors. Why don't you take a look at the source code and try to make your first steps? :smile:

    P.S.
    Please read the README file :D
    Post edited by elegos on
  • elegoselegos Member Posts: 12
    Hello there!

    I've wrote a blog post about go error managing, related to the development of NWN Toolset go. Feel free to check it out :)http://giacomofurlan.name/2017/12/31/error-handling-in-go/
  • elegoselegos Member Posts: 12
    Update, lads!

    I've been silent since the end of 2017, but for a good reason :smile:

    I've been working on the ARE file format, which led me to continue the work on the GFF files with a little practical approach.

    I'm writing the last tests for the ARE reading, and in the meanwhile I've setup a codecov project to check the coverage. You can reach it out from here: https://codecov.io/gh/elegos/nwn-toolset-go

    (feature branch coverage link: https://codecov.io/gh/elegos/nwn-toolset-go/branch/feature/are )

    I'll keep you updated :smiley:

    Feel free to look at the source code. Any comment will be appreciated :wink:

    Lots of fun
  • elegoselegos Member Posts: 12
    Hello again!

    I'd like to announce that I've finally released the reading of an entire ARE file :smile: ... as pre-announced, developing the reading of ARE files let me continue the development of reading GFF files, and I think I'm nearly 90% of it. In particular, I suggest you, if you're interested, to read how I managed the struct fields values, using a struct which is able to store all the possible values: struct, field data extractor (which is a WIP) and (example) int32 (aurora's INT) value getter.

    The repository includes a small ARE file, took from the MOD which comes with along, that represent a small (8x8) and very simple underground map.

    Test coverage of the project is around 72%. Coverage is not everything, as I may simply run the code in the test checking for nothing, but I tried to test all the data (all but the values of ALL the 64 area tiles :neutral: ). I think I'll write a blog post about this (coverage VS tested code).

    To the next one :)
  • XenogeneXenogene Member Posts: 5
    This is looking great. Personally, if I can just get my hands on a map editor that gives me a feel for what I'm building and can link the areas together into one cohesive map, then the rest could be done on the fly for a DM lead (me) group of friends.
    Keep it simple, at least at first, and always achievable :)

    I've had a play with some ARE to XML and back software, but manually typing alternate numbers is way harder to build with than a simple 2d, or 3d, tile map builder. Again, just being able to build a world for NWN:EE and then in DM mode populate is what I'm after. Discord for voice, then it'd nbe even better than roll20 :)
  • XenogeneXenogene Member Posts: 5
    https://sourceforge.net/projects/auroraext/
    Looks like an interesting java based toolset extension project.
Sign In or Register to comment.