![]() |
![]() |
Cheeseh |
![]() ![]()
Post
#1
|
![]() Admin ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 3,066 Joined: 11-September 03 From: uk Member No.: 1 ![]() |
1. Use Visual Studio 2005/2008 (windows)
2. Use a tool such as Ankhsvn or TortoiseSVN for Visual Studio 2005/2008 (windows) http://ankhsvn.open.collab.net/ http://tortoisesvn.net/ 3. Get the appropriate HL2 SDK, from https://github.com/alliedmodders/hl2sdk/ this has updated SDK code (TF2 SDK https://github.com/alliedmodders/hl2sdk/tree/tf2 ) (DODS https://github.com/alliedmodders/hl2sdk/tree/dods ) (HL 2 DM https://github.com/alliedmodders/hl2sdk/tree/hl2dm) 4. Get the code from sourceforge SVN by opening an SVN project in VS Studio (using AnkhSVN) https://sourceforge.net/scm/?type=svn&group_id=248612 download the rcbot2 source: using this command svn checkout svn://svn.code.sf.net/p/rcbot2/code/ rcbot2-code or this server checkout svn://svn.code.sf.net/p/rcbot2/code/ Make sure the project is in the HL2 SDK folder/utils/rcbot2 (Also if you wish to change any code for others to see, make a sourceforge.net username and ask me to add you to the list of coders.) 5. Mar 2013 - note that the latest releases hook to the engine to work properly. This solves many problems that the past rcbot had, but it may create problems in the future, for example TF2 updates may change the engine. For that reasons, if the bot crashes, keep up to date with the website at: http://www.sourcemodplugins.org/vtableoffsets and keep the rcbot_runplayer_cmd updated to the latest PlayerRunCommand offset number for windows (the linux offset is added automatically in the bot if the windows offset is correct) . At this time of speaking, the offset is 418 for tf2 and 417 for DOD:s Linux offsets are shifted by 1 6. Get coding! ![]() Linux instructions + Makefile are here: http://sourceforge.net/p/rcbot2/wiki/Compiling%20in%20Linux/ Make file for linux by bir3yk in code form below (NOTE if you copy/paste this into a new file, you must change any spaces to tabs) CODE # # SDK Makefile for x86 Linux # # ############################################################################# # Developer configurable items ############################################################################# # the name of the mod binary (_i486.so is appended to the end) #NAME=server NAME=HPB_bot2 # the location of the vcproj that builds the mod #MOD_PROJ=../game/server/server_hl2mp-2005.vcproj MOD_PROJ=../utils/RCBot2/HPB_Bot2.vcproj # the name of the mod configuration (typically <proj name>_<build type><build target>) #MOD_CONFIG=ServerHL2MP_ReleaseWin32 MOD_CONFIG=HPB_bot2_ReleaseWin32 # the directory the base binaries (tier0_i486.so, etc) are located # this should point to your orange box subfolder of where you have srcds installed. #GAME_DIR=~/srcds/orangebox GAME_DIR=/home/hlds/steam/orangebox # the path to your mods directory # set this so that 'make install' or 'make installrelease' will copy your binary over automatically. #MOD_DIR=$(GAME_DIR)/SampleMod MOD_DIR=$(GAME_DIR)/ # compiler options (gcc 3.4.1 will work - 4.2.2 recommended) #CC=/usr/local/bin/gcc #CPLUS=/usr/local/bin/g++ #CLINK=/usr/local/bin/gcc #CPP_LIB="/usr/local/lib/libstdc++.a /usr/local/lib/gcc/i686-pc-linux-gnu/4.2.2/libgcc_eh.a" #CC=/usr/bin/gcc #CPLUS=/usr/bin/g++-4.1 #CLINK=/usr/bin/gcc-4.1 CPP_LIB=" /usr/lib/gcc/i486-linux-gnu/4.1.3/libstdc++.a /usr/lib/gcc/i486-linux-gnu/4.1.3/libgcc_eh.a" C = /usr/bin/gcc-4.1 CPLUS = /usr/bin/g++-4.1 CLINK = /usr/bin/gcc-4.1 #CPP_LIB = "libstdc++.a libgcc_eh.a" # GCC 4.2.2 optimization flags, if you're using anything below, don't use these! #OPTFLAGS=-O1 -fomit-frame-pointer -ffast-math -fforce-addr -funroll-loops -fthread-jumps -fcrossjumping -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm -fexpensive-optimizations -frerun-cse-after-loop -fcaller-saves -fpeephole2 -fschedule-insns2 -fsched-interblock -fsched-spec -fregmove -fstrict-overflow -fdelete-null-pointer-checks -freorder-blocks -freorder-functions -falign-functions -falign-jumps -falign-loops -falign-labels -ftree-vrp -ftree-pre -finline-functions -funswitch-loops -fgcse-after-reload OPTFLAGS=-O1 -fomit-frame-pointer -ffast-math -fforce-addr -funroll-loops -fthread-jumps -fcrossjumping -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm -fexpensive-optimizations -frerun-cse-after-loop -fcaller-saves -fpeephole2 -fschedule-insns2 -fsched-interblock -fsched-spec -fregmove -fdelete-null-pointer-checks -freorder-blocks -freorder-functions -falign-functions -falign-jumps -falign-loops -falign-labels -ftree-vrp -ftree-pre -finline-functions -funswitch-loops -fgcse-after-reload #OPTFLAGS= # put any compiler flags you want passed here USER_CFLAGS= # Link Libraries #LIBFILES= \ # $(LIB_DIR)/lib/linux/tier1_486.a \ # $(LIB_DIR)/lib/linux/choreoobjects_486.a \ # $(LIB_DIR)/lib/linux/particles_486.a \ # $(LIB_DIR)/lib/linux/dmxloader_486.a \ # libtier0.so \ # libvstdlib.so \ # libsteam_api.so \ # $(LIB_DIR)/lib/linux/tier3_486.a \ # $(LIB_DIR)/lib/linux/tier2_486.a \ # $(LIB_DIR)/lib/linux/tier1_486.a \ # $(LIB_DIR)/lib/linux/mathlib_486.a \ # link flags for your mod, make sure to include any special libraries here #NOTE: YES we want to include the lib files 2 times. We've run into problems with the 1-pass linker not bringing in symbols it should. #LDFLAGS="-lm -ldl $(LIBFILES) $(LIBFILES)" LIB_DIR = $(SOURCE_DIR)/lib/linux LDFLAGS = "-lm -ldl $(LIB_DIR)/mathlib_i486.a libtier0.so libvstdlib.so $(LIB_DIR)/tier1_i486.a $(LIB_DIR)/tier2_i486.a $(LIB_DIR)/tier3_i486.a " # XERCES 2.6.0 or above ( [url=http://xml.apache.org/xerces-c/]http://xml.apache.org/xerces-c/[/url] ) is used by the vcproj to makefile converter # it must be installed before being able to run this makefile # if you have xerces installed already you should be able to use the two lines below #XERCES_INC_DIR=/usr/include #XERCES_LIB_DIR=/usr/lib XERCES_INC_DIR=/opt/include XERCES_LIB_DIR=/opt/lib ############################################################################# # Things below here shouldn't need to be altered ############################################################################# MAKE=make # the dir we want to put binaries we build into BUILD_DIR=. # the place to put object files BUILD_OBJ_DIR=$(BUILD_DIR)/obj # the location of the source code SOURCE_DIR=.. # the CPU target for the build, must be i486 for now ARCH=i486 ARCH_CFLAGS=-mtune=i686 -march=pentium -mmmx -msse -pipe # -fpermissive is so gcc 3.4.x doesn't complain about some template stuff BASE_CFLAGS=-DVPROF_LEVEL=1 -DSWDS -D_LINUX -DLINUX -DNDEBUG -fpermissive -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp SHLIBEXT=so SHLIBCFLAGS=-fPIC SHLIBLDFLAGS=-shared -Wl,-Map,$@_map.txt -Wl #flags passed to the compiler CFLAGS="$(USER_CFLAGS) $(DEFINES) $(ARCH_CFLAGS) $(OPTFLAGS) $(BASE_CFLAGS) -Usprintf=use_Q_snprintf_instead_of_sprintf -Ustrncpy=use_Q_strncpy_instead -Ufopen=dont_use_fopen -UPROTECTED_THINGS_ENABLE" # define list passed to make for the sub makefile BASE_DEFINES=CC=$(CC) CPLUS=$(CPLUS) CPP_LIB=$(CPP_LIB) \ BUILD_DIR=$(BUILD_DIR) BUILD_OBJ_DIR=$(BUILD_OBJ_DIR) \ SOURCE_DIR=$(SOURCE_DIR) SHLIBLDFLAGS=$(SHLIBLDFLAGS) SHLIBEXT=$(SHLIBEXT) \ CLINK=$(CLINK) CFLAGS=$(CFLAGS) LDFLAGS=$(LDFLAGS) \ ARCH=$(ARCH) GAME_DIR=$(GAME_DIR) MOD_CONFIG=$(MOD_CONFIG) NAME=$(NAME) \ XERCES_INC_DIR=$(XERCES_INC_DIR) XERCES_LIB_DIR=$(XERCES_LIB_DIR) # Project Makefile MAKE_MOD=Makefile.server MAKE_VCPM=Makefile.vcpm MAKE_PLUGIN=Makefile.plugin all: check vcpm server check: if [ -z "$(CC)" ]; then echo "Compiler not defined."; exit; fi if [ ! -d $(BUILD_DIR) ];then mkdir $(BUILD_DIR);fi cd $(BUILD_DIR) vcpm: $(MAKE) -f $(MAKE_VCPM) $(BASE_DEFINES) server: vcpm if [ ! -f "libtier0.so" ]; then ln -s $(GAME_DIR)/bin/libtier0.so .; fi if [ ! -f "libvstdlib.so" ]; then ln -s $(GAME_DIR)/bin/libvstdlib.so .; fi # if [ ! -f "libsteam_api.so" ]; then ln -s $(GAME_DIR)/bin/libsteam_api.so .; fi # When running over samba we need to copy the files because symlinking isn't possible. # cp -f $(GAME_DIR)/bin/tier0_i486.so . # cp -f $(GAME_DIR)/bin/vstdlib_i486.so . # cp -f $(GAME_DIR)/bin/steam_api_i486.so . ./vcpm $(MOD_PROJ) $(MAKE) -f $(MAKE_MOD) $(BASE_DEFINES) plugin: $(MAKE) -f $(MAKE_PLUGIN) $(BASE_DEFINES) clean: $(MAKE) -f $(MAKE_VCPM) $(BASE_DEFINES) clean $(MAKE) -f $(MAKE_PLUGIN) $(BASE_DEFINES) clean $(MAKE) -f $(MAKE_MOD) $(BASE_DEFINES) clean install: cp -f $(NAME)_$(ARCH).so $(MOD_DIR)/bin/$(NAME)_$(ARCH).so installrelease: cp -f $(NAME)_$(ARCH).so $(MOD_DIR)/bin/$(NAME)_$(ARCH).so strip $(MOD_DIR)/bin/$(NAME)_$(ARCH).so |
![]() ![]() |
Root |
![]()
Post
#2
|
Member ![]() ![]() Group: Members Posts: 24 Joined: 20-July 13 Member No.: 2,291 ![]() |
I really have no idea how magically you compile these bots...
![]() Even if this thread exists for like 4 years and its extremely outdated, I'd like to make some notes of that. 1. It will compile fine for latest MSVC versions I believe, not only 2005/2008. 2. Ankhsvn is optional. You dont need that. 3. SDKs you provided in first post are already outdated. These are historical as it says and latest ones moved to github... obv bots with latest sdk dont compile. 4. It's enough to go to SVN>code>download snapshot. Also u say that code should be in HL2 SDK folder/utils/rcbot2, so it should looks like HL2 SDK folder/utils/rcbot2/utils/RCBot2 at the end? Confusing but I figured it out. 5. I could not compile bots on windows because bot_dod_mods.cpp and bot_tf2_mods.cpp wasnt included in .vcproj file. WTF Seriously?! 6. I could not run bots in Release builds. Server was insta-crashed due to different RuntimeLibrary in project file for Debug and Release versions. 7. As of the Linux instructions and Makefile this gave me headache for 3 days, yet couldn't compile bots at all. At first, why does Makefile in thread are differs from wiki's Makefile? It uses different compilers as well as different params, such as SOURCE_DIR/SRC_DIR. why? Well what I do for 1000th time: 1. Get outdated HL2SDK and put in /root/hl2sdk/ 2. Get exact RCBot2 folder with bot sources from code repository and put in /root/hl2sdk/utils/RCBot2 3. Get server libs by SteamCMD, because hldsupdatetool isnt working for like 2 years already. Downloaded server to /root/srcds 4. Get VCProjToMake2010 and overwrite all files in /root/hl2sdk, then edit Makefile.vcpm (replace SOURCE_DIR to SRC_DIR, remove DEBUG from the CLINK line) BTW Attached wiki makefile uses x64 compile libraries, thread one has no SRC_DIR, so I make something between of that. It's still part of headache. 6. Edit to 'suit my system', but again no luck. What's wrong there? 7. Run these commands cd hl2sdk/linux_sdk make -f Makefile.rcbot2 And alot of errors appears! What do I do? Sorry I am very confused and frustrated. |
Cheeseh |
![]()
Post
#3
|
![]() Admin ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 3,066 Joined: 11-September 03 From: uk Member No.: 1 ![]() |
0. yes this thread is quite old because valve has a knack of changing everything now and again
1. it will be but you will need to upgrade the project and or disable some library DLLs from loading 2, yes but it is recommended if you are going to update any code 3. yes they have been updated, you can follow the link from the old one 4. yes you can use the hl2 source from the rcbot 2 snap shot but it may not be the latest 5. yes the vcproj was out of date and has been updated now - you can type these files in manually by opening the vc proj in notepad however you don't need the vcproj on windows, the solution files are better 6. this could do with the hl2 sdk being out of date (see 4) Linux ------ yes Linux is annoying for beginners, and for me, I haven't touched it for a while and you know I haven't had the time to spare with it in the past 2 years since any of this valve crap was updated - simply I don't get paid to do any of this. 1. yes - you don't need steamCMD unless you want to test the bot in a server 2 - there are TWO makefiles but they do the same thing depending on your system, the one in this post is made by by3rk , the one in the wiki was made by myself because I found it to work with me. whichever works with you, give it a try. the main makefiles are made automatically by valve's vcprojtomake so as long as you have the latest vcproj it will make the make file for rcbot itself, but the make file for the project you need one of the make files in the wiki or this thread first. 3 - yes more valve crap being updated = and I personally give up with it because I also have to redownload everything again just to get the exact same thing working 4 - the SOURCE_DIR SRC_DIR thing is a bug with vcprojtomake or another valve product, not and rcbot thing - they cant keep things consistent either QUOTE And alot of errors appears! What do I do? Sorry I am very confused and frustrated. that's exactly how GCC compiles!!! and its friggin annoying I know, but actually most of them are just warnings and it will compile fine. If it stops compiling then theres an error and you have to scout that whole error/warning list to find the error that's stopping it from being compiled it isn't really for novices, and I don't really even have my Linux machine readily available any more, that's why I had some other coders working on the Linux side of things, but they've since left. that's why I usually leave it to others with more Linux experience - if you want to try valve's instructions if you think they're going to be any better see https://developer.valvesoftware.com/wiki/Co...ing_under_Linux and https://developer.valvesoftware.com/wiki/Se...ugins#Compiling I really have no idea how magically you compile these bots... ![]() Even if this thread exists for like 4 years and its extremely outdated, I'd like to make some notes of that. 1. It will compile fine for latest MSVC versions I believe, not only 2005/2008. 2. Ankhsvn is optional. You dont need that. 3. SDKs you provided in first post are already outdated. These are historical as it says and latest ones moved to github... obv bots with latest sdk dont compile. 4. It's enough to go to SVN>code>download snapshot. Also u say that code should be in HL2 SDK folder/utils/rcbot2, so it should looks like HL2 SDK folder/utils/rcbot2/utils/RCBot2 at the end? Confusing but I figured it out. 5. I could not compile bots on windows because bot_dod_mods.cpp and bot_tf2_mods.cpp wasnt included in .vcproj file. WTF Seriously?! 6. I could not run bots in Release builds. Server was insta-crashed due to different RuntimeLibrary in project file for Debug and Release versions. 7. As of the Linux instructions and Makefile this gave me headache for 3 days, yet couldn't compile bots at all. At first, why does Makefile in thread are differs from wiki's Makefile? It uses different compilers as well as different params, such as SOURCE_DIR/SRC_DIR. why? Well what I do for 1000th time: 1. Get outdated HL2SDK and put in /root/hl2sdk/ 2. Get exact RCBot2 folder with bot sources from code repository and put in /root/hl2sdk/utils/RCBot2 3. Get server libs by SteamCMD, because hldsupdatetool isnt working for like 2 years already. Downloaded server to /root/srcds 4. Get VCProjToMake2010 and overwrite all files in /root/hl2sdk, then edit Makefile.vcpm (replace SOURCE_DIR to SRC_DIR, remove DEBUG from the CLINK line) BTW Attached wiki makefile uses x64 compile libraries, thread one has no SRC_DIR, so I make something between of that. It's still part of headache. 6. Edit to 'suit my system', but again no luck. What's wrong there? 7. Run these commands cd hl2sdk/linux_sdk make -f Makefile.rcbot2 And alot of errors appears! What do I do? Sorry I am very confused and frustrated. |
Cheeseh |
![]()
Post
#4
|
![]() Admin ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 3,066 Joined: 11-September 03 From: uk Member No.: 1 ![]() |
I've officially given up with compiling on Linux myself temporarily due to the technicalities and changes that valve makes. It used to compile fine with srcds, but I can't even install steam CMD now and I give up. Someone else will have to compile Linux version. Sorry
|
n0nnie |
![]()
Post
#5
|
Member ![]() ![]() Group: Members Posts: 35 Joined: 27-October 14 Member No.: 2,361 ![]() |
I've officially given up with compiling on Linux myself temporarily due to the technicalities and changes that valve makes. It used to compile fine with srcds, but I can't even install steam CMD now and I give up. Someone else will have to compile Linux version. Sorry If you need a testserver, I can give you one. I do not have a clue how to compile, but Steamcmd works fine here |
Cheeseh |
![]()
Post
#6
|
![]() Admin ![]() ![]() ![]() ![]() ![]() Group: Admin Posts: 3,066 Joined: 11-September 03 From: uk Member No.: 1 ![]() |
|
n0nnie |
![]()
Post
#7
|
Member ![]() ![]() Group: Members Posts: 35 Joined: 27-October 14 Member No.: 2,361 ![]() |
|
![]() ![]() |
![]() |
Lo-Fi Version | Time is now: 17th June 2025 - 02:04 AM |