Skip to content

Commit

Permalink
documentation/website/blog post
Browse files Browse the repository at this point in the history
  • Loading branch information
samtupy committed Jun 3, 2024
1 parent f5b1f4b commit 8d52de3
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 5 deletions.
5 changes: 2 additions & 3 deletions .github/workflows/web_update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ name: website update

on:
push:
paths:
- 'doc/**'
- 'web/**'
paths: ["doc/**", "web/**"]0
branches: ["main"]
workflow_dispatch:

jobs:
Expand Down
13 changes: 13 additions & 0 deletions doc/src/appendix/!To do.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,19 @@ Another object from BGT we have not yet reimplemented, we are considering [tonic
### AVSpeech and speech dispatcher
Currently other than voice over support, the only speech output NVGT can produce on Linux and MacOS is based on a verry bad sounding RSynth derivative that is included as a fallback synthesizer intended to be used in an emergency situation where the user needs to know that their primary synth failed to load. We intend to wrap AVSpeechSynthesizer on MacOS and speechd on Linux to solve this problem.

## VSCode extension
A plan that has existed for a few months now is to create a VSCode extension for Angelscript that works with NVGT scripts. To facilitate this we have wrapped a function called script_dump_engine_configuration, an example of which you can see in test/quick/dump_engine_config.nvgt. This function dumps a complete reference of everything registred in the engine, enough to compile scripts. This will, once time permits to learn the needed components, allow us to create an extennsion for VSCode that allows everything from symbol lookup to intellisense.

### JAWS keyhook
Anyone who has been playing Survive the Wild for any period of time and who uses JAWS is no doubt aware that the keyhook in Survive the Wild is currently less than ideal. There is ongoing work to fix it, but this is not yet complete.

### SDL dialog boxes
At the moment, we are using SDL's message box system to show simple dialogs rather than implementing it on our own. However, this implementation is not ideal for 3 reasons.
1. shortcuts with an ampersand don't work, we can't create a button called `&yes` that works with alt+y.
2. Copying text does not work with ctrl+c.
3. No internationalization, yes and no buttons are English on non-English windows.
Either we will see if SDL will improve message boxes soon, or switch to something else.

### Switch to miniaudio
Currently we use the Bass audio library for sound output, which functionally speaking does work great. However Bass is not open source, and a comercial license must be purchased from [Un4seen](https://www.un4seen.com/bass.html) in order to sell comercial projects. For NVGT, this is not ideal and Bass was only used because it worked quite well at the time that NVGT was only being used to bolster Survive the Wild development with no opensource intentions. Instead, we plan to switch to [miniaudio](https://github.com/mackron/miniaudio) which is open source and in the public domain, and thus which will solve such comercial licensing issues.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
---
title: 48-hours-post-launch-updates
published_date: 2024-06-03 01:38:21.7829158 +0000
layout: post.liquid
is_draft: true
is_draft: false
---
# {{ page.title }}
Written by Rory and modified by Sam Tupy

## Introduction
Hello everybody!

It's now the second day NVGT has been public, and we have several updates to share since the release.
Expand All @@ -26,7 +30,7 @@ For example:
#pragma platform linux
```

Note: Mac OS and liux compilation still needs to be tested and improved.
Note: Mac OS and linux compilation still needs to be tested and improved.

## built-in url_get and url_post functions
Early users may have experienced issues with bgt_compat.nvgt in the url_get and url_post functions; the new version of NVGT removes these functions and uses new built-in versions.
Expand All @@ -43,6 +47,9 @@ void main(){
}
```

## Performance enhancements
Ethin P discovered that Angelscript's string addon had such horribly slow floatingpoint parsing routines that I couldn't possibly come up with a kind word to say about them. On some CPUs, it was taking 5ms to parse a string into a float! That is unspeakibly not OK and has only been a thing for so long because before opensource, we didn't have time/availability to get to all of these details like benchmarking the floatingpoint processor. Ethin recoded that function for us to use a much faster floatingpoint parser, and now floating point numbers can parse sometimes in under 150 microseconds, thanks Ethin!

## The number_speaker.nvgt Include
Thanks to ogomez92, the number_speaker.bgt include shipped with BGT has now been ported over to NVGT!

Expand All @@ -58,7 +65,20 @@ A growing collection miscellaneous items including some code samples (in the oth
* a new fx.txt file contains documentation for the fx system in NVGT
* there are also other examples to help explain a few miscellaneous actions, like signing executables

## Known issues
The following is a list of solutions for a few commonly encountered issues that people are experiencing right now. We plan to improve on all things mentioned here, but for now, these troubleshooting steps should help get you up and running if you face any of the most common problems.
### Running on MacOS
Sometimes users are having issues getting the official mac build of NVGT to run. This is mostly because apple is quarantining the app upon download. To fix this, try the following:
* If your mac claims that the app bundle is damaged, try running the following in the terminal: `xattr -c /applications/NVGT.app`
* If you get an error in a problem report about libgit2.2.17.dylib or something being missing, run `brew install libgit2`
* Currently we are having issues detecting the builtin includes directory. It will only be a few lines of code to fix, but we haven't gotten to it yet. To run your nvgt code, the recommendation currently is the following (to be improved) command: `/applications/nvgt.app/MacOS/nvgt \`pwd\`/scriptname.nvgt -I/applications/nvgt.app/Contents/Resources/include`
### Windows executable won't run
Remember, NVGT apps may require dependencies. As soon as you initialize the sound system or speak through a screen reader, NVGT tries to call into an external library that you must distribute with your application. Thus, you need to copy c:\nvgt\lib to the directory containing your compiled executable for it to run properly.
### Visual studio link error when building
If you are building NVGT and you get a linker error talking about an undefined symbol thread_sleep_for or similar, the solution is to update visual studio 2022 to the latest version, or if you don't want to do that, you'll need to avoid the use of my windev package and build the dependencies yourself. It's probably just easier to update visual studio.

## What's Next?
While installers and official downloads are indeed available, it should be noted that this engine is still in its beta stage; complete stability in every aspect is neither expected nor guaranteed, although contributors and early users have had great success converting a huge variety of games from bgt already!

More updates will be given as they are available, and thank you for trying NVGT!

2 changes: 2 additions & 0 deletions web/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ The NVGT engine advertises the following qualities and features:
* text reencoding; Handle text created in a player's native encoding using the engine's ability to convert text from one encoding to another with the option of enabling over 35 locale specific encodings.
* datastreams; Move, analyze/encrypt, and in other ways manipulate data with a low memory footprint and with few lines of code using connectable streaming classes (inspired by and wrapping c++/poco iostreams).
* multithreading primitives; Make your game run faster using multiple threads, including related mutual exclusion/locking primitives like mutexes and events.
* builtin cheat engine speed hack protection; Stop cheaters by causing cheat engine's speedhack feature to be completely nonfunctional in your games, while also being able to disable such protection should you want to allow your users to speedhack for fun.
* Timers with adjustable accuracy; Create a timer with an elapsed method that returns values in anything from days to microseconds, and use different accuracies per timer object.
* script debugger; Find issues in your code like never before with standard debugging techniques like breakpoints, single instruction stepping, realtime expression evaluation and more.
* ever expanding plugin system; Be free of the Angelscript sandbox and code whatever extensions to your game you want in c++ or another language.
* subscripting; Add downloadable levels to your games or make them more dynamic with NVGT's ability to execute Angelscript code from within Angelscript code like the javascript or python eval function.
Expand Down

0 comments on commit 8d52de3

Please sign in to comment.