Compiling under VS2010
Visual Studio 2010 is the best choice for Source. You can use the free C++ Express edition.
Alien Swarm conversion
Converting the Alien Swarm server project to VS2010 will lead to an "invalid characters in path" error. To fix it, open game\server\swarm_sdk_server.vcproj
with a text editor and delete "' $File
" from line 2232.
Debugging
- Follow the instructions for fixing debug compiles in VS2008, which apply here as well.
- Right click on the client and server projects in VS and go to Properties > Configuration Properties > General. Change Target Name to client and server respectively.
Fixing File Copying
There is a bug in VS 2010 which will sometimes prevent your newly-compiled DLLs from being copied to your mod directory, so if your changes aren't taking effect, this may be the cause. To fix it, right-click on the client and server projects in VS and select Properties. Change the Configuration drop-down menu at the top to All Configurations. Then, go to Configuration Properties > Custom Build Step and in the Additional Dependencies field, type in $(TargetPath)
Fixing Warnings
If you want to remove the "precompiled header" warnings seen during a full compile, open these files in your client project and move #include "cbase.h"
up to the first line:
- hud_locator.cpp
- hud_credits.cpp
- hud_flashlight.cpp
Fixing "'IsBIK': identifier not found" error
First, save this code at src/public/avi/ibik.h . Then, under "game/client/enginesprite.h", include "avi/ibik.h" at the top and add the following parts (in bold) toward the bottom:
bool IsAVI(); bool IsBIK(); void GetTexCoordRange( float *pMinU, float *pMinV, float *pMaxU, float *pMaxV ); private: AVIMaterial_t m_hAVIMaterial; BIKMaterial_t m_hBIKMaterial;
Then in spritemodel.cpp, add the following under the end of CEngineSprite::IsAVI():
//----------------------------------------------------------------------------- // Is the sprite an BIK? //----------------------------------------------------------------------------- bool CEngineSprite::IsBIK() { return ( m_hBIKMaterial != BIKMATERIAL_INVALID ); }
It should build and run fine.
Fixing Other Compiling Errors
Fixes:
- Cannot locate "gl/glaux.h" - this library is not even used anywhere, why a reference to it still exists is beyond me. It also seems to be obsolete. To get around this error simply comment out the line "#include <gl/glaux.h>" inside glview.cpp under the Glview project. Secondly right-click on the project Glview and go to Properties, then find Configuration Properties->Linker->Input and under Additional Dependencies remove the text "glaux.lib;"
- "error LNK2005: ... already defined in memoverride.obj" - this one is simple to deal with, and will probably occur in one or two projects. For each affected project simply right-click on it, go to Properties, then find Configuration Properties->Linker->Command Line and in the "Additional Options" text box add the following: "/FORCE:MULTIPLE". If that doesn't work, just change the configuration from "Debug" to "Release".
- Linker Errors relating to LIBC, LIBCMT, LIBCD, LIBCMTD, - Go to the client project properties -> Linker -> Ignore Specific Default Libraries -> and enter "libc;libcmtd;libcd;" without the quotation marks. Navigate to the same place in the server project properties and enter "libcd;libcmtd", again without the quotations.
Compiling Under Linux
VS 2010 introduces a new project file format (.vcxproj
) which is not compatible with the SDK's VprojToMake
tool. A third-party update adding support is available.