• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

config/H07-May-2022-

doc/H07-May-2022-

lib/H07-May-2022-

resources/logo/H21-Sep-2021-

src/H03-May-2022-65,65343,574

tools/H21-Sep-2021-16,94414,603

.gitignoreH A D21-Sep-2021345 3433

.travis.ymlH A D21-Sep-20213.9 KiB116105

CODE_OF_CONDUCT.mdH A D21-Sep-20213.2 KiB7556

CONTRIBUTING.mdH A D21-Sep-2021299 65

LICENSE.mdH A D21-Sep-202114.8 KiB265218

Makefile.BSDH A D03-May-20222.9 KiB11881

Makefile.GNUH A D21-Sep-20213.8 KiB176136

README.mdH A D21-Sep-20216.6 KiB189131

configureH A D21-Sep-20214.8 KiB184139

meson.buildH A D21-Sep-20212.3 KiB121111

README.md

1# MVDSV: a QuakeWorld server
2![MVDSV Logo](https://raw.githubusercontent.com/deurk/mvdsv/master/resources/logo/mvdsv.png)
3
4[![Build Status](https://travis-ci.org/deurk/mvdsv.svg?branch=master)](https://travis-ci.org/deurk/mvdsv)
5
6**[MVDSV][mvdsv]** (MultiView Demo SerVer) has been the most popular **QuakeWorld** server in the world for more than a decade because of its ability to record every player's point of view in a server side demo and provide many different game modes to enjoy **QuakeWorld** with.
7
8## Getting Started
9
10The following instructions will help you get a **[MVDSV][mvdsv]** server up and running on your local machine from prebuilt binaries. Details on how to compile your own **[MVDSV][mvdsv]** binary will also be included to match specific architectures or for development purposes.
11
12## Supported architectures
13
14The following architectures are fully supported by **[MVDSV][mvdsv]** and are available as prebuilt binaries:
15* Linux amd64 (Intel and AMD 64-bits processors)
16* Linux i686 (Intel and AMD 32-bit processors)
17* Linux armhf (ARM 32-bit processors)
18* Windows x64 (Intel and AMD 64-bits processors)
19* Windows x86 (Intel and AMD 32-bit processors)
20
21## Prebuilt binaries
22You can find the prebuilt binaries on [this download page][mvdsv_builds].
23
24## Prerequisites
25
26None at the moment.
27
28## Installing
29
30For more detailed information we suggest looking at the [nQuake server][nquake-linux], which uses **[MVDSV][mvdsv]** and **[KTX][ktx]** as **QuakeWorld** server.
31
32## Building binaries
33
34### Build from source with meson
35
36Detailed commands to install packages, tools and compilation can be found in ``.travis.yml`` file.
37There are extra conditionals to install desired packages based on the TARGET.
38
39In general:
40
41- use Ubuntu 18.04 as virtual machine, check out details about it on code on [Travis CI website][travis-build-env]
42- install required packages for compilation
43- set up virtualenv and install python packages (required for meson and ninja builders)
44- run meson build for given directory (optionally with cross compilation settings)
45- run ninja to generate the binary file
46- you should have ``mvdsv`` file in ``build`` directory, put it in your quake server/ directory.
47
48#### Example for Linux amd64
49
50Install required packages:
51
52```bash
53$ sudo apt-get update
54$ sudo apt-get -y upgrade
55$ sudo apt-get -y install build-essential python-virtualenv python3-dev python3-pip ninja-build cmake gcc-multilib
56```
57
58Check out the code to the current directory:
59
60```bash
61git clone https://github.com/deurk/mvdsv.git .
62```
63
64Create virtualenv + install python packages:
65
66```bash
67$ virtualenv .venv --python=python3
68$ . .venv/bin/activate
69$ pip3 install --upgrade pip
70$ pip3 install -r requirements.txt
71```
72
73For more detailed TARGET see ``.travis.yml`` - ``matrix`` section.
74Export env var to define what target to compile, run the build commands.
75
76```bash
77$ export TARGET=linux-amd64
78$ rm -rf build
79
80$ meson build --cross-file tools/cross-compilation/${TARGET}.txt
81The Meson build system
82Version: 0.58.0
83Source dir: /home/taps/workspace/mvdsv
84Build dir: /home/taps/workspace/mvdsv/build
85Build type: cross build
86Project name: mvdsv
87Project version: undefined
88C compiler for the host machine: gcc (gcc 9.3.0 "gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
89C linker for the host machine: gcc ld.bfd 2.34
90C compiler for the build machine: cc (gcc 9.3.0 "cc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0")
91C linker for the build machine: cc ld.bfd 2.34
92Build machine cpu family: x86_64
93Build machine cpu: x86_64
94Host machine cpu family: x86_64
95Host machine cpu: x86_64
96Target machine cpu family: x86_64
97Target machine cpu: x86_64
98Run-time dependency threads found: YES
99Found pkg-config: /usr/bin/pkg-config (0.29.1)
100Found CMake: NO
101Run-time dependency libpcre found: NO (tried pkgconfig and cmake)
102Run-time dependency libcurl found: NO (tried pkgconfig and cmake)
103Library m found: YES
104Library dl found: YES
105Build targets in project: 1
106
107
108$ ninja -C build
109
110ninja: Entering directory `build'
111[47/47] Linking target mvdsv.
112
113```
114
115Check the output binary file:
116
117```bash
118$ file build/mvdsv
119build/mvdsv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=dedd6661cff55d457b15d2641c02baaf7be9a8b1, not stripped
120
121```
122
123In ``build/`` there will be ``mvdsv`` binary, change permissions to executable and copy it to quake directory to start quake server.
124
125Known issues:
126
127- When using cross compiling between 32bit and 64bit architecture make sure to reinstall *dev packages or run in chroot. See ``.travis.yml`` lines, there is ``apt-get remove`` command for this, because curl and pcre are in dependency but not required.
128- When changing architecture builds, for example for arm, apt-get will install/remove conflicting packages. Don't be surprised that you compile ``linux-amd64``, then ``linux-armv7hl`` and then back ``linux-amd64`` and it does not work because files are missing :)
129
130
131### Compiling on Ubuntu
132
133```bash
134sudo apt-get install gcc libc6-dev make
135git clone https://github.com/deurk/mvdsv.git
136cd mvdsv/build/make
137./configure
138make
139```
140
141This will create an executable binary at `mvdsv/build/make/mvdsv`.
142
143Copy it to your server.
144
145
146## Versioning
147
148For the versions available, see the [tags on this repository][mvdsv-tags].
149
150## Authors
151
152(Listed by last name alphabetic order)
153
154* **Ivan Bolsunov** - *qqshka*
155* **Dominic Evans** - *oldman*
156* **Anton Gavrilov** - *tonik*
157* **Dmitry Musatov** - *disconnect*
158* **Peter Nicol** - *meag*
159* **Alexandre Nizoux** - *deurk*
160* **Tero Parkkonen** - *Renzo*
161* **Vladimir Vladimirovich** - *VVD*
162
163Names of those contributors have been lost but they have also helped with this project: *bliP*, *danfe*, *hdworak*, *HighlandeR*, *jhodge*, *kreon*, *SD-Angel*.
164
165## Contributing
166
167Please read [CONTRIBUTING.md](CONTRIBUTING.md) for , and the process for submitting pull requests to us.
168
169## Code of Conduct
170
171We try to stick to our code of conduct when it comes to interaction around this project. See the [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) file for details.
172
173## License
174
175This project is licensed under the GPL-2.0 License - see the [LICENSE.md](LICENSE.md) file for details.
176
177## Acknowledgments
178
179* Thanks to **Jon "bps" Cednert** for the **[MVDSV][mvdsv]** logo.
180* Thanks to the fine folks on [Quakeworld Discord][discord-qw] for their support and ideas.
181
182[mvdsv]: https://github.com/deurk/mvdsv
183[mvdsv-tags]: https://github.com/deurk/mvdsv/tags
184[mvdsv_builds]: https://builds.quakeworld.nu/mvdsv
185[ktx]: https://github.com/deurk/ktx
186[nquake-linux]: https://github.com/nQuake/server-linux
187[travis-build-env]: https://docs.travis-ci.com/user/reference/bionic/
188[discord-qw]: http://discord.quake.world/
189