ccomrade / c1-launcher

Open-source Crysis executables.
306 stars 25 forks source link

FGPS Module via CMake #2

Closed ghost closed 4 years ago

ghost commented 5 years ago

Is it possible to compile entire FGPS (Crysis Wars 1.5 Game module) with this launcher via CMake (without VS2010 Toolsets)? What is needed for this?

ccomrade commented 5 years ago

Well, you probably want something like the launcher used in Crysis Warhead, right? Whole CryGame is integrated in EXE file there. It's possible to create the same thing for C1 and Wars, but there's a problem. CryGame DLL in C1 and Wars contains additional code that Crytek removed from the game SDK. The code is used during game startup. It's basically an implementation of IGameStartup interface used by the launcher to start the game. So, if you want to create Warhead-like launcher with integrated SDK code, you need to reverse engineer the hidden code. I've already reverse engineered most of the hidden code in C1 and it really works. The resulting launcher doesn't use CryGame DLL at all. There are still some things to do, so i've not published the code yet. Wars version of the hidden code is very similar probably.

By the way, you can use almost any version of VS to compile this launcher. VS2005 and higher are supported, including the latest version. Unfortunately, no other compiler is supported because the resulting launcher must be ABI-compatible with existing Crysis DLLs compiled by Crytek using VS2005.

ghost commented 5 years ago

Well, you probably want something like the launcher used in Crysis Warhead, right? Whole CryGame is integrated in EXE file there. It's possible to create the same thing for C1 and Wars, but there's a problem. CryGame DLL in C1 and Wars contains additional code that Crytek removed from the game SDK. The code is used during game startup. It's basically an implementation of IGameStartup interface used by the launcher to start the game. So, if you want to create Warhead-like launcher with integrated SDK code, you need to reverse engineer the hidden code. I've already reverse engineered most of the hidden code in C1 and it really works. The resulting launcher doesn't use CryGame DLL at all. There are still some things to do, so i've not published the code yet. Wars version of the hidden code is very similar probably.

By the way, you can use almost any version of VS to compile this launcher. VS2005 and higher are supported, including the latest version. Unfortunately, no other compiler is supported because the resulting launcher must be ABI-compatible with existing Crysis DLLs compiled by Crytek using VS2005.

We have problems with compiling the FGPS module on MSBuild higher than v100. I was interested in compiling through CMake. Can this really help?

ccomrade commented 5 years ago

You should always use CMake to generate build files. If you don't want to use CMake, you need to manually import all source files, set correct include paths, set compiler flags, create config.h from config.h.in etc. Building the launcher correctly without CMake is hard.

I chose CMake for this project because it's probably the best and also very lightweight build manager for C++. It just works on any platform with any compiler. Although this is Windows-only and also MSVC-only project, so some Microsoft thing could be used too, but they don't have anything better than CMake, do they? As far as i know all those MS things require certain version of Visual Studio to build the code. That's really bad because VS is very bloated software and i don't use it anyway. With CMake you need only Windows SDK to build the code, but you can still use it to generate project files for any VS version. That's quite impressive, isn't it? :)

ghost commented 5 years ago

You should always use CMake to generate build files. If you don't want to use CMake, you need to manually import all source files, set correct include paths, set compiler flags, create config.h from config.h.in etc. Building the launcher correctly without CMake is hard.

I chose CMake for this project because it's probably the best and also very lightweight build manager for C++. It just works on any platform with any compiler. Although this is Windows-only and also MSVC-only project, so some Microsoft thing could be used too, but they don't have anything better than CMake, do they? As far as i know all those MS things require certain version of Visual Studio to build the code. That's really bad because VS is very bloated software and i don't use it anyway. With CMake you need only Windows SDK to build the code, but you can still use it to generate project files for any VS version. That's quite impressive, isn't it? :)

Where can I write to speak with you personally?

ccomrade commented 5 years ago

Discord: Comrade#5265