Toolset for nix users
elegos
Member Posts: 12
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
GOAL OF THE PROJECT:
To create an alternative toolset for the Aurora engine (addressed to Neverwinter Nights)
MODULES TO DEVELOP
I will keep you updated!
UPDATE 28/12/2017: here is the public repo => https://github.com/elegos/nwn-toolset-go
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
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)...
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
7
Comments
If your goals are (just) learning and having fun, you're doing great. Looking at your announcement, I assume this is the case, so keep it up, and feel free to ignore the rest of my post
On the off chance your goal is to actually ship a working unix toolset, I have a lot of input. But I'll keep it short for now. If you're not sure what your goal is, maybe ask yourself "would I still want to do this if the toolset did work on unix?".
A toolset for unix should follow the unix philosophy, for multiple reasons:
- Unix users are used to it
- It will produce shipable products faster
- It will be a lot less work for you
When looked at like this, you'll see that a lot of the "toolset" exists already:
Official command line tools: https://github.com/niv/neverwinter_utils.nim
You seem to be a fan of golang. Please don't let the language in which some tool was written make you decide to rewrite it. These are working tools, and they are supported. @niv can weigh in regarding the time it took him to write these. Think about whether you'd be willing to spend as much time to rewrite.
nwnnsscomp, unix native script compiler: https://github.com/meaglyn/nwn-tools
AdvancedScriptCompiler, Windows-only, but low effort to port: https://github.com/SkywingvL/nwn2dev-public/tree/master/NWNScriptCompiler
Both compilers can also be compiled as a static library without the CLI.
Same disclaimer as above for nim. These are thousands of hours of work; are they really that much different from what you had in mind?
There are nwscipt plugins for many text editors, like Sublime Text, Visual Studio Code, and many others. This is a much better use of resources as:
1) You will never have more features/less bugs than any of these editors.
2) Most unix users have an editor of choice, and would never use a new one anyway.
This leaves the dialog and various GFF editors and the area placement GUI. The GFF (creature, faction) are each relatively simple, but there is many of them. I would suggest starting with one of those, as a standalone program and getting feedback early. Same for the dialog editor (here I'd suggest just a text-editor plugin and a compiler).
The area painting GUI is the big beast that simply cannot follow the unix philosophy. It is a huge project that basically needs to be full-featured to be useful. I cannot stress enough how much work this is. Tens of thousands of man hours for someone familiar with OpenGL and the GUI toolkits.
You might be able to cut it down by writing it as a plugin/mod of some existing game engine, but that assumes familiarity with that engine as well.
If I were contracted for this, I'd probably use Godot engine as a base (since that's what I'm most familiar with) and quote 6000 hours of work.
Finally, there was already a project regarding this: https://pypi.python.org/pypi/neveredit/0.8.1
I don't know how far they managed to get, but it was never usable. Be sure to check that out carefully before diving in.
I hope this wasn't too depressive, and I hope you'll start small and have something usable soon. A small tool that solves one problem is infinitely more valuable than a non-existent tool that solves all of them.
Note that I'm not saying you won't finish this - I can't know your resolve - I'm just saying that a full featured toolset will take one person at least 5 fulltime years to do. Who knows if there will still be a NWN by then?
thanks for the feedback, I really appreciate it
As previously stated and as you pointed out, this has a multiple purposes:
- 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 )
- As a (very big) side project
- To learn go, as my profession now requires to for some important parts of the product
- 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 knowMy 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 ). 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
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.
I've just published the very early stage of the library
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?
P.S.
Please read the README file
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/
I've been silent since the end of 2017, but for a good reason
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
Feel free to look at the source code. Any comment will be appreciated
Lots of fun
I'd like to announce that I've finally released the reading of an entire ARE file ... 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 ). I think I'll write a blog post about this (coverage VS tested code).
To the next one
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
Looks like an interesting java based toolset extension project.