diff --git a/AUTHORS.md b/AUTHORS.md
index e7f20c54..4273e1dc 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -7,22 +7,27 @@ Project Leads
* Roope Palmroos [@outobugi](https://github.com/outobugi)
Contributors
-* Tom Coxon [@tcoxon](https://github.com/tcoxon)
* Emerson Rowland [@XTarsia](https://github.com/XTarsia)
+* Tom Coxon [@tcoxon](https://github.com/tcoxon)
* Loïc Chen (陳明佑) [@painfulexistence](https://github.com/painfulexistence)
* Lorenz Wildberg [@lw64](https://github.com/lw64)
* Jacob Coughenour [@jacobcoughenour](https://github.com/jacobcoughenour)
* Roman Shapiro [@rds1983](https://github.com/rds1983)
-* Skyrbunny [@SlashScreen](https://github.com/SlashScreen)
+* Malidos [@Malidos](https://github.com/Malidos)
+* SlashScreen [@SlashScreen](https://github.com/SlashScreen)
* Dekker3D [@Dekker3D](https://github.com/Dekker3D)
-* [@stakira](https://github.com/stakira) / [@lfxu](https://github.com/lfxu)
-* [@directedchaossoftware](https://github.com/directedchaossoftware)
-* Brian [@epitaque](https://github.com/epitaque)
-* Matt [@FishOfTheNorthStar](https://github.com/FishOfTheNorthStar)
-* [@jeffercize](https://github.com/jeffercize)
-* Raven [@az-raven](https://github.com/az-raven)
* Ryan [@Ryan-000](https://github.com/Ryan-000)
-* Malido [@Malidos](https://github.com/Malidos)
-* Sven Cannivy [@svencan](https://github.com/svencan)
+* [@artoonu](https://github.com/artoonu)
+* Sean Otto [@seanj29](https://github.com/seanj29)
+* Benjamin Wolff [@benjiwolff](https://github.com/benjiwolff)
+* Feiyun Wang [@feiyunw](https://github.com/feiyunw)
+* [@jesus-g20](https://github.com/jesus-g20)
* Scott Davis [@scottdavis](https://github.com/scottdavis)
-* [@jesus-g20](https://github.com/jesus-g20)
\ No newline at end of file
+* Raven [@az-raven](https://github.com/az-raven)
+* [@jeffercize](https://github.com/jeffercize)
+* Matt [@FishOfTheNorthStar](https://github.com/FishOfTheNorthStar)
+* Brian [@epitaque](https://github.com/epitaque)
+* [@directedchaossoftware](https://github.com/directedchaossoftware)
+* [@stakira](https://github.com/stakira) / [@lfxu](https://github.com/lfxu)
+* Sven Cannivy [@svencan](https://github.com/svencan)
+
diff --git a/README.md b/README.md
index 00dd210e..2566e598 100644
--- a/README.md
+++ b/README.md
@@ -20,17 +20,9 @@ See [Project Status](https://terrain3d.readthedocs.io/en/stable/docs/project_sta
1. Read the [Installation & Upgrades](https://terrain3d.readthedocs.io/en/stable/docs/installation.html) instructions.
-2. For support, read [Getting Help](https://terrain3d.readthedocs.io/en/stable/docs/getting_help.html) or join our [Discord server](https://tokisan.com/discord).
+2. For support, read [Getting Help](https://terrain3d.readthedocs.io/en/stable/docs/getting_help.html) and join our [Discord server](https://tokisan.com/discord).
-3. Watch the tutorial videos:
-
-**Installation, Setup, Basic Usage**
-
-[![Using Terrain3D - Part 1](https://i.ytimg.com/vi/oV8c9alXVwU/hqdefault.jpg)](https://youtu.be/oV8c9alXVwU)
-
-**Texture Painting, Holes, Navigation, Advanced Usage**
-
-[![Using Terrain3D - Part 2](https://i.ytimg.com/vi/YtiAI2F6Xkk/hqdefault.jpg)](https://youtu.be/YtiAI2F6Xkk)
+3. Watch the [tutorial videos](https://terrain3d.readthedocs.io/en/stable/docs/tutorial_videos.html).
## Credit
diff --git a/doc/docs/collision.md b/doc/docs/collision.md
index 20ac3489..ac3e796f 100644
--- a/doc/docs/collision.md
+++ b/doc/docs/collision.md
@@ -51,7 +51,7 @@ However, note that `get_height()` above will [interpolate between vertices](http
```gdscript
var region: Terrain3DRegion = terrain.data.get_regionp(global_position)
- if region and not region.is_deleted:
+ if region and not region.is_deleted():
var img: Image = region.get_height_map()
for y in img.get_height():
for x in img.get_width():
@@ -65,7 +65,7 @@ However, note that `get_height()` above will [interpolate between vertices](http
### Getting The Normal
-After getting the height, you may also wish to get the normal with `Terrain3DData.get_normal(global_position)`. The normal is the vector3 pointing perpendulcar to the terrain face.
+After getting the height, you may also wish to get the normal with `Terrain3DData.get_normal(global_position)`. The normal is a Vector3 that points perpendulcar to the terrain face.
### Visualizing Collision
diff --git a/doc/docs/games.md b/doc/docs/games.md
index 6a4ae260..fb8d3e7a 100644
--- a/doc/docs/games.md
+++ b/doc/docs/games.md
@@ -5,13 +5,15 @@ Terrain3D is being used in the following games. To add yours, submit it to the #
| Game | Studio | Description |
|------|--------|-------------|
-| [Out of the Ashes](https://tokisan.com/out-of-the-ashes/) | [Tokisan Games](https://twitter.com/TokisanGames) | Story driven medieval adventure
+| [Out of the Ashes](https://store.steampowered.com/app/2296950/Out_of_the_Ashes/) | [Tokisan Games](https://twitter.com/TokisanGames) | Story driven medieval adventure
| [Memora Wanderer](https://twitter.com/Maytch) | Maytch | Cute nostalgic RPG
| [No Gasoline](https://store.steampowered.com/app/2835350/No_Gasoline/) | [Mount Retro](https://twitter.com/mountretro) | Co-Op/Solo, Adventure-Simulation-Puzzle
| [RotorSim](https://immaculate-lift-studio.itch.io/godot-flight-simulator-alpha) | [Immaculate Lift](https://www.youtube.com/channel/UC-9JixNs1FFE6T5DGwZ6O5Q) | Retro helicopter simulation
| [B&E Ski](https://www.youtube.com/watch?v=pD8Ea3utz9o) | [Penguin Milk](https://bande.ski/) | Skiing game
| [Sacred Forest](https://store.steampowered.com/app/2864350/Sacred_Forest/) | [Blekoh](https://www.youtube.com/@sacredforestgame) | Open world 3D pixel art RPG
| [Pest Apocalypse](https://store.steampowered.com/app/2506810/Pest_Apocalypse/) | [Kikimora Games](https://x.com/KikimoraGames) | Post-apocalyptic pizza delivery
+| [Forg](https://store.steampowered.com/app/2807130/Forg/) | [Crow Games](https://www.youtube.com/@crowgamesdev) | FPS tower defense
+| [open-fpsz](https://gitlab.com/open-fpsz/open-fpsz) | [anyreso](https://mastodon.gamedev.place/@anyreso) | Open-source, Tribes-like FPS multiplayer shooter
## Tech Demos
diff --git a/doc/docs/import_export.md b/doc/docs/import_export.md
index 9b2489b3..accf4fa8 100644
--- a/doc/docs/import_export.md
+++ b/doc/docs/import_export.md
@@ -20,6 +20,7 @@ Currently importing and exporting is possible via code or our import tool. We wi
Notes:
* You can import multiple times into the greater world map by specifying different positions. So you could import multiple maps as separate islands or combined regions.
* It will slice and pad odd sized images into region sized chunks (default is 256x256). e.g. You could import a 4k x 2k, several 1k x 1ks, and a 5123 x 3769 and position them so they are adjacent.
+ * If you're importing a large file, increase the region size first. You only get 1024 regions (32x32) so you need a region size greater than image width / 32.
* You can also reimport to the same location to overwrite anything there using individual maps or a complete set of height, control, and/or color.
5) Specify any desired `height_offset` or `import_scale`. The scale gets applied first. (eg. 100, -100 would scale the terrain by 100, then lower the whole terrain by 100).
diff --git a/doc/docs/navigation.md b/doc/docs/navigation.md
index a255b992..93b79464 100644
--- a/doc/docs/navigation.md
+++ b/doc/docs/navigation.md
@@ -83,11 +83,16 @@ If you have a very large scene in, for example, an open world RPG, it's better t
1. Create a NavigationRegion3D node for each town, each with their own NavigationMesh resources (i.e. unique, not shared).
2. Define the [`filter_baking_aabb`](https://docs.godotengine.org/en/stable/classes/class_navigationmesh.html#class-navigationmesh-property-filter-baking-aabb) on each nav mesh, so that it only bakes objects within its own area.
-3. To use the same Terrain3D node with multiple NavigationRegion3D, set up the nav meshes to use one of the [`SOURCE_GEOMETRY_GROUPS_*` modes](https://docs.godotengine.org/en/stable/classes/class_navigationmesh.html#class-navigationmesh-property-geometry-source-geometry-mode) instead of the default `SOURCE_GEOMETRY_ROOT_NODE_CHILDREN`, and add the Terrain3D node to the group.
+3. To use the same Terrain3D node with multiple NavigationRegion3Ds, change the nav meshes to use one of the group modes [`SOURCE_GEOMETRY_GROUPS_*` modes](https://docs.godotengine.org/en/stable/classes/class_navigationmesh.html#class-navigationmesh-property-geometry-source-geometry-mode), add the Terrain3D node to that group and bake. Alternatively, using the default `SOURCE_GEOMETRY_ROOT_NODE_CHILDREN` mode, add Terrain3D as a child of one NavigationRegion3D and bake navigation with the Terrain3D menu. Then move it as a child of the next and bake.
## Common Issues
+### Navigation won't generate where foliage instances have been placed.
+
+Change [NavigationMesh.parsed_geometry_type](https://docs.godotengine.org/en/stable/classes/class_navigationmesh.html#class-navigationmesh-property-geometry-parsed-geometry-type) from `Mesh Instance` (visual) to `Static Colliders`.
+
+
### NavigationMeshSourceGeometryData3D is empty. Parse source geometry first.
The engine produces this error if there's nothing for a NavigationRegion3D to generate a nav mesh from. The most likely cause, if you're using Terrain3D, is that you haven't painted any parts of the terrain as navigable.
diff --git a/doc/docs/texture_prep.md b/doc/docs/texture_prep.md
index e3a081dc..7214cab7 100644
--- a/doc/docs/texture_prep.md
+++ b/doc/docs/texture_prep.md
@@ -113,10 +113,11 @@ You can use our built in tool to pack textures for you.
1. At the top of your viewport, click the `Terrain3D Tools` menu, then `Pack Textures`.
2. Select your textures for albedo and height.
-3. Optionally, also select textures for normal and roughness.
-4. Optionally, convert a DirectX normal map to OpenGL.
-5. Click `Pack Textures As...` and save the resulting PNG files to disk.
-6. Go to the Import tab and one at a time, select your new PNG files, specify the following settings and click `reimport`.
+3. Optionally, select textures for normal and roughness.
+4. Optionally, convert a DirectX normal map to OpenGL, or smoothness to roughness map.
+5. Optionally, enable Orthogonalise normals if you see a reflective checkerboard pattern appear when using detiling.
+6. Click `Pack Textures As...` and save the resulting PNG files to disk.
+7. Go to the Import tab and one at a time, select your new PNG files, specify the following settings and click `reimport`.
* `Mode: VRAM Compressed`
* Optional: `High Quality: On` if you wish BPTC instead of DXT5.
* `Normal Map: Disabled`
diff --git a/doc/docs/tutorial_videos.md b/doc/docs/tutorial_videos.md
index 97639cbf..0f0c601e 100644
--- a/doc/docs/tutorial_videos.md
+++ b/doc/docs/tutorial_videos.md
@@ -1,12 +1,45 @@
Tutorial Videos
==================
-*Note: Some instructions in the videos may be out of date. Be sure to review this documentation for the latest. Be aware you can select the appropriate documentation version in the menu.*
+*Note: Some instructions in the videos may be out of date. Be sure to review the documentation for the latest info. Be aware you can select the appropriate documentation version in the menu.*
-**Using Terrain3D Part 1: Installation, Setup, Basic Usage**
+## Using Terrain3D Part 1
-[![Using Terrain3D - Part 1](https://i.ytimg.com/vi/oV8c9alXVwU/hqdefault.jpg)](https://youtu.be/oV8c9alXVwU)
+Covers:
+* Installation from Github
+* Setup (storage is out of date, specify a directory now)
+* Basic Usage
-**Using Terrain3D Part 2: Texture Painting, Holes, Navigation, Advanced Usage**
+
-[![Using Terrain3D - Part 2](https://i.ytimg.com/vi/YtiAI2F6Xkk/hqdefault.jpg)](https://youtu.be/YtiAI2F6Xkk)
\ No newline at end of file
+---
+
+## Using Terrain3D Part 2
+
+Covers:
+* Texture Painting
+* Autoshader
+* Material Settings
+* Occlusion Culling
+* Holes
+* Navigation
+* Mesh intersection flickering (e.g. for ocean planes)
+* Advanced Usage
+
+
+
+---
+
+## Terrain3D v0.9.3a New Features - Tutorial 3
+
+Covers:
+* Asset library installation
+* Platform updates
+* Region features like splitting and grid
+* Asset Dock
+* Detiling
+* Instancer
+* Tool bar changes and tool settings
+* Alpha stamping
+
+