Skip to content

introduction to the Nonvisual Gaming Toolkit

Thank you for downloading the Nonvisual Gaming Toolkit (NVGT) by Sam Tupy Productions and contributers. We hope you find the time that you invest in this engine to be worthwhile!

The NVGT documentation contains:

NVGT User Manual

Getting Started

Welcome to the Nonvisual Gaming Toolkit! This user manual contains all of the information you will need to get up and running using this powerful engine! whether you are new at programming, someone who used to create games using the Blastbay Game Toolkit or an advanced programmer who just wants an easy, no-hassle method of creating games, you're sure to find what you need in this manual to not only get up and running, but to also develop some confidence in it's usage.

Upgrading from bgt

Since for a while this is where most people who have heard of NVGT will likely start, we will begin by describing the relationship between NVGT and BGT, and more importantly the steps required to upgrade a BGT project to an NVGT one. If you have not heard of BGT or are completely new to game development and are wondering how NVGT can help you, you can probably skip this and move to the fresh start topic.

BGT stands for the Blastbay Gaming Toolkit, and is what initially enspired NVGT to be created after BGT was made into abandonware.

It is important to note that NVGT is not officially endorsed by BGT's developers and contributers, and NVGT is not in any way derived from BGT's source code. The only shared assets between NVGT and BGT are some of BGT's include files such as the audio_form and sound_pool used by many bgt games, which are released under a zlib license.

our goal is to make the transission as seemless as possible from BGT to NVGT, but here are some things you should know when porting an existing BGT game.

Fresh start

This is the starting point for anyone who is interested in game development and who has found this engine, but who does not have much experience with programming concepts or the history of older game engines that are similar to this one.

API References

This section contains several complete class and function API references that allow the creation of games and other applications. To see examples of how any of these objects or functions work together with any great detail, you should look in the NVGT User Manual instead of the API references. However if you are trying to find the name of a specific function or browse the complete list of what this engine has to offer, you have come to the right place!

Builtin Script API

Containers Datatypes Streams Audio Concurrency Data Manipulation Date And Time Environment Filesystem JSON Math Networking Profiling And Debugging Pseudorandom Generation Security Text-To-Speech User Interface

Bundled Includes API

Bundled Includes API

Plugins

Git2Nvgt Nvgt_Curl Nvgt_Sqlite Systemd_Notify

Advanced Topics for C++ Developers

This section contains information that is useful for anyone who wishes to interact in any way with NVGT's source code. Whether someone wants to perform a simple sourcecode build, develop an NVGT plugin dll, learn how to contribute to the engine or just learn about how NVGT works internally, you'll find such information here. The topics that will be discussed here will generally not be applicable for those who just want to develop games using NVGT using the installer downloaded from nvgt.gg.

Building NVGT on linux

Note now that there is a script to build NVGT on Linux (tested on Debian). It tends to build pretty portably so you can run it basically anywhere, and it will do much of the required downloading etc. Otherwise if you wish to build manually, some slightly older instructions are below.

Please keep in mind that this is a very very rough draft, I've only done this once before when I built nvgt's server components for stw. This will attempt to describe, even for a user who doesn't use linux much, how to build nvgt at least on Ubuntu 22.04 LTS.

tools

You will need the GNU compiler collection / GNU make / a few other tools. You can see if you already have these on your installation by running gcc, g++, make. If this fails, run sudo apt install build-essential gcc g++ make autoconf libtool.

commands

mkdir deps && cd deps
git clone https://github.com/codecat/angelscript-mirror
cd deps/angelscript-mirror/sdk/angelscript/projects/gnuc
make
sudo make install

sudo apt install libssl-dev libcurl4-openssl-dev libopus-dev libsdl2-dev
sudo apt remove libsdl2-dev

Note

The first command installs a version of SDL that is too old, but still installs loads of deps. Now we will build sdl.

cd deps

Before continuing, download sdl into a folder called SDL.

mkdir SDL_Build
cd SDL_Build
cmake ../SDL
cmake --build .
sudo cmake --install .

cd deps
git clone https://github.com/pocoproject/poco
cd poco
./configure --static --no-tests --no-samples --cflags=-fPIC
make -s -j2

Note

The 2 in make -j2 is how many CPU cores you would like to use when building. Change this to the number of CPU cores you would like to use. If you do not know how many cores your system has, you can use the lscpu command on many distrobutions to check.

