Skip to content

Building

Dreamy Cecil edited this page Mar 4, 2025 · 6 revisions

This guide explains how to build projects under any version of Serious Engine 1 on modern Windows systems.

Project setup

Before building, make sure to update all submodules in the repository:

git submodule update --init --recursive

Building under 1.10

Any project derived from this SDK can be built under Serious Engine 1.10, including its forks.

Available SDK

This SDK includes headers and libraries of the open-source release of Serious Engine 1:

  • Headers from the latest commit:
    • Includes/Engine110/Engine
  • Static libraries built using Visual Studio 2013:
    • Includes/Engine110/Engine.lib
    • Includes/Engine110/EngineD.lib
    • Includes/Engine110/EngineGUI.lib
    • Includes/Engine110/EngineGUID.lib

Additionally, it includes headers and libraries for Serious Sam Classics: Revolution:

  • Recreated headers based on 1.10:
    • Includes/EngineRev/Engine
  • Static libraries based on the latest Steam build:
    • Includes/EngineRev/Engine.lib
    • Includes/EngineRev/EngineGUI.lib
    • Includes/EngineRev/EntitiesV.lib
    • Includes/EngineRev/GameGUIV.lib
    • Includes/EngineRev/GameV.lib

Build configurations for 1.10 engines that you may encounter:

  • Debug_TSE110 - Debug build for Serious Engine 1.10.
  • Release_TSE110 - Release build for Serious Engine 1.10.
  • Debug_SSR110 - Debug build for Serious Sam: Revolution.
  • Release_SSR110 - Release build for Serious Sam: Revolution.

Clean 1.10 sources

If you wish to build this SDK under clean 1.10 sources, you must use 2013's compiler for proper linking with the included libraries.
Otherwise you need to manually rebuild them using your preferred compiler and replace existing static libraries under Includes/Engine110.

Forks of 1.10

If you wish to build this SDK under another version/fork of 1.10, follow these steps:

  1. Copy all header files from Engine folder into Includes/Engine110/Engine.
  2. Copy built static libraries and replace existing ones under Includes/Engine110.

Serious Sam: Revolution

If you wish to build this SDK under Revolution, you'll have to find a way to inject new code into the game.

  • The simplest way to do this is to build the "mod" part, which consists of Entities and Game projects, the libraries of which will have to replace the game's Entities.dll and Game.dll files, respectively.
  • Alternatively, you can use the Serious Engine 1 Injector for making the game run your code at specific points, allowing you to "hook" your library to the engine and execute new code (such as register new console commands in the shell).

Do note, however, that this SDK does not contain vanilla logic of Serious Sam: Revolution and will result in missing content (such as new weapons and gamemodes) and inability to play in multiplayer on vanilla servers or with clients running the vanilla version of the game.

Building under 1.05, 1.07, 1.50 etc.

This SDK is designed to be built under the most relevant versions of Serious Engine 1, more specifically 1.05 (TFE, TSE) and 1.07 (TSE).

In order to make the code compatible with these versions, you have to use MSVC 6.0 compiler. Since this SDK is designed for modern IDEs, you cannot use an old compiler out of the box.

  1. Install Microsoft Visual C++ 6.0 with Service Pack 6. See guide with details.
  2. Install Visual Studio 2010. See guide with details.
  3. Install Daffodil, which contains build configurations for old compilers for Visual Studio 2010. Source.
  4. (Optional) Install a Visual Studio of your choice (if it's newer than 2010).

Before building projects, make sure that their platform toolset is set to v60 (Project properties -> Configuration Properties -> General -> Platform Toolset).

Debugging

Visual Studio after 2010 cannot use program database files (.pdb) that are generated with MSVC 6.0, making traditional debugging impossible.

There are two ways around this:

  1. Attach to the running process using Microsoft Visual C++ 6.0 or Visual Studio 2010.
  2. Build under Serious Engine 1.10 using the same IDE that was used for the engine sources and debug using it.