An homage to Neverwinter Nights
Project description
rollNW
rollNW is an homage to Neverwinter Nights in C++ and Python. See the docs and tests for more info, or open an IDE in browser in the quickstart section below.
This library is a work-in-progress. There will be serious refactoring and until there is a real release, it should be assumed the library is a work-in-progress.
Features
- The beginnings of a novel Rules System designed for easily adding, overriding, expanding, or removing any rule and reasonable performance
- A combat engine built on the above that's nearing being able to simulate melee battles.
- Objects (i.e. Creatures, Waypoints, etc) are implemented at a toolset level. Or in other words their features cover blueprints, area instances, with support for effects and item properties. They are still missing some new EE things. Player Characters are read only, for now.
- A recursive decent NWScript Parser
- Implementations of pretty much every NWN File Format
- An Model Parser. See the mudl model viewer side project.
- A Resource Manager that can load all NWN containers (e.g. erf, key, nwsync) and also Zip files.
- An implementation of NWN's Localization System focused on utf8 everywhere.
Goals
- aims to implement an RPG engine inspired by NWN, excluding graphics and networking.
- focuses on usage, instead of doing things the Aurora Engine Way.
- follows utf8 everywhere.
- hews as close to C++ Core Guidelines as possible.
- aims to be as easily bindable as possible to other languages. I.e. only library specific or STL types at API boundaries.
Building / Installing
The library uses CMakePresets.json as its build system. The naming convention for non-ci presets is {platform}-dev[-{build tool}][-python][-debug]
. In debug presets, build files are written to build-debug
, otherwise build
. In the python presets, python bindings will be built, otherwise only tests and benchmarks are built. On macOS and Linux, ninja is always to the build tool of choice so it is omitted. On windows the default build tool is Visual Studio 2022.
Examples:
$ cmake --preset=linux-dev-python
$ cmake --preset=macos-dev-debug
$ cmake --preset=windows-dev-vs2019-debug
$ cmake --preset=windows-dev-ninja-python
$ cmake --preset=windows-dev
Once your configuration is done, everything is the same between platforms. To build:
$ cmake --build --preset=default
$ cmake --build --preset=debug
To install all binaries and test data to local bin
dir (build or build-debug):
$ cmake --install build --prefix=.
$ cd bin
$ ./rollnw_benchmark
To run ctest:
$ ctest --preset=default
History
A lot of what's here was written in the 2011-2015 range as part of personal minimalist toolset, modernized and with new EE stuff added. In some sense, it's a work of historical fiction -- it's what I'd have suggested at the start of NWN:EE: get the game and the community on the same set of libraries. Similarly to an older project that asked "what if Bioware had stuck with Lua?". The answer to that was pretty positive: a decade ahead, at least, of nwscript.
Credits
- Bioware, Beamdog - The game itself
- abseil - Foundational
- Catch2 - Testing
- glm - Mathematics
- loguru, fmt - Logging
- stbi_image, NWNExplorer, SOIL2 - Image/Texture loading.
- inih - INI, SET parsing
- nholmann_json - JSON
- toml++ - For settings.tml
- libiconv, boost::nowide - i18n, string conversion
- doxygen, sphinx, breathe - documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file rollnw-0.42.dev0.tar.gz
.
File metadata
- Download URL: rollnw-0.42.dev0.tar.gz
- Upload date:
- Size: 48.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7ab92910771db83c4f2435bffc9274a32b634134879527a18dc2d79fffddb9c |
|
MD5 | 042c589038e1cbd196e3ca6c2563d323 |
|
BLAKE2b-256 | 1b6abb6b771a27405f14e80b7d7762e4aa3550f701f844b7540f999344333900 |
File details
Details for the file rollnw-0.42.dev0-cp313-cp313-win_amd64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7773025a500eee0966d5276ff68fa07068f40a0d7eea35f4364f57c09e163cd3 |
|
MD5 | 85bae77b18de976d2268a2b5df37f7db |
|
BLAKE2b-256 | cd9fbd957de65129d33802ad5ae5aa5019ac582f4590b4cb4e74a49c1ffe93b5 |
File details
Details for the file rollnw-0.42.dev0-cp313-cp313-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f92100f22da6720c60447b112f183ccf0fb2a77835d1c6ac8da808b552e3e73a |
|
MD5 | e47b18ee5af678f97daff494e9323678 |
|
BLAKE2b-256 | b7f7cddd70b6e166c6c175f6a8ffe3bbed1349a2af45f71974a74966423809f3 |
File details
Details for the file rollnw-0.42.dev0-cp313-cp313-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp313-cp313-macosx_13_0_x86_64.whl
- Upload date:
- Size: 8.3 MB
- Tags: CPython 3.13, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96de54218267c63ad9a8934f0577e8ce32bf7abe58ce9ffa919f6a7f76961b40 |
|
MD5 | 78d75eb3dc48a48dada0d4e28e7bbd87 |
|
BLAKE2b-256 | 1613114ebd9399451e7210d845456c015325b4c09f573ab1510967293b6e5cbb |
File details
Details for the file rollnw-0.42.dev0-cp313-cp313-macosx_13_0_arm64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp313-cp313-macosx_13_0_arm64.whl
- Upload date:
- Size: 8.3 MB
- Tags: CPython 3.13, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbc7d63710b64748dc3fe3a3cf1f9e929b271be0c83c8543c3371760316deb86 |
|
MD5 | c8294348ec233b81492c28236cd8e073 |
|
BLAKE2b-256 | 4a17ce61dd72e2b13f5429baab3210b473e5ccdb8458e4875b038c4b3fa45f59 |
File details
Details for the file rollnw-0.42.dev0-cp312-cp312-win_amd64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d74ba678b1b32a5a1ce70fd4b082f80754a9e2cb4826d7af8c218df070f5a20a |
|
MD5 | 5b7f30007d8a5a8dbfbb57d72a822d72 |
|
BLAKE2b-256 | a4c26c5323cf806953a2904001ab58429ca23d431b6ae8cbef9944b5412bfea8 |
File details
Details for the file rollnw-0.42.dev0-cp312-cp312-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 779908d88fe084f6bc28a6b2302f70ca22574dfdc91301f042d739aa044c2e03 |
|
MD5 | 6a0924f97865fc8572d23acf5f286baf |
|
BLAKE2b-256 | e07d3c792e199828e5b592717aff24d28f5d2bf74d7419e3b1974947dcb3371f |
File details
Details for the file rollnw-0.42.dev0-cp312-cp312-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp312-cp312-macosx_13_0_x86_64.whl
- Upload date:
- Size: 8.3 MB
- Tags: CPython 3.12, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 002abfd3ef41b8218bdd4406e3acc1acf20449e4e0cf5b85b6cb26d7188c1de1 |
|
MD5 | 3fd2f8fb17e50e376f464223422940d8 |
|
BLAKE2b-256 | 3669ee3742325cbbe5a91676b7524a0e78baf04be49738c58a5f9ab1f7f714f9 |
File details
Details for the file rollnw-0.42.dev0-cp312-cp312-macosx_13_0_arm64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp312-cp312-macosx_13_0_arm64.whl
- Upload date:
- Size: 8.3 MB
- Tags: CPython 3.12, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f0eba23bc77fc06429c7c6cdedf3e57ea9135bdca6783c5e9386745d49f5fc4 |
|
MD5 | 6ff4d4267d228383c33ccef98f80b7f2 |
|
BLAKE2b-256 | c8b2dc4a3c7e508c8bbbaf74d834dee6b9fc4d5c37123e24481190c33e54449b |
File details
Details for the file rollnw-0.42.dev0-cp311-cp311-win_amd64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d186c5c981c43c138a85ae6a3f044a8c1ee333521ab1cf8fb0c90c610b7100f6 |
|
MD5 | 2b221d53e6df9304c6e8e7a63134684a |
|
BLAKE2b-256 | 4d224da2782464772c572ee090fa6065e0d53b2d9881940ae78079994f7a11b3 |
File details
Details for the file rollnw-0.42.dev0-cp311-cp311-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.1 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc8081675fcbefcafcb0506cd1ecf0f089973f85dae1a9bd19d6cafcfb9715a3 |
|
MD5 | 31a0e294e7d2456d9a2f60de58d2793b |
|
BLAKE2b-256 | 31348cb1f8bb57b4a0831abda26bf11c912093f7b50450ab0388596227f1bae5 |
File details
Details for the file rollnw-0.42.dev0-cp311-cp311-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp311-cp311-macosx_13_0_x86_64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.11, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f6f2b77a1df938275fef91123ac110c783e4a700b442b64f94a1c963b04f1e7 |
|
MD5 | 2cf67a4bda25b233c50e2ed3eb8baea7 |
|
BLAKE2b-256 | 87baab64e631e82415cfaa4077388d84d4f32fb75522187ce45d5db451a29cd8 |
File details
Details for the file rollnw-0.42.dev0-cp311-cp311-macosx_13_0_arm64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp311-cp311-macosx_13_0_arm64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.11, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72117b96b24e2c12f14067e676c9c636f00f439f3435964c87c866c1ee5231ec |
|
MD5 | be3d884f6b40cf8bddeab47b2860fceb |
|
BLAKE2b-256 | 0a015b5560aa24d976c3f3439914a45658f6c9b10d4d5fb5d954aa84093c4993 |
File details
Details for the file rollnw-0.42.dev0-cp310-cp310-win_amd64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 3.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e186a6711fa56876c7a2d7acf7034d9724b66d938fb02e1271bc67fada7b03d7 |
|
MD5 | 42893b991ba6da9af3aac2579d00db07 |
|
BLAKE2b-256 | 658679650ba98a387234b3d82c89edc529ab5a145387d0b9a851c27ae6768e3c |
File details
Details for the file rollnw-0.42.dev0-cp310-cp310-manylinux_2_28_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.0 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78acbab9599fc03f27c495a124f251557e2c15e391b79ddbe0d70ce80850c199 |
|
MD5 | 1e096f6bca3e5b2a03f0632e955b7b0c |
|
BLAKE2b-256 | c97e99426a40f91eb1fa6d7772a28cbc6044342e7e14d358cd12818742d69eb5 |
File details
Details for the file rollnw-0.42.dev0-cp310-cp310-macosx_13_0_x86_64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp310-cp310-macosx_13_0_x86_64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.10, macOS 13.0+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9aa939a3b8848453d173db9c0559db634afa04296a1719e43d276273cd97127a |
|
MD5 | 15e7fec5fbaa3843140287e51e8106af |
|
BLAKE2b-256 | 1b3d25e1812527b2f613f23c9e3958f3d4f6b2aedfbae2753b141deca2ec1ed7 |
File details
Details for the file rollnw-0.42.dev0-cp310-cp310-macosx_13_0_arm64.whl
.
File metadata
- Download URL: rollnw-0.42.dev0-cp310-cp310-macosx_13_0_arm64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.10, macOS 13.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46deb6cb7ac65c0cffa367479fbde1e23ded5b72563136ae708d7049d71e96c6 |
|
MD5 | 9495221ab0a7ccf31ac3e0859138dbc6 |
|
BLAKE2b-256 | 5345311b0692965634da4b6904e9b5641f6c0f9eac8c9a99e1d2267d7cf6989a |