Commit graph

692 commits

Author SHA1 Message Date
def 44ffaffb36 Tell cpack to strip files 2018-01-14 08:42:15 +01:00
heinrich5991 22080c840f Move teehistorian UUIDs into engine 2018-01-11 16:01:13 +01:00
heinrich5991 6c378b972b Add support for extra chunks in teehistorian
This allows to add rarely-used chunks without increasing the file format
version.
2018-01-11 15:59:53 +01:00
bors[bot] e0316acb23 Merge #978
978: Disable warnings for GTest r=Learath2 a=heinrich5991

Warnings for GTest broke the build because GTest turns warnings into
errors, which is undesirable if GTest is just used as a dependency.

See also https://github.com/google/googletest/issues/1373.
2018-01-10 16:50:31 +00:00
heinrich5991 00154bd280 Disable warnings for GTest
Warnings for GTest broke the build because GTest turns warnings into
errors, which is undesirable if GTest is just used as a dependency.

See also https://github.com/google/googletest/issues/1373.
2018-01-05 15:59:06 +01:00
heinrich5991 b3932c7842 Add interface headers to CMakeLists.txt 2018-01-02 17:18:17 +01:00
heinrich5991 eb31a52b83 Add very basic test for Unix sockets 2017-12-20 16:56:44 +01:00
bors[bot] a2f010c1fe Merge #941
941: Add cross-compiled DMG archives r=Learath2 a=heinrich5991

Currently they only contain the client and the archives are a lot larger
than the current release artifacts.
2017-12-08 14:20:49 +00:00
heinrich5991 f50260b31d Fail gracefully when trying to automatically download GTest 2017-11-28 01:22:39 +01:00
bors[bot] bad105c5e4 Merge #953
953: Overhauled job system r=Learath2 a=heinrich5991

The engine now takes `std::shared_ptr<IJob>`, this will ensure the
appropriate lifetime of the given parameters, it also allows for proper
destruction. Remove the now obsolete `IFetcher` interface and `CFetcher`
class.

Also adds some locks to `CUpdater`, previously it didn't have any locks
at all.
2017-11-27 23:34:54 +00:00
heinrich5991 fd36b8c8c8 Remove unused header file src/engine/shared/storage.h 2017-11-27 00:58:30 +01:00
heinrich5991 23734deb14 Call net_init in tests 2017-11-24 10:51:46 +01:00
heinrich5991 3f43624d21 Add a couple of tests for CJobPool 2017-11-24 10:33:42 +01:00
heinrich5991 a60320b87a Activate C++11 in old CMake as well
Old CMake doesn't understand `CMAKE_CXX_STANDARD` and similar, add the
parameter directly.
2017-11-23 03:10:25 +01:00
heinrich5991 4c63e26bb7 package_all now actually produces all packages 2017-11-17 22:32:56 +01:00
heinrich5991 4b45f857c7 DMG: Put version into Info.plist 2017-11-17 22:32:44 +01:00
heinrich5991 373a96a11f Don't install the portable component for make install 2017-11-17 17:43:52 +01:00
heinrich5991 44c0f872fe Replace cmake by ${CMAKE_COMMAND} in custom commands
This allows execution even when `cmake` isn't in the current `$PATH` or
`%PATH%` variable.
2017-11-17 15:55:22 +01:00
heinrich5991 dd5c26f81c Build the server launcher on macOS, package it 2017-11-17 14:37:29 +01:00
heinrich5991 194e4cffe7 Also package the server into DMGs 2017-11-16 10:28:55 +01:00
heinrich5991 eb6c8ea101 Allow DMG creation on macOS via hdiutil 2017-11-09 13:35:59 +01:00
heinrich5991 2593091380 Preliminary version of cross-compiled DMG archives
Currently they only contain the client and the archives are a lot larger
than the current release artifacts.
2017-11-09 00:16:52 +01:00
heinrich5991 17d3f4afa4 Put shaders into the data/ directory
Simplifies a lot of things
2017-11-08 22:19:47 +01:00
bors[bot] 5528cde5f6 Merge #869
869: Complete rework of the ghost and race recorder r=Learath2 a=Redix

