Skip to content
/ qfusion Public
forked from Qfusion/qfusion

Source code for cross-platform OpenGL gaming engine

Notifications You must be signed in to change notification settings

Warsow/qfusion

 
 

Repository files navigation

qfusion

This is Warsow's fork of qfusion, the id Tech 2 derived game engine

License (GPLv2)

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Build instructions

Clone the repository and its submodules

git clone --recursive https://github.com/Warsow/qfusion

Building dependencies

You have to navigate to qfusion/third-party and build CMake-based angelscript and openal-soft subprojects. This has to be done once upon initial setup.

We use our custom static build of Qt. You have to download Qt 5.13.2 source bundle separately. MD5 Checksums are

7c04c678d4ecd9e9c06747e7c17e0bb9  qt-everywhere-src-5.13.2.tar.xz
39a0465610f70d9f877f42fc5337d1ac  qt-everywhere-src-5.13.2.zip

Build instructions follow.

Linux Assuming that you unpack and build stuff in `/opt/qt/` (which is assumed to be modifiable for your user), navigate to `/opt/qt/qt-everywhere-src-5.13.2/qtbase/src/platformsupport` and modify `platformsupport.pro` using this patch
-qtConfig(evdev)|qtConfig(tslib)|qtConfig(libinput)|qtConfig(integrityhid) {
+qtConfig(evdev)|qtConfig(tslib)|qtConfig(libinput)|qtConfig(integrityhid)|qtConfig(xkbcommon) {

(https://gitweb.gentoo.org/proj/qt.git/commit/?id=1c7312e8264050c2c4e4c4feb7522339e66f3743)

Configure Qt using these feature flags

/opt/qt/qt-everywhere-src-5.13.2$ ./configure \
-prefix /opt/qt/5.13.2 -static -release -opensource -confirm-license -opengl desktop \
-no-gif -no-ico -no-libjpeg -no-tiff -no-webp -no-sql-sqlite -no-sql-odbc -no-system-proxies \
-no-icu -no-dbus -no-evdev -no-egl -no-eglfs -no-linuxfb -no-iconv -no-alsa -no-pulseaudio \
-nomake tools -nomake examples -nomake tests -skip wayland -skip qtconnectivity -skip qtscript \
-skip qtdoc -skip qtdocgallery -skip qtactiveqt -skip qtcharts -skip qt3d -skip qtdatavis3d \
-skip qtgamepad -skip qtlocation -skip qtlottie -skip qtandroidextras -skip qtwinextras \
-skip qtx11extras -skip qtmacextras -skip qtnetworkauth -skip qtserialport -skip qtserialbus \
-skip qtpurchasing -skip qttranslations -skip qtremoteobjects -skip qtsensors -skip qtspeech \
-skip qtvirtualkeyboard -skip qtwayland \
-skip qtwebchannel -skip qtwebglplugin -skip qtwebengine -skip qtwebview -skip qtxmlpatterns \
-no-feature-testlib -no-feature-testlib_selfcover -no-feature-sql -no-feature-sqlmodel -no-feature-sessionmanager \
-no-feature-quick-designer -no-feature-quick-canvas -no-feature-qml-debug -no-feature-qml-profiler \
-no-feature-qml-preview -no-feature-qml-worker-script -no-feature-quick-particles \
-no-feature-quickcontrols2-fusion -no-feature-quickcontrols2-imagine -no-feature-quickcontrols2-universal \
-no-feature-codecs -no-feature-big_codecs -no-feature-pdf -no-feature-cssparser -no-feature-textodfwriter \
-no-feature-vulkan \
-qt-freetype -qt-harfbuzz -qt-xcb -qt-pcre -no-avx512 -silent --recheck-all

If it fails at "building qmake" stage, you have to modify respective sources/headers, so they include <limits> for modern toolchains.

/opt/qt/qt-everywhere-src-5.13.2$ gmake -j$(nproc)
/opt/qt/qt-everywhere-src-5.13.2$ gmake install
Windows Configure Qt using these feature flags (TODO: Strip more features following the Linux build)
configure -static -release -opensource -confirm-license -opengl desktop ^
-no-gif -no-ico -no-libjpeg -no-tiff -no-sql-sqlite -no-sql-odbc -no-qml-debug -no-system-proxies ^
-nomake tools -nomake examples -nomake tests -skip qtconnectivity -skip qtscript -skip qtdoc -skip qtactiveqt ^
-skip qtcharts -skip qt3d -skip qtdatavis3d -skip qtgamepad -skip qtlocation -skip qtlottie -skip qtandroidextras ^
-skip qtwinextras -skip qtx11extras -skip qtmacextras -skip qtnetworkauth -skip qtserialport -skip qtserialbus ^
-skip qtpurchasing -skip qttranslations -skip qtremoteobjects -skip qtsensors -skip qtspeech -skip qtvirtualkeyboard ^
-skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebview -skip qtxmlpatterns ^
-no-feature-testlib -no-feature-testlib_selfcover -no-feature-sql -no-feature-sqlmodel -no-feature-sessionmanager ^
-no-feature-quick-designer -no-feature-quick-canvas -no-feature-qml-profiler -no-feature-qml-preview ^
-no-feature-codecs -no-feature-big_codecs -no-feature-pdf -no-feature-cssparser -no-feature-textodfwriter -silent

Visit https://doc.qt.io/qt-5/windows-building.html for more information

Building and running the engine

Linux command line for configuration looks like this (assuming Qt is built and installed into /opt/qt/5.13.2)

qfusion/source$ cmake -DQFUSION_GAME="Warsow" -DCMAKE_PREFIX_PATH=/opt/qt/5.13.2 .

You can use various CMake configuration tools of your choice (this is aimed to Windows users). Just pass these two important variables (QFUSION_GAME, CMAKE_PREFIX_PATH) to the configuration.

qfusion/source$ make -j$(nproc)

Executables are found in qfusion/source/build subdirectory.

Having built the engine, you have run it from a directory which contains basewsw subdirectory with data files of Warsow 2.6+ (visit Warsow website/Warsow Discord for details).

About

Source code for cross-platform OpenGL gaming engine

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 89.5%
  • QML 5.7%
  • C 3.6%
  • GLSL 0.8%
  • CMake 0.4%
  • Objective-C 0.0%