58358d0927
* Initial bot commit * Added server commands and cvars for adding AI players to the game. * Added auto modes for automating the adding and removal of bots * Bots connect to the server and join teams correctly * Added round restart and new map detection for AI system Push before new project added for detour * Initial bot integration * Integrated all basic bot code for navigation and task performing * Added support for multi_managers to better understand how buttons and triggers affect doors * Improved bot understanding of door triggers and weldables * Reworked nav profiles Nav profiles for bots are now dynamically updated to take into account changing capabilities, such as picking up a welder * Improved bot door usage * Added weldable obstacles back into navigation Bots now understand how to get around weldable barriers * Replaced fixed arrays with vectors * Resource node and hive lists are now vectors. * Further improved bot weld behaviour * Added dynamic reachability calculations When barriers and doors are open/closed, new reachability calculations are done for structures and items so bots understand when items/structures become reachable or unreachable as the match progresses. * Added team-based reachability calculations Reachabilities for structures and items are now based on the team, so bots understand when they can't reach a structure from their spawn point. * Implemented long-range off-mesh connections and dynamic off-mesh connections * Implemented fully dynamic off-mesh connections Phase gates now use connections rather than custom path finding. Much more performant. * Replaced arrays with vectors for simpler code * Started Bot Swimming * Bots understand trigger_changetarget Bots can now navigate doors operated with a trigger_changetarget so they understand the sequence in which triggers must be activated to make it work * Push before trying to fix long-range connections * Implement new off-mesh connection system * Redid population of door triggers * Fixed trigger types and links to doors * Added lift and moving platform support * Lift improvements * Bots avoid getting crushed under a lift when summoning it * Bots are better at judging which stop a platform needs to be at * Tweak lift and welder usage * Fixed bug with multiple off-mesh connections close together * Finish lift movement * Fixed dodgy path finding * Improved skulk ladder usage and lerk lift usage * Fix crash with path finding * Re-implement commander AI * Commander improvements * Improve commander sieging * Commander scanning tweak * Reimplemented regular marine AI * Start reimplementing alien AI * Implement gorge building behaviours * Start alien tactical decisioning * Continuing alien building and other non-combat logic * More alien role work * Adjusted base node definitions * Iterate Capper Logic * Alien assault AI * Alien Combat * Fix grenade throwing, better combat * Marine combat AI improvements * Commander improvements * Commander + nav improvements * Drop mines * Improved bot stuck detection * Commander supply improvements * Bot fill timing config * Added nsbots.cfg to configure internal bots * Changed bot config file to "nsbots.cfg" * Bug fixing with navigation * Fix skulk movement on ladders * Improved commander placement and tactical refresh * Fixed bug with ladder climbing * Doors block off-mesh connections * Finished doors blocking connections * Marine and alien tactical bug fixes * Add commander beacon back in * Start combat mode stuff * First pass at combat mode * Bots attack turrets * Fix ladder and wall climbing * Commander chat request * Improved skulk ladders * Added nav meshes for new bot code * Added bot configuration to listen server menu * Added bot config file * Added default bot config to listenserver.cfg * Added default bot settings to server.cfg * Include VS filter for bot files * Crash fixes * Bot improvements * Bot stability and mine placement improvements * Fixed crash on new map start with bots * Reverted Svencoop fix * Fixed crash, added more cvars * Performance improvement * Commander building improvements * Stop bot spasming when waiting to take command * Fixed doors not blocking connections * Added bot disabled guard to round start * Commander improvements, movement improvements * Tweaked level load sequence * Performance improvements * Bot load spread * Fixed commander update * Refactor bot frame handling * Bug fixes + Pierow's dynamic load spread * Minor bug fixes * Fix door detection, prep for test * Fixed commander siege spam * linux compile test * fix hardcoded inlcudes * O1 compile flag for detour - fix linux server crash * Revert detour compile flags to original for windows * linux build update * remove x64 build configs * update bot nav meshes and configs * fix bot physics at high server fps, update navmeshes. from @RGreenlees --------- Co-authored-by: RGreenlees <RGreenlees@users.noreply.github.com> Co-authored-by: RichardGreenlees <richard.greenlees@forecast.global> |
||
---|---|---|
hd | ||
main | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
COPYING.txt | ||
README.md |
Natural Selection v3.3
An updated build of the game Natural Selection for Windows and Linux focused on quality-of-life improvements and bug fixes. For a new custom-built bot for NS, go check out Evobot.
Downloads
NOTICE: The recent HL 25th aniversary update broke the NS mod. To run NS you need to go to the Steam Library -> Half-Life -> right click -> Properties -> Betas -> steam_legacy, then press "Update" where the play button normally is. This will be necessary until valve releases their HL SDK update and we then manage to fix all of the issues introduced.
The Natural Selection Launcher (Windows) can install, update, or repair the game.
Manual installation (Windows / Linux)
As the game is a Half-Life mod, Steam and Half-Life installations are required to play the game. After installing, restart steam.
A fresh install of NS comes with updated config files containing everything you need to get playing on the standard settings most players prefer. Customization options are built into the advanced options menu, like the Nine Legends competitive UI option. For further customization, team and weapon specific config files are also now available.
Game not working? Troubleshooting tips
If the game doesn't load, check the following:
- Restart steam after installation to be able to play the game.
- If you recieve a "could not load library" error for the client.dll, please install the latest Microsoft Visual C++ Redistributable package.
- Make sure you have verified Half-Life's integrity. Click here for detailed instructions.
- Check if Half-Life works for you.
- Make sure you have a clean install. Go to the half-life directory (eg.
c:\Program Files\Steam\steamapps\common\Half-Life
) and remove or rename thens
folder, then try installing NS. - Make sure you don't have any additional command line options for NS.
- For more help, ask on #help in the community discord
For Linux:
- You may need to remove or rename the
libstdc++so.6
and possibly thelibgcc.so.1
in theHalf-Life
directory so the linux distro's can be used instead. The one steam provides is outdated. - 32 bit C libraries might need to be installed. Try
apt-get install libc6-i386
if on debian or ubuntu. Thelibm.so.6
from it may need to be placed in your half-life folder if you cannot install that package.
Changes
Updates include:
- Widescreen support (now expands FOV up to 16:9 aspect instead of cropping the image)
- AI upscaled model textures can be turned on with the "Use High Definition models" video option
- Many FPS dependent bugs fixed, including jetpack acceleration, so the game can now be fairly played at 200+ FPS
- Quake style queued jumping to make bunnyhopping more accessible (server adjustable via sv_jumpmode)
- Shotgun and grenade launcher have been reworked to fix reload bugs and animate better
- Weapon reloads are now predicted on the client
- New minimal HUD and the Nine Legends HUD can be selected through advanced options or hud_style and hud_mapstyle
- New crosshair system that can be adjusted through the advanced options and cl_cross commands (Thanks OpenAG)
- Ambient sounds can be changed in advanced options or via cl_ambientsound
- The marine HUD now tracks research progress and the alien HUD tracks hive growth
- Raw input and sensitivity scaling options are now available and non-accelerated mouse input is now default
- The many other improvements, customization options, and bug fixes can be found in the release notes
Hosting a server
How to set up a dedicated Natural Selection server with HLDS:
- Follow these steps to get steamCMD installed and HLDS updated in it: https://developer.valvesoftware.com/wiki/SteamCMD
- You'll want to run
app_update 90 validate
multiple times in steamCMD to install HLDS and fully update it, as it won't completely do it the first time.- NOTE: Please use
app_update 90 -beta steam_legacy validate
until the mod is updated for the HL 25th aniversary release.
- NOTE: Please use
- Copy the
ns
directory into thehlds
directory after installing HLDS from steamcmd - For Linux servers:
- Remove or rename the
libstdc++so.6
in thehlds
directory so the linux distro's can be used instead. The one steam provides is outdated. You may need to rename thelibgcc.so.1
file in the same directory as well. - 32 bit C libraries might need to be installed. Try
apt-get install libc6-i386
if on debian or ubuntu. The libm.so.6 from it may need to be placed in your HLDS folder if you cannot install that package.
- Remove or rename the
- Run the game:
- Linux:
./hlds_run -game ns +map ns_eclipse +sv_secure 1 +port 27015 +hostname "Natural Selection" +maxplayers 32
- Windows:
hlds.exe -console -game ns +map ns_eclipse +sv_secure 1 +port 27015 +hostname "Natural Selection" +maxplayers 32
- Linux:
If you are behind a NAT(Router) make sure to open at least those ports:
- 27015 UDP (game transmission, pings)
- 26900 UDP (VAC service) -- automatically increments if used in case of additional server processes
For more information see the HLDS valve wiki.
In order to check if your server is connected to the steam servers copy the following url in your browser and replace <your IP address>
with your external ip:
http://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr=<your IP address>&format=json
There is an updated version of metamod called metamod-p.
There are a few different bots for Natural Selection, with Evobot being the newest and most comprehensive:
Compiling
For Windows, compilation should be working if you have VS2019 installed.
For Linux:
First you need some libraries. On Ubuntu it is:
apt-get install build-essential git gdb gcc-multilib g++-multilib libc6-dev-i386 mesa-common-dev
Then you will need to get the files:
git clone https://github.com/ENSL/NS.git
Then cd to the linux directory:
cd NS/main/source/linux
Then build
make
or make ns
to build the server binary and make cl_dll
for the client binary. make clean
to clean.
If you get this error when running the app: Fatal Error - could not load library (client.so)
, With a high chance it is because of some UNDEFINED SYMBOLS
in the shared library. But you can check this with this command:
ldd -r -d client.so
Make sure you have vgui.so copied to the cl_dll folder too on Linux.
Debugging
For Windows:
Debug builds can be built with the Debug
build option. The other debug options are currently broken and are a reference from the original UWE source release. After building the debug version and running it, attach the visual studio debugger to hl.exe.
For Linux: If you want to debug:
LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH" gdb ./hl_linux r -game ns -dev -steam
Due to the new engine and the nature of Linux a lot of changes were made. You can find them with grep -Ril @Linux
.
For MacOS & lldb:
DYLD_LIBRARY_PATH=".:$DYLD_LIBRARY_PATH" /Applications/Xcode.app/Contents/Developer/usr/bin/lldb -- ./hl_osx r -game ns -dev -steam -windowed
Have to use XCode's lldb to get around https://stackoverflow.com/a/33589760 (Lack of environment variables). -windowed
as windowed mode makes it easier to deal with crashes on MacOS.
Useful links
-
Useful collections of ns files: server addons, maps and more:
Half Life 1 SDK LICENSE
https://github.com/ValveSoftware/halflife/blob/master/README.md
You may, free of charge, download and use the SDK to develop a modified Valve game running on the Half-Life engine. You may distribute your modified Valve game in source and object code form, but only for free. Terms of use for Valve games are found in the Steam Subscriber Agreement located here: http://store.steampowered.com/subscriber_agreement/
You may copy, modify, and distribute the SDK and any modifications you make to the SDK in source and object code form, but only for free. Any distribution of this SDK must include this license.txt and third_party_licenses.txt.
DISCLAIMER OF WARRANTIES. THE SOURCE SDK AND ANY OTHER MATERIAL DOWNLOADED BY LICENSEE IS PROVIDED “AS IS”. VALVE AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES WITH RESPECT TO THE SDK, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT, TITLE AND FITNESS FOR A PARTICULAR PURPOSE.
LIMITATION OF LIABILITY. IN NO EVENT SHALL VALVE OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE THE ENGINE AND/OR THE SDK, EVEN IF VALVE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Natural Selection copyright and trademarks
All artwork, sounds, audio, screenshots, text and code in Natural Selection, Zen of Sudoku, Spark engine and Natural Selection 2 are Copyright © 2014 Unknown Worlds Entertainment, Inc (http://www.unknownworlds.com).
The mark Natural Selection was first represented in association with video-game software in June of 2001, and was first used in commerce around January, 2002. Natural Selection is Registered with the U.S. Patent and Trademark Office (No. 4,179,393).
Natural Selection license
See COPYING.txt for the GNU GENERAL PUBLIC LICENSE
EXCLUDED CODE: The code described below and contained in the Natural Selection Source Code release is not part of the Program covered by the GPL and is expressly excluded from its terms. You are solely responsible for obtaining from the copyright holder a license for such code and complying with the applicable license terms.
EXCLUDED CODE AND LIBRARIES
- Half Life 1 SDK LICENSE (Copyright(C) Valve Corp.)
- FMOD 3.7.5
- Lua 5.0 (http://lua.org)
- Particle system library by David McAllister (http://www.cs.unc.edu/techreports/00-007.pdf).
Original code and design by Charlie Cleveland (charlie@unknownworlds.com, @flayra).
Many contributions from Karl Patrick (karl.patrick@gmail.com), Petter Rønningen tankefugl@gmail.com, Harry Walsh harry.walsh@gmail.com, and probably lots of people I forgot.