This PR fixes a lot of issues with the ghost and race recorder, introduces a new ghost file format and implements some pretty useful features.

**A quick overview:**
 - When you cross the start line multiple times, both (ghost and recorder) will only restart if it is a non-solo server
 - If available, both will use the race timer to recognize the start instead of searching for the start line
 - Fastcap support for both
 - The recorder immediately starts when the Tee spawns, so the preparation steps (which are quite important for speedruns) will be included in the demo. If you do not cross the start-line within 20 seconds, it will stop the demo until you really start.
 - Better ghost menu (colors, reloading, deleting and saving ghosts)
 - The ghosts are more resistant against lags (old ones were sometimes completely useless due to small lags)
 - New ghosts files are significantly smaller
 - Cleanup, bugfixes..


**About the new ghost format (version 4/5):**
This format is used by Teerace for over a year now. The code for handling the binary files was moved to the engine. It includes an auto updater which creates a backup of all ghosts and converts them to the new format afterwards. The major differences from the format used by DDNet right now (version 2), are the ability to store multiple types of data, the usage of delta-encoding and a more portable header.

For whatever reason, the ghost stores values for every predicted tick, but without tick information, so lost snapshots can make them unusable. The new code uses the original values from the snapshots including ticks but it can also handle the old ones without. Since hardly any server uses the high bandwidth option this practically reduces the file size.

Like the demo recorder the ghost recorder directly stores the data to a file (every 50 snapshots) instead of writing the whole file at the end of the race. Indeed this can be changed with only a few lines if the old behavior is preferred.

The updater can handle version 2 (DDNet) and 3 (old teerace format, only slightly different from version 2) files. The updating already happens when the files are scanned for generating the list in the menu and not only when you activate them. The change from version 4 to 5 was only needed due to a bug in the implementation, the ghost loader can read both.

Some numbers about the file size: (map: hotrun, both about 30 seconds)

 - Old ghost: 30.4 kB (converted: 10.7 kB)
 - New ghost: 5.4 kB


