Overview
The arclight project is a tools-based journey through Neverwinter Nights from first principles.
Scrolldown for some screenshots. It’s also an attempt to create a technical vision of what tooling should be. The goal is learning, the joy of building in NWN, but the terminus is, clearly, “Neverwinter Nights 3”.
This is a large work-in-progress:
- Somethings aren’t complete, I’ve taken a breadth first approach so as to get a better sense of usage.
- Somethings are insanely basic, but that’s good because anyone reading here now could understand the lot of it.
- Somethings are still in the Diamond era.
I’m posting here in case there’s anyone out there wanting to rekindle the grand ambitions of the early days of NWN, there are tons of talented people not on the dev team.
This project isn’t intended to compete with any other project. Somewhere in one of the repositories
is a folder with historical screenshots dated 4/18/13. Three years prior, almost to the day,
of an important date in NWN history.
As stated in a previous post, if anyone is offended by what I’ve said, harsh opinions or whatever, in the past or due to my opinion of what happened at the start of NWN:EE, please take this as a public apology if you have any interest in this project.
The Foundation
The foundational library must be performant, cross-platform, and written in a language
that is easy to integrate with other game related libraries. It must also be written in
a direct, simple, straight-forward, low-abstraction style that any junior developer could
easily understand and contribute to since none of this is rocket surgery. For this the project
has selected C++. This is rollnw.
The Text Format
The text format should be a mirror of the object and not a mirror of a serialization format.
It should be trivial to use in any language, on any platform, in any scenario (i.e. a website, a linter,
or something that no one would have thought of), in a manner consitent with the C++ and Python libraries, and have the ability to create schemas. For this the project has chosen JSON, since a number of languages allow direct instantiation of JSON to objects and if they don’t most offer some method of trivial de/serialization. Example.
The Adhoc Tools
A diverse community of people working on different projects with different needs and goals,
requires the ability for any person to have the tools to make adhoc, one-off, tools. For this the
project has selected Python, since it’s the most popular programming language in the world and its
support for notebook based development (programmatically making a dialog). This is rollnw.py, distant predecessor pynwn. Available
on pypi: pip install rollnw
.
Tools
The main tool and its widgets must be stable, performant, cross-platform. For this the project has
chosen Qt and Krita as a rough architectural model (this project is light years from that).
Other tools usable outside of the context of editing a module are available:
- arclight-tools - Arclight and other tools written in C++ and a collection of Qt Widgets.
The Renderer
Currently the built in renderer only supports the most basic models. No dynamic models, emitters, etc, etc…yet. It uses OpenGL 3.3 just as NWN:EE does. Ultimately, the goal is to replace this with a more advanced graphics API. Or if Project Fresh Look for NWN2 is realeased, that will be investigated too.
Features:
- Basic Meshses
- Skin Meshes
- Un-lerped Animations
- Very basic area viewing
The Widgets
The below examples are just the beginning.
Area View
Insanely basic area viewer. Terrible camera. Very little graphics know-how, but a start.
Creature View - Stats
For fans of axs’ modified toolset this layout will be very familiar.
Creature View - Feats
Add remove feats with sorting and a fuzzy search.
Dialog View
A tree view for NWN dialogs.
Container View
A view over a NWN container (i.e. erf, key, zip).