Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
535eda1
Add fgdlib and vbsp to CMake
Masterkatze Jul 26, 2025
306075c
Add vvis, vmpi, lzma to CMake
Masterkatze Jun 21, 2026
1b5ae61
Do not compile vmpi and libcurl when DNEO_VMPI is OFF
Masterkatze Aug 2, 2025
b270583
Add vrad and vice to CMake
Masterkatze Aug 3, 2025
f716438
More utils changes
Masterkatze Aug 12, 2025
3748ce9
Fix warnings
Masterkatze Feb 9, 2026
262b04b
Fix some bugs in vbsp
Masterkatze Jun 21, 2026
a2cc17c
Remove VMPI
Masterkatze Jun 21, 2026
c7ba598
Some cleanup
Masterkatze Jun 22, 2026
68eaaa3
Add vvis (initial)
Masterkatze Jun 22, 2026
69421cd
Make vbsp and vvis run from a build dir
Masterkatze Jul 1, 2026
5bd7da6
Add vrad
Masterkatze Jul 3, 2026
e34966e
Add vice
Masterkatze Jul 3, 2026
080421c
Some fixes
Masterkatze Jul 4, 2026
2ae0efd
Refactor CMake install code
Masterkatze Jul 8, 2026
620870b
More fixes
Masterkatze Jul 9, 2026
0a00dc1
CMake install refactor, add utils scripts
Masterkatze Jul 13, 2026
883c015
Update neo_install_targets to support launcher installation
Masterkatze Jul 19, 2026
9ef8c2d
Add appid-based mounting support to tools
Masterkatze Jul 27, 2026
96d3452
Set rpath
Masterkatze Jul 27, 2026
ad505ee
Fix new GCC compilation errors
Masterkatze Aug 5, 2026
85427d4
Fix vbsp crash on release build
Masterkatze Aug 5, 2026
71ace60
Fix shaderapiempty.so not loading
Masterkatze Aug 5, 2026
219d03e
Add multiple rpath dirs support
Masterkatze Aug 5, 2026
15a9dcb
Fix assert in utils
Masterkatze Aug 17, 2026
5695773
Create symlink to ntre dir for tools when path is specified
Masterkatze Aug 20, 2026
87a3e88
Fix build error in CI
Masterkatze Aug 21, 2026
e5306d3
Update install path for utils
Masterkatze Aug 21, 2026
82dfd1f
Fix sourcemod launch scenario for tools
Masterkatze Aug 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 37 additions & 3 deletions .github/workflows/cibuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

matrix:
platform:
- { display_name: 'Linux Native Libraries', os: ubuntu-24.04, preset_os: linux }
- { display_name: 'Linux Libraries', os: ubuntu-24.04, preset_os: linux }

preset_build_type:
- { display_name: 'Debug', name: debug }
Expand Down Expand Up @@ -87,6 +87,7 @@ jobs:
-DNEO_USE_SEPARATE_BUILD_INFO=ON
-DNEO_INSTALL_LIBRARIES=ON
-DNEO_INSTALL_LAUNCHER=ON
-DNEO_INSTALL_UTILS=ON
-DNEO_INSTALL_RESOURCES=OFF
-DNEO_EXTRA_ASSETS_ALT_PATH=${{ github.workspace }}/neoAssets

