NS/main/source/linux/Makefile.nsdll
pierow 58358d0927
Bot integration for v3.3b8 (#156)
* 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>
2024-03-21 14:17:18 -04:00

290 lines
9.8 KiB
Text

#
# NS game library Makefile for x86 Linux
#
# 11.2015 Makefile
#
HLDLL_SRC_DIR=$(SOURCE_DIR)/dlls
HLWPN_SRC_DIR=$(HLDLL_SRC_DIR)/wpn_shared
NS_MOD_SRC_DIR=$(SOURCE_DIR)/mod
UTIL_SRC_DIR=$(SOURCE_DIR)/util
TEXTREP_SRC_DIR=$(SOURCE_DIR)/textrep
PM_SHARED_SRC_DIR=$(SOURCE_DIR)/pm_shared
DETOUR_SRC_DIR=$(SOURCE_DIR)/detour
HLDLL_OBJ_DIR=$(BUILD_OBJ_DIR)/hldll
HLWPN_OBJ_DIR=$(HLDLL_OBJ_DIR)/wpn_shared
PM_OBJ_DIR=$(HLDLL_OBJ_DIR)/pm_shared
GAME_SHARED_OBJ_DIR=$(HLDLL_OBJ_DIR)/game_shared
NS_MOD_OBJ_DIR=$(HLDLL_OBJ_DIR)/mod
UTIL_OBJ_DIR=$(HLDLL_OBJ_DIR)/util
TEXTREP_OBJ_DIR=$(HLDLL_OBJ_DIR)/textrep
DETOUR_OBJ_DIR=$(HLDLL_OBJ_DIR)/detour
#CFLAGS=$(BASE_CFLAGS) $(ARCH_CFLAGS) $(SHLIBCFLAGS) -DCLIENT_WEAPONS
CFLAGS=$(BASE_CFLAGS) $(ARCH_CFLAGS) -Dstricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -DAVH_SERVER -DLINUX -DVALVE_DLL -DQUIVER -DVOXEL -DQUAKE2 -DDEDICATED -DSWDS -D_STLP_USE_GLIBC -DUSE_OLDAUTH -Dsprintf_s=snprintf -D_stricmp=strcasecmp -DDISABLE_VEC_FUNCS -D_FORTIFY_SOURCE=0
#-O3 -ffast-math -fno-strength-reduce -DCURL_STATICLIB
DETOUR_CFLAGS=$(filter-out -O3,$(ARCH_CFLAGS)) -O1
HLDLL_INCLUDEDIRS=-I$(HLDLL_SRC_DIR) -I../ -I$(ENGINE_SRC_DIR) -I$(COMMON_SRC_DIR) -I$(PM_SRC_DIR) -I$(GAME_SHARED_SRC_DIR) -I$(PUBLIC_SRC_DIR) -I$(UTIL_SRC_DIR) -I$(NS_MOD_SRC_DIR) -I$(PM_OBJ_DIR) -I$(DETOUR_SRC_DIR) -I$(DETOUR_SRC_DIR)/Include
PM_INCLUDEDIRS=-I$(COMMON_SRC_DIR) -I$(PUBLIC_SRC_DIR) -I$(PM_SHARED_SRC_DIR)
GAME_SHARED_INCLUDEDIRS=-I$(HLDLL_SRC_DIR) -I$(ENGINE_SRC_DIR) -I$(COMMON_SRC_DIR) -I$(PM_SRC_DIR) -I$(PUBLIC_SRC_DIR) -I$(COMMON_SRC_DIR)
MOD_INCLUDEDIRS=-I$(UTIL_SRC_DIR) -I$(GAME_SHARED_SRC_DIR) -I$(HLDLL_SRC_DIR) -I$(PUBLIC_SRC_DIR) -I$(COMMON_SRC_DIR) -I$(ENGINE_SRC_DIR) -I$(DETOUR_SRC_DIR) -I$(DETOUR_SRC_DIR)/Include -I../particles -I../cdll/
UTIL_INCLUDEDIRS = -I../ -I../util
TEXTREP_INCLUDEDIRS=..
DETOUR_INCLUDEDIRS=-I$(DETOUR_SRC_DIR) -I$(DETOUR_SRC_DIR)/Include
ifeq ($(OS),Darwin)
LDFLAGS=-lm -lstdc++ -L. libparticleMP.a
#-lcurl
else
LDFLAGS=-lm -lstdc++ -L. libparticleMP.a
#-lcurl
endif
DO_HLDLL_CC=$(CC) $(HLDLL_INCLUDEDIRS) $(CFLAGS) -o $@ -c $<
DO_PM_CC=$(CC) $(PM_INCLUDEDIRS) $(CFLAGS) -o $@ -c $<
DO_GAME_SHARED_CC=$(CC) $(GAME_SHARED_INCLUDEDIRS) $(CFLAGS) -o $@ -c $<
DO_MOD_CC=$(CC) $(MOD_INCLUDEDIRS) $(CFLAGS) -o $@ -c $<
DO_UTIL_CC=$(CC) $(UTIL_INCLUDEDIRS) $(CFLAGS) -o $@ -c $<
DO_TEXTREP_CC=$(CC) $(TEXTREP_INCLUDEDIRS) $(CFLAGS) -o $@ -c $<
DO_DETOUR_CC=$(CC) $(DETOUR_INCLUDEDIRS) $(DETOUR_CFLAGS) -o $@ -c $<
#####################################################################
HLDLL_OBJS = \
$(HLDLL_OBJ_DIR)/animating.o \
$(HLDLL_OBJ_DIR)/animation.o \
$(HLDLL_OBJ_DIR)/bmodels.o \
$(HLDLL_OBJ_DIR)/buttons.o \
$(HLDLL_OBJ_DIR)/cbase.o \
$(HLDLL_OBJ_DIR)/client.o \
$(HLDLL_OBJ_DIR)/combat.o \
$(HLDLL_OBJ_DIR)/doors.o \
$(HLDLL_OBJ_DIR)/effects.o \
$(HLDLL_OBJ_DIR)/egon.o \
$(HLDLL_OBJ_DIR)/explode.o \
$(HLDLL_OBJ_DIR)/func_break.o \
$(HLDLL_OBJ_DIR)/func_tank.o \
$(HLDLL_OBJ_DIR)/game.o \
$(HLDLL_OBJ_DIR)/gamerules.o \
$(HLDLL_OBJ_DIR)/gauss.o \
$(HLDLL_OBJ_DIR)/globals.o \
$(HLDLL_OBJ_DIR)/ggrenade.o \
$(HLDLL_OBJ_DIR)/h_ai.o \
$(HLDLL_OBJ_DIR)/h_battery.o \
$(HLDLL_OBJ_DIR)/h_cycler.o \
$(HLDLL_OBJ_DIR)/h_export.o \
$(HLDLL_OBJ_DIR)/items.o \
$(HLDLL_OBJ_DIR)/lights.o \
$(HLDLL_OBJ_DIR)/maprules.o \
$(HLDLL_OBJ_DIR)/mpstubb.o \
$(HLDLL_OBJ_DIR)/multiplay_gamerules.o \
$(HLDLL_OBJ_DIR)/observer.o \
$(HLDLL_OBJ_DIR)/pathcorner.o \
$(HLDLL_OBJ_DIR)/plane.o \
$(HLDLL_OBJ_DIR)/plats.o \
$(HLDLL_OBJ_DIR)/rpg.o \
$(HLDLL_OBJ_DIR)/player.o \
$(HLDLL_OBJ_DIR)/satchel.o \
$(HLDLL_OBJ_DIR)/shotgun.o \
$(HLDLL_OBJ_DIR)/singleplay_gamerules.o \
$(HLDLL_OBJ_DIR)/skill.o \
$(HLDLL_OBJ_DIR)/sound.o \
$(HLDLL_OBJ_DIR)/soundent.o \
$(HLDLL_OBJ_DIR)/spectator.o \
$(HLDLL_OBJ_DIR)/squeakgrenade.o \
$(HLDLL_OBJ_DIR)/subs.o \
$(HLDLL_OBJ_DIR)/teamplay_gamerules.o \
$(HLDLL_OBJ_DIR)/triggers.o \
$(HLDLL_OBJ_DIR)/turret.o \
$(HLDLL_OBJ_DIR)/util.o \
$(HLDLL_OBJ_DIR)/weapons.o \
$(HLDLL_OBJ_DIR)/world.o \
$(HLDLL_OBJ_DIR)/xen.o \
MOD_OBJS = \
$(NS_MOD_OBJ_DIR)/AnimationUtil.o \
$(NS_MOD_OBJ_DIR)/AvHAcidRocketGun.o \
$(NS_MOD_OBJ_DIR)/AvHAICommander.o \
$(NS_MOD_OBJ_DIR)/AvHAIConfig.o \
$(NS_MOD_OBJ_DIR)/AvHAIHelper.o \
$(NS_MOD_OBJ_DIR)/AvHAIMath.o \
$(NS_MOD_OBJ_DIR)/AvHAINavigation.o \
$(NS_MOD_OBJ_DIR)/AvHAIPlayer.o \
$(NS_MOD_OBJ_DIR)/AvHAIPlayerManager.o \
$(NS_MOD_OBJ_DIR)/AvHAIPlayerUtil.o \
$(NS_MOD_OBJ_DIR)/AvHAITactical.o \
$(NS_MOD_OBJ_DIR)/AvHAITask.o \
$(NS_MOD_OBJ_DIR)/AvHAIWeaponHelper.o \
$(NS_MOD_OBJ_DIR)/AvHAlienAbilities.o \
$(NS_MOD_OBJ_DIR)/AvHAlienEquipment.o \
$(NS_MOD_OBJ_DIR)/AvHAlienTurret.o \
$(NS_MOD_OBJ_DIR)/AvHAlienWeapon.o \
$(NS_MOD_OBJ_DIR)/AvHAssert.o \
$(NS_MOD_OBJ_DIR)/AvHBaseBuildable.o \
$(NS_MOD_OBJ_DIR)/AvHBaseInfoLocation.o \
$(NS_MOD_OBJ_DIR)/AvHBasePlayerWeapon.o \
$(NS_MOD_OBJ_DIR)/AvHBileBombGun.o \
$(NS_MOD_OBJ_DIR)/AvHBite.o \
$(NS_MOD_OBJ_DIR)/AvHBite2.o \
$(NS_MOD_OBJ_DIR)/AvHBlink.o \
$(NS_MOD_OBJ_DIR)/AvHBuildable.o \
$(NS_MOD_OBJ_DIR)/AvHBuildingGun.o \
$(NS_MOD_OBJ_DIR)/AvHCurl.o \
$(NS_MOD_OBJ_DIR)/AvHClaws.o \
$(NS_MOD_OBJ_DIR)/AvHCloakable.o \
$(NS_MOD_OBJ_DIR)/AvHConsoleCommands.o \
$(NS_MOD_OBJ_DIR)/AvHConstants.o \
$(NS_MOD_OBJ_DIR)/AvHCombat.o \
$(NS_MOD_OBJ_DIR)/AvHDevour.o \
$(NS_MOD_OBJ_DIR)/AvHDivineWind.o \
$(NS_MOD_OBJ_DIR)/AvHEntities.o \
$(NS_MOD_OBJ_DIR)/AvHEntityHierarchy.o \
$(NS_MOD_OBJ_DIR)/AvHGamerules.o \
$(NS_MOD_OBJ_DIR)/AvHGrenade.o \
$(NS_MOD_OBJ_DIR)/AvHGrenadeGun.o \
$(NS_MOD_OBJ_DIR)/AvHHealingSpray.o \
$(NS_MOD_OBJ_DIR)/AvHHeavyMachineGun.o \
$(NS_MOD_OBJ_DIR)/AvHHive.o \
$(NS_MOD_OBJ_DIR)/AvHItemInfo.o \
$(NS_MOD_OBJ_DIR)/AvHKnife.o \
$(NS_MOD_OBJ_DIR)/AvHMachineGun.o \
$(NS_MOD_OBJ_DIR)/AvHMapExtents.o \
$(NS_MOD_OBJ_DIR)/AvHMarineEquipment.o \
$(NS_MOD_OBJ_DIR)/AvHMarineTurret.o \
$(NS_MOD_OBJ_DIR)/AvHMarineWeapon.o \
$(NS_MOD_OBJ_DIR)/AvHMetabolize.o \
$(NS_MOD_OBJ_DIR)/AvHMine.o \
$(NS_MOD_OBJ_DIR)/AvHMiniMap.o \
$(NS_MOD_OBJ_DIR)/AvHMovementUtil.o \
$(NS_MOD_OBJ_DIR)/AvHNetworkMessages.o \
$(NS_MOD_OBJ_DIR)/AvHOrder.o \
$(NS_MOD_OBJ_DIR)/AvHParasiteGun.o \
$(NS_MOD_OBJ_DIR)/AvHParticleSystem.o \
$(NS_MOD_OBJ_DIR)/AvHParticleSystemEntity.o \
$(NS_MOD_OBJ_DIR)/AvHParticleSystemManager.o \
$(NS_MOD_OBJ_DIR)/AvHParticleTemplate.o \
$(NS_MOD_OBJ_DIR)/AvHParticleTemplateServer.o \
$(NS_MOD_OBJ_DIR)/AvHPistol.o \
$(NS_MOD_OBJ_DIR)/AvHPlayer.o \
$(NS_MOD_OBJ_DIR)/AvHPlayerUpgrade.o \
$(NS_MOD_OBJ_DIR)/AvHPrimalScream.o \
$(NS_MOD_OBJ_DIR)/AvHPushableBuildable.o \
$(NS_MOD_OBJ_DIR)/AvHReinforceable.o \
$(NS_MOD_OBJ_DIR)/AvHResearchManager.o \
$(NS_MOD_OBJ_DIR)/AvHScriptManager.o \
$(NS_MOD_OBJ_DIR)/AvHScriptServer.o \
$(NS_MOD_OBJ_DIR)/AvHScriptShared.o \
$(NS_MOD_OBJ_DIR)/AvHSelectionHelper.o \
$(NS_MOD_OBJ_DIR)/AvHServerPlayerData.o \
$(NS_MOD_OBJ_DIR)/AvHServerUtil.o \
$(NS_MOD_OBJ_DIR)/AvHSharedMovementInfo.o \
$(NS_MOD_OBJ_DIR)/AvHSharedUtil.o \
$(NS_MOD_OBJ_DIR)/AvHSiegeTurret.o \
$(NS_MOD_OBJ_DIR)/AvHSonicGun.o \
$(NS_MOD_OBJ_DIR)/AvHSoundListManager.o \
$(NS_MOD_OBJ_DIR)/AvHSpecials.o \
$(NS_MOD_OBJ_DIR)/AvHSpikeGun.o \
$(NS_MOD_OBJ_DIR)/AvHSpitGun.o \
$(NS_MOD_OBJ_DIR)/AvHSpores.o \
$(NS_MOD_OBJ_DIR)/AvHStomp.o \
$(NS_MOD_OBJ_DIR)/AvHSwipe.o \
$(NS_MOD_OBJ_DIR)/AvHTeam.o \
$(NS_MOD_OBJ_DIR)/AvHTechNode.o \
$(NS_MOD_OBJ_DIR)/AvHTurret.o \
$(NS_MOD_OBJ_DIR)/AvHTechTree.o \
$(NS_MOD_OBJ_DIR)/AvHUmbraGun.o \
$(NS_MOD_OBJ_DIR)/AvHVisibleBlipList.o \
$(NS_MOD_OBJ_DIR)/AvHVoiceHelper.o \
$(NS_MOD_OBJ_DIR)/AvHWebSpinner.o \
$(NS_MOD_OBJ_DIR)/AvHWeldable.o \
$(NS_MOD_OBJ_DIR)/AvHWelder.o \
$(NS_MOD_OBJ_DIR)/AvHWorldUpdate.o \
$(NS_MOD_OBJ_DIR)/AvHTechSlotManager.o \
$(NS_MOD_OBJ_DIR)/AvHSpawn.o \
$(NS_MOD_OBJ_DIR)/CollisionUtil.o \
$(NS_MOD_OBJ_DIR)/CollisionChecker.o \
$(NS_MOD_OBJ_DIR)/CollisionChecker_ServerOnly.o \
$(NS_MOD_OBJ_DIR)/NetworkMeter.o \
PM_OBJS = \
$(PM_OBJ_DIR)/pm_shared.o \
$(PM_OBJ_DIR)/pm_math.o \
$(PM_OBJ_DIR)/pm_debug.o
GAME_SHARED_OBJS = \
$(GAME_SHARED_OBJ_DIR)/voice_banmgr.o \
$(GAME_SHARED_OBJ_DIR)/voice_gamemgr.o \
UTIL_OBJS = \
$(UTIL_OBJ_DIR)/Balance.o \
$(UTIL_OBJ_DIR)/Checksum.o \
$(UTIL_OBJ_DIR)/LinuxSupport.o \
$(UTIL_OBJ_DIR)/Mat3.o \
$(UTIL_OBJ_DIR)/MathUtil.o \
$(UTIL_OBJ_DIR)/Quat.o \
$(UTIL_OBJ_DIR)/Stacktrace.o \
$(UTIL_OBJ_DIR)/STLUtil.o \
$(UTIL_OBJ_DIR)/Tokenizer.o \
TEXTREP_OBJS = \
$(TEXTREP_OBJ_DIR)/TRDescription.o \
$(TEXTREP_OBJ_DIR)/TRFactory.o \
DETOUR_OBJS = \
$(DETOUR_OBJ_DIR)/DetourAlloc.o \
$(DETOUR_OBJ_DIR)/DetourAssert.o \
$(DETOUR_OBJ_DIR)/DetourCommon.o \
$(DETOUR_OBJ_DIR)/DetourNavMesh.o \
$(DETOUR_OBJ_DIR)/DetourNavMeshBuilder.o \
$(DETOUR_OBJ_DIR)/DetourNavMeshQuery.o \
$(DETOUR_OBJ_DIR)/DetourNode.o \
$(DETOUR_OBJ_DIR)/DetourTileCache.o \
$(DETOUR_OBJ_DIR)/DetourTileCacheBuilder.o \
all: dirs ns.$(SHLIBEXT)
dirs:
-mkdir $(BUILD_OBJ_DIR)
-mkdir $(HLDLL_OBJ_DIR)
-mkdir $(NS_MOD_OBJ_DIR)
-mkdir $(HLWPN_OBJ_DIR)
-mkdir $(PM_OBJ_DIR)
-mkdir $(UTIL_OBJ_DIR)
-mkdir $(TEXTREP_OBJ_DIR)
-mkdir $(GAME_SHARED_OBJ_DIR)
-mkdir $(DETOUR_OBJ_DIR)
ns.$(SHLIBEXT): $(HLDLL_OBJS) $(MOD_OBJS) $(PM_OBJS) $(GAME_SHARED_OBJS) $(UTIL_OBJS) $(TEXTREP_OBJS) $(DETOUR_OBJS)
$(CC) $(SHLIBLDFLAGS) -o $(BUILD_DIR)/$@ $(HLDLL_OBJS) $(MOD_OBJS) $(PM_OBJS) $(GAME_SHARED_OBJS) $(UTIL_OBJS) $(TEXTREP_OBJS) $(DETOUR_OBJS) $(LDFLAGS)
@echo "Done..."
$(NS_MOD_OBJ_DIR)/%.o: $(NS_MOD_SRC_DIR)/%.cpp
$(DO_MOD_CC)
$(HLDLL_OBJ_DIR)/%.o : $(HLDLL_SRC_DIR)/%.cpp
$(DO_HLDLL_CC)
$(PM_OBJ_DIR)/%.o : $(PM_SRC_DIR)/%.cpp
$(DO_PM_CC)
$(GAME_SHARED_OBJ_DIR)/%.o : $(GAME_SHARED_SRC_DIR)/%.cpp
$(DO_GAME_SHARED_CC)
$(UTIL_OBJ_DIR)/%.o : $(UTIL_SRC_DIR)/%.cpp
$(DO_UTIL_CC)
$(TEXTREP_OBJ_DIR)/%.o : $(TEXTREP_SRC_DIR)/%.cpp
$(DO_TEXTREP_CC)
$(DETOUR_OBJ_DIR)/%.o : $(DETOUR_SRC_DIR)/%.cpp
$(DO_DETOUR_CC)
clean:
-rm -rf $(GAME_SHARED_OBJ_DIR)
-rm -rf $(PM_OBJ_DIR)
-rm -rf $(HLWPN_OBJ_DIR)
-rm -rf $(HLDLL_OBJ_DIR)
-rm -f ns.$(SHLIBEXT)