sudo make install

cd deps
git clone https://github.com/lsalzman/enet
cd enet
autoreconf -vfi
./configure
make
sudo make install

cd deps
git clone https://github.com/bulletphysics/bullet3
cd bullet3
./build_cmake_pybullet_double.sh
cd cmake_build
sudo camke --install .
cd deps
git clone https://github.com/libgit2/libgit2
cd libgit2
mkdir build
cd build
cmake ..
cmake --build .
sudo cmake --install .

You will need scons, which you can get by running pip3 install scons.

Finally...

cd to the root of the nvgt repository and extract https://nvgt.gg/lindev.tar.gz to a lindev folder there.

scons -s

Enjoy!

Rough notes for building on macOS

Note that there is now a script in the build folder of the GitHub repo that does much of this work for you. It attempts to run as portably as possible. Otherwise, below are some slightly out of date instructions, though they should still work.

I have no idea what I'm doing here!

Assuming xcode and homebrew are installed:

pip3 install scons
brew install autoconf automake libgit2 libtool openssl sdl2 bullet

mkdir deps
git clone https://github.com/codecat/angelscript-mirror
cd "angelscript-mirror/sdk/angelscript/projects/cmake"
mkdir build; cd build
cmake ..
cmake --build .
sudo cmake --install .

cd deps
git clone https://github.com/lsalzman/enet
cd enet
autoreconf -vfi
./configure
make
sudo make install

cd deps
git clone https://github.com/pocoproject/poco
cd poco
./configure --static --no-tests --no-samples
make -s -j<n> where <n> is number of CPU cores to use
sudo make install

cd deps
git clone https://github.com/libgit2/libgit2
cd libgit2
mkdir build
cd build
cmake ..
cmake --build .
sudo cmake --install .

cd nvgt
scons -s

Notes on NVGT's documentation generator

format of the src directory

Installing the Microsoft HTML help compiler

Because of it's simple format and easy distrobution, we still prefer to generate the NVGT documentation as a .chm file (compressed HTML help). Unfortunately, the link to the html help workshop installer has been broken by Microsoft for a couple of years now. Fortunately, the installer for this program was archived from Microsoft's official website by the wayback machine. Until we get a better link, you should be able to download it here, though it should be noted that only those wishing to rebuild nvgt's documentation from source will need this program.

Appendix

This section contains miscellaneous documents such as license agreements, lists of static information, etc.

Changelog

This document lists all major changes that have taken place in NVGT since we started keeping track.

New as of 04/18/2024:

New leading up to 02/20/2024:

New as of 01/06/2024:

Note for changes before 01/06/2024:

Changes were roughly untracked before this time, but there is a rather large list of somewhat sorted changes below as commited to nvgt_bin (a repository where the NVGT testers could access and test NVGT). These are sorted by month where possible to make them easier to sort, but keep in mind that commits to nvgt_bin usually occurred all at once so that building NVGT was easier for all platforms. As such, expect these lists (while somewhat sorted) to become rather large! Additionally, some of these changes may be ambiguous due to being based off of nvgt_bin's commit messages only. At this time, it was assumed anyone using this engine had direct contact with Sam to ask questions.

New as of 12/10/2023:

New as of 07/24/2023:

New as of 04/24/2023:

New as of 02/22/2023:

New as of 01/17/2023:

New as of 10/21/2022:

New as of 09/20/2022:

New as of 09/09/2022:

New as of 09/08/2022:

New as of 09/07/2022:

New as of 09/02/2022:

New as of 08/20/2022:

New as of 07/01/2022:

New as of 06/30/2022:

New as of 06/02/2022:

New as of 05/26/2022:

New as of 05/22/2022:

New as of 05/21/2022:

New as of 05/15/2022:

New as of 05/08/2022:

New as of 04/26/2022:

Contributors

This file contains the names of anyone who has helped contribute to the NVGT engine in any significant way along with short descriptions of how these people have contributed. For a list of third party code used in the engine, you can view the Third Party Licenses topic. A huge thanks goes out to everyone listed here!

License Agreement

NVGT - NonVisual Gaming Toolkit

Copyright (c) 2022-2024 Sam Tupy

nvgt.gg

This software is provided "as-is", without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

Third Party Code Attributions