Skip to content
This repository was archived by the owner on Nov 24, 2021. It is now read-only.

Common Issues

Jeremy Lorelli edited this page May 11, 2020 · 2 revisions

Common Issues

This page will contain notes regarding common issues experienced while building or working on Quiver. Before going into this page, you should read the README in the root of the Engine repo. It might have some useful info!

If you have any additional questions you can join our Discord or DM me on Discord (JJl77#6673)

General Building

Linker complains about not finding KeyValuesSystem, et al.

You need to link against vstdlib in the project you're compiling. tier1 uses some stuff from vstdlib iirc, thus any project in Source depends on vstdlib too.

Linker complains about not finding V_strncmp, et al.

You need to link against tier0

Building On Linux

The Quiver Runtime doesn't work!

As stated in the readme on that repo, it's not quite finished. I've created the runtime to ease building across different Linux distros, so it's optional. Right now the Linux port is in progress, so the runtime doesn't have much of a use, since nobody can build the engine for linux anyways.

CMake tries to build Quiver in 64-bit mode even though I don't want it to

Delete your CMake cache and pass these parameters to CMake: -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32. It should automatically find and check the libraries you're linking against

CMake is not updating the flags I pass to it (e.g. -DCMAKE_C_FLAGS=-m32 does nothing)

Delete your CMake cache and regenerate. You can do this by deleting your build/ directory.

CMake can't find OpenGL

Install libgl1 on your system and it should work. Packages are a bit tricky, so you can google which package provides the opengl lib, etc.

Can I cross compile for windows?

Yes, you can use Mingw-w64 to cross compile for Windows. See the Wiki page for details on this.

When building utils, some things fail because they're trying to access fields in the intrinsic type __m128.

This is actually due to the implementation of x86 intrinsics being different on Windows than it is on Linux. Some utils have not been ported yet.

build fails when building with Clang

Currently the engine contains a ton of non-conforming C++ code (thanks MSVC!), so you need to build with -fpermissive. Oddly, the -fpermissive on clang is a lot less permissive than the -fpermissive flag on GCC, so right now you can only build with GCC.

Building on Windows

Hammer build fails with many linker errors

Make sure you've installed MFC and ATL (read the readme for more info on this). If the errors persist, contact one of us and maybe we can help.

GenerateProjects.bat says it can't find qpc!

Run git submodule init && git submodule update to get all the required dependencies

The batch script used to build shaders says "Perl is not recognized as an internal or external command..."

Make sure to install Perl before running the script. I personally use strawberry perl (when I'm using Windows that is)

(Mingw) When building the engine with Mingw, it fails with the linker error undefined reference to CreateEventA or something similar

Mingw's headers are a bit different than Windows' headers, so some macros are defined where they would normally not be on Windows. This linker error is due to a sneaky macro replacing CreateEvent in a class definition with CreateEventA. This can happen for similar macros. To fix it, add #undef CreateEvent at the top of your header after the includes block.

Other Issues

Console is spammed with asserts regarding mathlib initialization

Mathlib is statically linked to each project that needs it. Every project that is an executable or DLL must explicitly initialize mathlib using Mathlib_Init.

My game is lagging really bad

There are two solutions to this:

  1. Build the engine in release mode (lots of lag can be attributed to no optimization)
  2. Disable vphysics simulation using vphysics_pause console command. Right now, vphysics is not well optimized, and will destroy your FPS when anything complex is happening.
Clone this wiki locally