Expand Down Expand Up @@ -131,6 +132,8 @@ jobs:
echo "libraries_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-libraries-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "dedicated=$(find . -regex '\.\/neo-\w*-\w*-dedicated-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "dedicated_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-dedicated-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "utils=$(find . -regex '\.\/neo-\w*-\w*-utils-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "utils_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-utils-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "gamedata=$(find . -regex '\.\/neo-\w*-\w*-gamedata' -printf '%f')" >> "$GITHUB_ENV"
echo "launcher=$(find . -regex '\.\/neo-\w*-\w*-launcher-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "launcher_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-launcher-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -163,6 +166,20 @@ jobs:
path: ${{ env.install_dir }}/${{ env.dedicated_debuginfo }}
if-no-files-found: error

- name: Upload utils
uses: actions/upload-artifact@v7
with:
name: ${{ env.utils }}
path: ${{ env.install_dir }}/${{ env.utils }}
if-no-files-found: error

- name: Upload utils debug information
uses: actions/upload-artifact@v7
with:
name: ${{ env.utils_debuginfo }}
path: ${{ env.install_dir }}/${{ env.utils_debuginfo }}
if-no-files-found: error

- name: Upload SourceMod gamedata
if: ${{ matrix.preset_build_type.name == 'release' }}
uses: actions/upload-artifact@v7
Expand Down Expand Up @@ -199,7 +216,7 @@ jobs:

matrix:
platform:
- { display_name: 'Windows Native Libraries', os: windows-2022, preset_os: windows }
- { display_name: 'Windows Libraries', os: windows-2022, preset_os: windows }

preset_build_type:
- { display_name: 'Debug', name: debug }
Expand Down Expand Up @@ -259,6 +276,7 @@ jobs:
-DNEO_USE_SEPARATE_BUILD_INFO=ON
-DNEO_INSTALL_LIBRARIES=ON
-DNEO_INSTALL_LAUNCHER=ON
-DNEO_INSTALL_UTILS=ON
-DNEO_INSTALL_RESOURCES=OFF
-DNEO_EXTRA_ASSETS_ALT_PATH=${{ github.workspace }}/neoAssets

Expand Down Expand Up @@ -306,6 +324,8 @@ jobs:
echo "gamedata=$(find . -regex '\.\/neo-\w*-\w*-gamedata' -printf '%f')" >> "$GITHUB_ENV"
echo "launcher=$(find . -regex '\.\/neo-\w*-\w*-launcher-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "launcher_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-launcher-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "utils=$(find . -regex '\.\/neo-\w*-\w*-utils-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"
echo "utils_debuginfo=$(find . -regex '\.\/neo-\w*-\w*-utils-debuginfo-\w*-\w*' -printf '%f')" >> "$GITHUB_ENV"

- name: Upload libraries
uses: actions/upload-artifact@v7
Expand Down Expand Up @@ -347,10 +367,23 @@ jobs:
with:
name: ${{ env.launcher_debuginfo }}
path: ${{ env.install_dir }}/${{ env.launcher_debuginfo }}

- name: Upload utils
uses: actions/upload-artifact@v7
with:
name: ${{ env.utils }}
path: ${{ env.install_dir }}/${{ env.utils }}
if-no-files-found: error

- name: Upload utils debug information
uses: actions/upload-artifact@v7
with:
name: ${{ env.utils_debuginfo }}
path: ${{ env.install_dir }}/${{ env.utils_debuginfo }}
if-no-files-found: error

pack-resources:
name: Windows Native Resources
name: Windows Resources

runs-on: windows-2022

Expand Down Expand Up @@ -391,6 +424,7 @@ jobs:
-DNEO_USE_CCACHE=OFF
-DNEO_COPY_LIBRARIES=OFF
-DNEO_INSTALL_LIBRARIES=OFF
-DNEO_INSTALL_UTILS=OFF
-DNEO_INSTALL_RESOURCES=ON
-DNEO_INSTALL_LAUNCHER=OFF

Expand Down
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,41 @@ Another way is just add the `-game` option to "Source SDK Base 2013 Multiplayer"
## SDK tools and SRCDS original NEOTOKYO mounting
By default the `gameinfo.txt` provided utilizes TF2-SDK's new `|appid_244630|` appid-based search path to mount the original NEOTOKYO assets. However, some SDK tools and SRCDS either refuse to mount or crash when trying to use this. If the appid-based search path is an issue, just comment this line out and uncomment `|gameinfo_path|../../NEOTOKYO/NeotokyoSource` line below and alter if needed to the actual path of your original `NeotokyoSource` installation.

## Map compile tools (`vbsp`, `vvis`, `vrad`)
The map compile tools are built along with the game (`NEO_BUILD_UTILS`, on by default) and are
staged into their own install directory when `NEO_INSTALL_UTILS` is enabled.

The tools pick the engine to run on top of from the `-game` directory they are pointed at: they
first look for the engine binaries next to it (`<gamedir>/../bin/PLATSUBDIR`), which is the layout
of the Steam "NeotokyoRebuild" install. If there is no engine there - which is the case for a mod
installed under `steamapps/sourcemods/neo`, or for a `game/neo` directory in a source tree - the
engine is looked up from the `SteamAppId` in the mod's `gameinfo.txt` ("Source SDK Base 2013
Multiplayer", appid 243750) through the local Steam installation. Content mounted through
`|all_source_engine_paths|` comes from that same installation.

The tool binaries themselves still need the engine libraries (`libtier0`, `libvstdlib`, ...) on
their library path:

* When running from the build tree, configure with `NEO_TOOLS_ENGINE_BIN_PATH` set to the engine's
`bin/PLATSUBDIR` directory. The build then symlinks it into the tool binary directories and adds
it to their rpath:
```
$ cmake --preset linux-release -DNEO_TOOLS_ENGINE_BIN_PATH="$HOME/.steam/steam/steamapps/common/Source SDK Base 2013 Multiplayer/bin/linux64"
$ cmake --build --preset linux-release
$ ./build/linux-release/utils/vbsp/vbsp -game $HOME/.steam/steam/steamapps/sourcemods/neo /PATH_TO_MAP/mymap
```
* When installing (`NEO_INSTALL_UTILS`), the tools are staged into `bin/PLATSUBDIR` so the install
directory can be copied over an engine installation ("NeotokyoRebuild" or "Source SDK Base 2013
Multiplayer"), which puts them next to the engine libraries.

`utils/test_tools.sh` (Linux) and `utils\test_tools.bat` (Windows) compile a map with every one of
those tool locations against every kind of game directory, and report which combinations work:
```
$ ./utils/test_tools.sh # everything
$ ./utils/test_tools.sh --list # only show what was detected
$ ./utils/test_tools.sh --locations build-tree --game-types sourcemod --tools vbsp
```

## Using `-tools`
Engine tools have been broken since the TF2-SDK/64-bit update due to libraries being misplaced. To fix this, go to your Source SDK Base 2013 Multiplayer installation folder and move all files in `bin/tools/x64` to `bin/x64/tools`. You may have to create a tools folder if one does not exist already.

Expand Down
Loading