**One thing about the race recorder:**
The old implementation compared the new file only with the first file it found for the particular map. The new one compares with all related demos and deletes them possibly, so that only the best demo is left. Since DDNet can also store the demos without name, this might also delete demos from other players, that you might have in your directory.
To prevent this I at least check whether the demo contains the player name if `cl_demo_name` is on. 
In my opinion the better solution would be to remove `cl_demo_name` and always use the player name.
2017-10-30 20:27:10 +00:00
def 04820b44f8 Simplify emoji 2017-10-28 09:08:17 +02:00
Dennis Felsing 77ca35567d Merge pull request #930 from heinrich5991/pr_ddnet_crosscompile_mac
Allow cross-compilation from Linux to macOS
2017-10-26 08:42:34 +02:00
heinrich5991 ab2738ca1b Allow cross-compilation from Linux to macOS 2017-10-25 16:57:25 +02:00
Dennis Felsing 233ec0a5f2 cmake fixes 2017-10-25 10:35:33 +02:00
heinrich5991 f3abdd43cb Add crypto and ssl if using bundled curl
Fixes #926.
2017-10-24 15:29:53 +02:00
Dennis Felsing 19a8054df6 Merge pull request #925 from heinrich5991/pr_ddnet_cmake_fix_bundle_libs
Only use bundled includes only if also using bundled libs
2017-10-24 12:24:50 +02:00
Dennis Felsing bf2edba73f Merge pull request #918 from heinrich5991/pr_ddnet_test_info
Add `CTestInfo` class, add test for create-close-remove process
2017-10-24 12:20:46 +02:00
heinrich5991 5ef723c7f6 Only use bundled includes only if also using bundled libs
Fixes #867. Fixes #922.
2017-10-24 12:10:46 +02:00
Dennis Felsing 2d889a0584 Merge pull request #920 from Jupeyy/master
VBO deletion after VAO deletion & viewport adjustment for dpi scaled displays at fullscreen
2017-10-24 07:58:37 +02:00
Dennis Felsing d9ababfce7 Merge pull request #921 from heinrich5991/pr_ddnet_crosscompile
Add toolchain files for MinGW 32- and 64-bit cross-compilation
2017-10-24 07:56:34 +02:00
Jupeyy ada954ea4e add shader directory to the install directory 2017-10-23 17:58:55 +02:00
heinrich5991 b1db90dbaa Don't build GTest in the default target 2017-10-23 14:43:33 +02:00
heinrich5991 8b1559ae14 Drop CMake 3.4 support for MSVS
Windows users don't have old versions of CMake from their repositories,
Visual Studio installs CMake 3.9.
2017-10-23 13:58:44 +02:00
heinrich5991 b463197348 Add CTestInfo class, add test for create-close-remove process 2017-10-23 00:13:53 +02:00
Jupeyy daee0a13a8 use spaces 2017-10-22 18:32:04 +02:00
Jupeyy 205b054026 move manifest to other directory and add MinGW support 2017-10-22 18:06:20 +02:00
Jupeyy 9a4efe758c use proper CMake 3.4 support for manifest files 2017-10-22 16:44:55 +02:00
Jupeyy 162b24c2b3 respect the CFG dir 2017-10-22 04:52:33 +02:00
Jupeyy 907622e108 don't read the manifest of the target 2017-10-22 04:10:21 +02:00
Jupeyy 152a71546f Add DPI awareness support for MSVC compiling for Win8.1 and Win10 2017-10-22 03:34:15 +02:00
heinrich5991 d01c892bbd Don't copy files twice in CMakeLists.txt 2017-10-20 12:22:46 +02:00
Dennis Felsing f679c3e1bd GLEW_STATIC 2017-10-20 11:52:18 +02:00
Dennis Felsing 6c7f6e3a7e glew on macosx as well... 2017-10-20 11:49:00 +02:00
Dennis Felsing 5a75dc7f27 New glew try 2017-10-20 11:35:44 +02:00
Dennis Felsing 88c0778b21 Bundle glew instead 2017-10-20 11:12:27 +02:00
Dennis Felsing d6999bb726 Merge "Pull Request using OpenGL 3.3" 2017-10-18 12:49:27 +02:00
heinrich5991 6452c7e5c3 Enable automatic download of GTest on Windows by default 2017-10-15 10:25:26 +02:00
heinrich5991 ea978e1db7 Add a flag -DDOWNLOAD_GTEST to automatically download and build GTest
Enable tests on Circle CI, macOS on Travis and Appveyor.
2017-10-15 09:57:21 +02:00
heinrich5991 e989ffad78 Rename async_* to aio_* and add test for nondivisible buffer lengths 2017-10-13 02:48:42 +02:00
heinrich5991 2fc018aac3 Add asynchronous file output, port dbg_msg()s to that system
Also add tests.
2017-10-10 04:11:14 +02:00
heinrich5991 7de42a1414 Couple of thread fixes 2017-10-10 00:08:24 +02:00
Learath2 d15dcd3c58 Merge pull request #871 from heinrich5991/ddnet_teehistorian
Teehistorian
2017-10-09 18:42:27 +02:00
Redix 134a79a225 Move RaceHelper to src/game/client 2017-10-06 22:13:35 +02:00
Redix b1e7138847 Added ghost file handling classes 2017-09-28 16:01:56 +02:00
heinrich5991 f43480aeed Add testing infrastructure for teehistorian 2017-09-28 02:03:30 +02:00
heinrich5991 72a17da716 Change to C++11 in CMakeLists.txt, bam.lua 2017-09-21 23:34:51 +02:00
Dennis Felsing 94c7c8d864 Use C++14 2017-09-21 15:11:09 +02:00
heinrich5991 6ef9c8dbcd First working version of teehistorian
teehistorian records all inputs from the players as well as the player
positions in each tick. It stores this info in a highly compressible
output format (I've achived 5x compression using xz or bz2).
2017-09-20 02:16:11 +02:00
Jupeyy cb1ab7ff9e sort opengl_sl files alphabetically 2017-09-16 18:58:24 +02:00
def 75d3eeaa09 Try linking against security framework on macosx 2017-09-16 11:39:09 +02:00
Dennis Felsing f60eb5658f Merge pull request #836 from heinrich5991/pr_ddnet_unify_icons
Unify icons for gcc and MSVC, fix server icon
2017-09-16 11:18:40 +02:00
heinrich5991 a34b1f4dd7 Add compatibility with older CMake for package 2017-09-13 22:38:25 +02:00
Jupeyy 7e0146be97 replace tabs with spaces 2017-09-13 20:09:40 +02:00
Jupeyy de43d410fe merged cmakelist 2017-09-12 21:03:27 +02:00
Jupeyy 629bf2c5f9 Merge branch 'master' of https://github.com/ddnet/ddnet 2017-09-12 20:24:58 +02:00
Jupeyy 4d8cf36e29 add GLEW to cmake 2017-09-12 20:03:06 +02:00
heinrich5991 8b2e31620f Compatibility with older CMake
Copy each file individually, only pass --type parameter for creating
zips.
2017-09-05 21:52:54 +02:00
heinrich5991 45d944162a Add package targets independent of CPack
This makes packaging compatible to CMake versions prior to CMake 3.6.
2017-09-05 16:00:50 +02:00
heinrich5991 38c26de47b Add install, package and package_source targets to CMake
On Linux, `install` installs DDNet into the normal file system (root
rights required).

`package` tries to create an archive similar to today's release archives
and `package_source` tries to create a source archive similar to today's
source archives.
2017-09-05 15:55:38 +02:00
def 89ed22e8d8 Introduce ddnet-info.json
- Single json file containing all information for the client
- Fetched from https://info.ddnet.tw/info?name=deen
- Replaces versionsrv, news, ddnet-maps.json and ddnet-ranks.json
- Servers are sorted by most popular ones for respective player
- Always stays < 100 ms response time, compared to occasional 50 s for
  old ddnet-ranks.json
2017-09-03 17:42:04 +02:00
heinrich5991 659e1ff527 Merge pull request #853 from Redix/pr_ghost_time
Ghost and Race demo time extraction fix
2017-08-31 12:31:20 +02:00
Redix a396e40c5e Move race helper functions to own cpp file
Fix some style issues
2017-08-31 00:17:16 +02:00
heinrich5991 de2fd75a16 Add possibility to write tests
Also add a test for `IStorage::StripPathAndExtension`
2017-08-30 21:57:55 +02:00
Redix f1f7e4e30b Fix ghost and race recorder time parsing 2017-08-30 21:44:27 +02:00
sctt 0849fa6024 fixing map_resave and adding map_replace_image
Update datafile.h

Update datafile.cpp

Update datafile.cpp

Update map_resave.cpp

Update datafile.h

Update map_resave.cpp

Update datafile.h

Update datafile.cpp

Update config_store.cpp

Update config_retrieve.cpp

Update io.cpp

Update gamecontext.cpp

Update config_store.cpp

Update CMakeLists.txt

Create map_replace_image.cpp

Update map_replace_image.cpp

fixing bug with height and witdth
2017-08-29 16:21:16 +02:00
Learath2 77ca505e74 Do not continue without python
We can not compile without python anyways.
2017-08-03 18:44:36 +02:00
heinrich5991 05f136fdfb Unify icons for gcc and MSVC, fix server icon 2017-08-01 21:43:56 +02:00
heinrich5991 523f35205d Statically link standard libraries in MinGW for CMake
Hopefully fixes the CMake MinGW build.
2017-08-01 01:37:54 +02:00
Dennis Felsing fd1b6763e1 Merge pull request #821 from heinrich5991/pr_ddnet_cmake_list_files
List all source files instead of globbing them in `CMakeLists.txt`
2017-07-31 20:45:13 +02:00
heinrich5991 52e42c2f74 Add CMake config option PREFER_BUNDLED_LIBS
This makes CMake look at the provided libraries before considering
system libraries. Enable this by default on Windows.

Fixes #830.
2017-07-31 18:30:24 +02:00
def cb6158dd6a safeseh:no only for msvc 2017-07-30 14:35:06 +02:00
heinrich5991 83742a98ca List all source files instead of globbing them in CMakeLists.txt
This seems to be wanted by CMake, it results in never having to re-run
`cmake`.

See e.g. https://stackoverflow.com/a/18538444/870079.
2017-07-30 11:41:52 +02:00
Learath2 4622ab4cb6 Merge pull request #814 from heinrich5991/pr_ddnet_fix_cmake_mac
Fix the CMake Mac build
2017-07-30 11:38:12 +02:00
heinrich5991 6247aa0c7f Enable -Wextra and -Wformat=2
Also annotate `dbg_msg`, `str_format` and `str_timestamp_ex` so that the
compiler can determine whether the format strings are correct.

Fix the compiler warnings generated by these extra warnings -- some of
them were security issues.
2017-07-27 20:38:17 +02:00
heinrich5991 fd8bccb0f4 Fix the CMake Mac build
Fixes #805.
2017-07-26 04:30:56 +02:00
def 3de72f66e3 mysql needs CONF_SQL defined everywhere 2017-07-23 01:36:36 +02:00
def 46f30a2fc1 Fix mysql cmake build 2017-07-22 21:53:55 +02:00
def 8e4a4d673f New Windows MSVC try 2017-07-22 11:46:43 +02:00
def 39b0c9282f SAFESEH:NO 2017-07-22 09:59:27 +02:00
def 8082a461ce Windows linker fix 2017-07-22 00:27:52 +02:00
def 609adcfe8c Windows linker fix 2017-07-22 00:20:29 +02:00
def 6b9386ce86 Windows compiler fix 2017-07-22 00:02:00 +02:00
def 0db98b218b Fix icons 2017-07-21 23:54:58 +02:00
def a7439af1ff Syntax 2017-07-21 23:12:07 +02:00
def 6a76bf9b73 Add some debugging to cmake 2017-07-21 23:06:07 +02:00
def 41d9de997c ddnet-libs submodule and some fixes 2017-07-20 23:07:15 +02:00
def 2365958227 Fix cmake build of map_extract 2017-06-12 21:23:45 +02:00
heinrich5991 743c58e4ae Revert "Fix OSX cmake build"
This reverts commit 3406f01ff9.
2017-06-09 19:34:01 +02:00
Learath2 3406f01ff9 Fix OSX cmake build
A little crude but it works.
2017-06-09 16:05:04 +02:00
heinrich5991 5ae37e6c72 Add protocol extension with UUIDs
This system can easily be extended by independent authors without
collisions, something the old system with plain increasing integers did
not allow.

Do this by utilizing the previously unused message code `NETMSG_NULL`
which has a value of 0.

This works for engine and game messages, snapshot items and events.
2017-05-25 00:52:43 +02:00
heinrich5991 713b3db4a2 CMakeLists.txt: Make the versionsrv's dependency on nethash.cpp explicit 2017-03-28 12:50:19 +02:00
Dennis Felsing 90b51d140a Merge pull request #688 from heinrich5991/pr_ddnet_cmake_client_link_order
Fix link order for the client libraries
2017-03-20 08:29:30 +01:00
heinrich5991 d52870cb35 Remove GREATER_EQUAL (introduced in CMake 3.7) 2017-03-19 17:18:17 +01:00
heinrich5991 57009f6467 Generator expressions using COMPILE_LANGUAGE are only available from 3.3 2017-03-19 17:18:17 +01:00
heinrich5991 efb43ddff8 Remove usages of target_sources
This command would require CMake 3.1.
2017-03-19 17:18:17 +01:00
heinrich5991 5eb2068f75 Check if -fstack-protector-all works before using it
MinGW apparantly accepts this flag, but can't successfully link
afterwards.
2017-03-18 11:55:50 +01:00
heinrich5991 d10ab196f5 Fix link order for the client libraries
Fixes #686.
2017-03-18 01:20:55 +01:00
heinrich5991 5b8052ff9d CMakeLists.txt: Check for _FORTIFY_SOURCE defines even harder 2017-03-13 16:45:27 +01:00
Redix 50be0ab7cf Use static CRT on windows 2017-03-12 17:41:57 +01:00
Redix 2b91785415 Use multiple cores in MSVC 2017-03-12 17:28:42 +01:00
Redix dfdd08ae7a Disable some warnings on win64 2017-03-12 17:28:40 +01:00
Redix 3911504bd9 Minor cmake fixes
zlib is already included in DEPS_CLIENT
2017-03-12 16:19:23 +01:00
Redix 8b418292c2 Fix typo in CMakeLists.txt 2017-03-12 15:56:44 +01:00
heinrich5991 253857e236 CMakeLists.txt: Create the generated source directory
Problem was reported on IRC, in #teeworlds on Quakenet.
2017-03-11 13:25:52 +01:00
heinrich5991 fad7989243 CMakeLists.txt: Check for _FORTIFY_SOURCE before defining it 2017-03-07 16:47:27 +01:00
heinrich5991 51b4a793b8 CMakeLists.txt: Add icon to DDNet executable on Windows 2017-03-07 15:32:11 +01:00
heinrich5991 a6983d329c CMakeLists.txt: Copy over data files and DLLs 2017-03-07 15:24:08 +01:00
heinrich5991 4389737288 CMakeLists.txt: Handle the static library case on Linux 2017-03-07 13:39:23 +01:00
heinrich5991 d98abf35db Rename WEBSOCKETS to CONF_WEBSOCKETS 2017-03-07 13:03:37 +01:00
heinrich5991 c201d7959c Enable -Wdeclaration-after-statement for compat with MSVC 2017-03-07 13:02:37 +01:00
heinrich5991 0d342f139c CMakeLists.txt: Add tools target 2017-03-03 15:23:18 +01:00
heinrich5991 9b0561bbc0 CMakeLists.txt: Add some EXCLUDE_FROM_ALL 2017-03-03 15:17:12 +01:00
heinrich5991 e6dcd94fc4 CMakeLists.txt: Fix Windows build and ignore some more warnings 2017-03-03 15:10:21 +01:00
heinrich5991 8407416042 CMakeLists.txt: Move everything to target_* commands 2017-03-03 15:04:13 +01:00
heinrich5991 0fb13159d5 CMakeLists.txt: Squelch some warnings on Windows 2017-03-03 13:39:06 +01:00
heinrich5991 254793604c CMakeLists.txt: Group sources by directory in MSVC 2017-03-03 13:29:35 +01:00
heinrich5991 1157a9a835 CMakeLists.txt: Windows support? 2017-03-03 12:23:51 +01:00
heinrich5991 a7e68fbf1b CMakeLists.txt: Fix a couple of uninitialized variables 2017-03-03 12:23:51 +01:00
heinrich5991 98f3c82c29 CMakeLists.txt: Fix SQL config 2017-03-03 12:23:51 +01:00
heinrich5991 1c7be368f6 CMakeLists.txt: Make external dependencies to OBJ libs 2017-03-03 12:23:51 +01:00
heinrich5991 e3839e4bf2 CMakeLists.txt: Build tools 2017-03-03 12:23:51 +01:00
heinrich5991 6bf0862c30 Use add_library(... OBJECT ...) for internal targets
Also add a few smaller targets: mastersrv, twping, versionsrv.
2017-03-03 12:23:51 +01:00
heinrich5991 6980bb7b02 Improve the CMakeLists.txt to search for the bundled libs 2017-03-03 12:23:51 +01:00
heinrich5991 4912312fb9 Make dependency errors less fatal, to show all of them at once 2017-02-23 16:29:13 +01:00
necropotame 2815a7e042 Cleanup, better separation between each part, more options, check for missing dependencies 2017-02-23 16:27:33 +01:00
necropotame 8c7608f1bb Set the default build type to 'Release' 2017-02-23 16:23:16 +01:00
necropotame eff3ca8bf3 Change CMake required version from 3.7 to 2.8 2017-02-23 16:23:16 +01:00
heinrich5991 5d61aa0b6e Add CMakeLists.txt that work on my machine
It probably doesn't work on Windows, at least.
2017-02-23 14:16:32 +01:00