Commit graph

712 commits

Author SHA1 Message Date
Robert Müller 8fa7610463 remove obsolete engine/shared/message.h 2021-08-20 16:23:29 +02:00
BloodWod 5aafa27b0f change name file 2021-08-14 18:40:58 +05:00
BloodWod 75289d1272 add strong/weak icon 2021-08-14 03:48:49 +05:00
Jupeyy 8451775821 Make components member of CGameClient 2021-07-12 12:07:31 +02:00
Jupeyy 9dfea5511a Use cpp 2021-06-24 17:19:17 +02:00
Freddie Wang 66caa896b9 Add japanese condensed font 2021-06-04 21:15:29 +08:00
bors[bot] efde7523e4
Merge #3772
3772: Add client-side HTTP server info r=def- a=heinrich5991

Summary
=======

The idea of this is that clients will not have to ping each server for
server infos which takes long, leaks the client's IP address even to
servers the user does not join and is a DoS vector of the game servers
for attackers.

For the Internet, DDNet and KoG tab, the server list is entirely fetched
from the master server, filtering out servers that don't belong into the
list.

The favorites tab is also supposed to work that way, except for servers
that are marked as "also ping this server if it's not in the master
server list".

The LAN tab continues to broadcast the server info packet to find
servers in the LAN.

How does it work?
=================

The client ships with a list of master server list URLs. On first start,
the client checks which of these work and selects the fastest one.
Querying the server list is a HTTP GET request on that URL. The
response is a JSON document that contains server infos, server addresses
as URLs and an approximate location.

It can also contain a legacy server list which is a list of bare IP
addresses similar to the functionality the old master servers provided
via UDP. This allows us to backtrack on the larger update if it won't
work out.

Lost functionality
==================

(also known as user-visible changes)

Since the client doesn't ping each server in the list anymore, it has no
way of knowing its latency to the servers.

This is alleviated a bit by providing an approximate location for each
server (continent) so the client only has to know its own location for
approximating pings.
## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2021-05-26 21:00:49 +00:00
Jupeyy b7adc5a690 Add UI Ex class to share common ui implementations
between menus and editor for example
2021-05-26 15:02:33 +02:00
heinrich5991 bce7a4f84e Add serverbrowser ping cache 2021-05-14 01:00:41 +02:00
heinrich5991 355c6fccd3 Add sqlite3 to the client 2021-05-14 01:00:41 +02:00
heinrich5991 436e202cbd Add client-side HTTP server info
Summary
=======

The idea of this is that clients will not have to ping each server for
server infos which takes long, leaks the client's IP address even to
servers the user does not join and is a DoS vector of the game servers
for attackers.

For the Internet, DDNet and KoG tab, the server list is entirely fetched
from the master server, filtering out servers that don't belong into the
list.

The favorites tab is also supposed to work that way, except for servers
that are marked as "also ping this server if it's not in the master
server list".

The LAN tab continues to broadcast the server info packet to find
servers in the LAN.

How does it work?
=================

The client ships with a list of master server list URLs. On first start,
the client checks which of these work and selects the fastest one.
Querying the server list is a HTTP GET request on that URL. The
response is a JSON document that contains server infos, server addresses
as URLs and an approximate location.

It can also contain a legacy server list which is a list of bare IP
addresses similar to the functionality the old master servers provided
via UDP. This allows us to backtrack on the larger update if it won't
work out.

Lost functionality
==================

(also known as user-visible changes)

Since the client doesn't ping each server in the list anymore, it has no
way of knowing its latency to the servers.

This is alleviated a bit by providing an approximate location for each
server (continent) so the client only has to know its own location for
approximating pings.
2021-05-14 01:00:39 +02:00
heinrich5991 782c826381 Add secure_rand_below function
It works by masking the numbers and the using rejection sampling to
ensure a uniform generation.
2021-05-12 17:02:02 +02:00
def 6465e482a1 Add unit test for empty range 2021-05-06 15:39:34 +02:00
Jupeyy b8f96ce500 Allow GLES3 coexists with OpenGL on Linux 2021-05-02 04:39:02 +02:00
Jupeyy e05abbaa91 Remove GL includes from headers 2021-05-01 23:56:30 +02:00
Jupeyy c0d6ce6d25 Add GLES support 2021-05-01 01:39:37 +02:00
Panagiotis Vasilopoulos 6058019141
Fixed library dependencies for the Haiku operating system 2021-04-18 07:57:24 +03:00
bors[bot] 6572f9e4fe
Merge #3779
3779: Copied Teeworld patches for the Haiku operating system r=def- a=panos

I initiated a port of ddnet and received a lot of help from the IRC in order to do so as seen in #2986. Unfortunately, my efforts went stale after one point. Fortunately, however, @threedeyes released a [set of patches for Teeworlds](2ea72967cd/games-action/teeworlds/patches/teeworlds-0.7.5.patchset). I decided to take down my repository with my own work and attempt to port Gerasim's work, which includes code for setting the directories that ddnet should use the same way one would do so in a Mac OS X-system in `src/base/system.c`, which was precisely the part where I got stuck in on my first attempt.

The changes have not been tested thoroughly yet and were the result of methodic copying and pasting.

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: Panagiotis Vasilopoulos <hello@alwayslivid.com>
2021-04-17 18:15:34 +00:00
Panagiotis Vasilopoulos 6c02076c05 Copied Teeworld patches for the Haiku operating system
Co-authored-by: Gerasim Troeglazov <3dEyes@gmail.com>
2021-04-17 20:10:56 +02:00
heinrich5991 8d6b62d8f8 Fix parsing an IPv6 address without port
The port in the NETADDR struct was left uninitialized.

Add some tests to ensure behavior.

CC #3774 #3775
2021-04-17 16:05:39 +02:00
def ce2bf096bd Move autoexec_server.cfg to data (fixes #3612) 2021-03-21 17:48:33 +01:00
Jupeyy 06dd469195 Tell MSVC that main is still entry 2021-03-05 17:36:47 +01:00
Jupeyy c20b9801d4 Don't allocate the windows console default 2021-03-01 15:25:45 +01:00
bors[bot] 2fb1c723c9
Merge #3568
3568: Get rid of the MySQL C++ connector as a dependency and disable C++ exceptions r=Learath2 a=heinrich5991

We now use the C API directly. This has the advantage of using one
obscure dependency less, as the C++ connector also used the C API.

Also remove exceptions from database code.

The equivalent code with return codes is a human-assisted mechanical
translation of the old code, no attempts to improve correctness were
made.

This allows us to enable the -fno-exceptions flag.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [x] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2021-02-24 16:43:16 +00:00
heinrich5991 9568d1055a Remove exceptions from database code
The equivalent code with return codes is a human-assisted mechanical
translation of the old code, no attempts to improve correctness were
made.

This allows us to enable the -fno-exceptions flag.
2021-02-24 17:39:48 +01:00
heinrich5991 d7019a244e Get rid of the MySQL C++ connector as a dependency
We now use the C API directly. This has the advantage of using one
obscure dependency less, as the C++ connector also used the C API.
2021-02-24 17:34:08 +01:00
Alexander Akulich b0c0fb316c Get rid of gamemode.h with confusing definitions
We also have GAME_NAME macro in game/version.h and the macros
from gamemode are not used anywhere else.
2021-02-23 18:26:16 +03:00
bors[bot] e6846827cf
Merge #3614
3614: Mac OS X -> macOS r=heinrich5991 a=def-

Changing the filenames of the releases will be a bit more annoying, so
not sure we want to do that

> Apple shortened the name to "OS X" in 2012 and then changed it to "macOS" in 2016

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2021-02-12 13:49:29 +00:00
def e985632fae OSX -> macOS
Changing the filenames of the releases will be a bit more annoying, so
not sure we want to do that
2021-02-12 13:41:41 +01:00
def 351705b6fb Add discord dylib on Mac 2021-02-12 12:32:45 +01:00
heinrich5991 76d7835fc0 Properly support CMake 3.8 and up for dynamic linking
Messed it up when trying to unify CMake 3.8+ and CMake 3.14+ handling.
2021-02-03 00:28:49 +01:00
heinrich5991 211b1d9155 Allow to dynamically load the Discord SDK on Linux
Set `-DDISCORD_DYNAMIC=ON` on the CMake command line to enable this
feature.

Fixes #3580.
2021-02-01 12:20:11 +01:00
bors[bot] 2b5723cdef
Merge #3492 #3559 #3561 #3565
3492: Support F-Client and replace non-extended extension messages r=Learath2 a=heinrich5991

This continues what #3439 started, and also replaces non-extended messages that are DDRace extensions with extended messages. The DDNet server still sends the old message to old clients and the DDNet client still understands the old messages.

Supersedes #3439.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


3559: Don't highlight us if we have no name (alternative fix for #3554) r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


3561: Fix input message position in teehistorian files r=heinrich5991 a=Zwelf

Previously the message was recorded when incoming. But the time when the input should apply wasn't recorded. Now inputs are recorded right before they get applied in the game world.

And record exact tick where load/save result is returned.

## Checklist

- [x] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


3565: Add Arabic language translation by .Yukki r=heinrich5991 a=def-

![screenshot-20210131@093216](https://user-images.githubusercontent.com/2335377/106378755-747d7780-63a7-11eb-9553-6a1898907441.png)

## Checklist

- [x] Tested the change ingame
- [x] Provided screenshots if it is a visual change
- [x] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [x] Considered possible null pointers and out of bounds array indexing
- [x] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: fokkonaut <35420825+fokkonaut@users.noreply.github.com>
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
Co-authored-by: def <dennis@felsin9.de>
Co-authored-by: Zwelf <zwelf@strct.cc>
2021-01-31 14:37:48 +00:00
def 6fbc8187b5 Fix Windows Discord build
CMake Error in CMakeLists.txt:
  IMPORTED_IMPLIB not set for imported target "discord-shared" configuration
  "Release".
2021-01-31 10:17:21 +01:00
heinrich5991 c2b28f124b Put the Discord stuff into its own file 2021-01-31 10:17:21 +01:00
Edgar 96db08b760 add discord rich presence 2021-01-31 10:17:21 +01:00
def 9c5b5ce2d0 Add Arabic language by .Yukki 2021-01-31 10:13:32 +01:00
heinrich5991 43998ce41a Replace projectile hack with a new extended snapshot object
Still send the old hack to old clients, still accept the old hack from
old servers. This is so F-Client can support DDNet servers without such
hacks.
2021-01-26 20:58:42 +01:00
heinrich5991 3539f2b183 Allow ParseUuid to report errors and add tests 2021-01-23 01:21:20 +01:00
Alexander Akulich 242aa63178 ddracechat.h is used by the client, so move it to src/game
where ddracecommands.h already is.
2021-01-16 03:20:57 +03:00
bors[bot] 40a36c2dfc
Merge #3377 #3487
3377: Add Thread Safety Analysis r=heinrich5991 a=def-

https://clang.llvm.org/docs/ThreadSafetyAnalysis.html

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


3487: Fix centisecs rounding in str_time_float r=heinrich5991 a=def-

<!-- What is the motivation for the changes of this pull request -->

## Checklist

- [ ] Tested the change ingame
- [ ] Provided screenshots if it is a visual change
- [ ] Tested in combination with possibly related configuration options
- [ ] Written a unit test if it works standalone, system.c especially
- [ ] Considered possible null pointers and out of bounds array indexing
- [ ] Changed no physics that affect existing maps
- [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional)


Co-authored-by: def <dennis@felsin9.de>
2021-01-10 15:00:19 +00:00
Alexander Akulich dc5b9340d5 Extract allocation macros to alloc.h (mimic the upstream)
See the upstream commit 24bda2faa0
2021-01-10 14:25:12 +03:00
Aurelien Jarno 08f9d037e9 Link with -pthread instead of -lpthread
The canonical way to link with the thread library is to use -pthread, which
brings in additional libraries like libatomic.so on riscv64. However cmake
defaults to link with -lpthread which only bring the libpthread.so library.
Fortunately it has the option THREADS_PREFER_PTHREAD_FLAG for that, which is
"highly recommended" but not the default.
2020-12-30 21:50:36 +08:00
def 59f1c2cbe6 Add New Year season theme by mind and use for 2 days
Map reduces my FPS from 60 to 45, mind can't optimize it further.

I'd release this as 15.2.5 in 1-2 days ideally with no other new changes in.
2020-12-28 17:45:04 +01:00
def e592afc98c Add Thread Safety Analysis
and annotate some code: https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
2020-12-23 18:13:21 +01:00
fokkonaut d4c4031f20 Add F-DDrace entities 2020-12-22 12:23:21 +01:00
heinrich5991 9cce68023a Export all symbols from the main executable for the antibot
Add `-rdynamic` if supported by the linker.

Not all symbols being exported broke our builds recently, the antibot
library used `mem_comp` from the main binary but it wasn't exported,
leading to the following runtime error:

```
./DDRace64-Server_sql: symbol lookup error: /home/teeworlds/servers/libantibot.so: undefined symbol: mem_comp
```
2020-12-09 10:17:11 +01:00
heinrich5991 037b928dd7 Manually patch gtest to allow CMake version 2.8.12...3.19.1
Fixes #3355.

Works around https://github.com/google/googletest/issues/3040.
2020-12-08 10:24:22 +01:00
heinrich5991 abd2a54522 Bump to gtest from a commit SHA to 1.10.1 2020-12-08 10:24:22 +01:00
heinrich5991 59cbc01415 Bump minimum CMake version from 2.8 to 2.8.12
Declare that we're fine with policies up to 3.19.1. This should fix
policy errors and "too low cmake_minimal_version() errors" for the
forseeable future.
2020-12-08 10:24:22 +01:00
Rafael Fontenelle 8d3d46a55e
Remove remaining tileset_ occurrence
tileset_* tools were removed in c839dc96
2020-11-24 09:08:59 -03:00
jupeyy 259629db9f Map optimizer 2020-11-21 12:10:20 +01:00
Jupeyy c989cd67f9 Check skin/sprite images for correctness 2020-11-18 07:59:15 +01:00
def 3b90f97aa5 Pull out blocklist_driver.cpp and unit test it 2020-11-06 19:00:14 +01:00
def 06b534c07d Create fallback wordlist in sourcecode (fixes #3206) 2020-11-03 17:01:16 +01:00
louis dbc57656ed Fix PaladiN border, delete Terrorist 2020-10-30 10:10:12 +01:00
Jupeyy eb2689cf9e Rename QuadContainerAsSprite to QuadContainerEx, so its useful for all kind of rendering 2020-10-20 18:45:03 +02:00
Learath2 ceefe305ec Add workaround for CMake 2.8. Fix version caching 2020-10-17 18:50:26 +02:00
heinrich5991 a604d913ce Move ghost code to client
It's not used by the server, so there's no reason to put it into the
shared codebase.
2020-10-14 17:08:58 +02:00
ChillerDragon 263fdbd8e1 Use 0.7 gameskin by @Zatline
a5105264ff
db08239506
31c6d2684d
2020-10-09 21:04:06 +02:00
Jupeyy 8d6148b20b Modulize skins, particles, emoticons and game 2020-10-09 09:07:19 +02:00
Jupeyy b1d5a388f1 Add comfort (entities asset) by louis 2020-10-07 05:11:38 +02:00
Nikola Radovanovic 31b6194ca1 Add to CMakeList 2020-10-03 23:50:27 +02:00
Dennis Felsing 2ba9535529 Use warnings popups for some io failures 2020-10-02 16:06:16 +02:00
Jupeyy 0e71a47708 Add customization 2020-09-28 23:21:32 +02:00
bors[bot] fd610e517b
Merge #2903
2903: Remove non-free skins by Moby Dog (fixes #2547) r=def- a=yangfl



Co-authored-by: yangfl <yangfl@users.noreply.github.com>
2020-09-26 07:04:18 +00:00
bors[bot] 8b399ba1be
Merge #2861
2861: Implement censoring words on server r=heinrich5991 a=def-



Co-authored-by: def <dennis@felsin9.de>
2020-09-25 23:07:15 +00:00
def d6edc788f5 Use steam info in cmake more, so i need fewer ugly shell scripts 2020-09-24 17:34:41 +02:00
def 1a17feff12 Use VERSION variable in cmake to specify version number more cleanly 2020-09-24 17:06:03 +02:00
def ebb4e3debe Center update info text, add -DINFORM_UPDATE flag
to be used for Steam release, since autoupdates are enforced anyway and
players don't need to be reminded to update
2020-09-24 13:41:59 +02:00
def c0ca296c63 Add autumn theme by ChillerDragon based on heavens by Sonix- 2020-09-23 23:38:29 +02:00
Jupeyy 8235df7752 Add menu background map 2020-09-23 23:38:28 +02:00
bors[bot] 8cc4487767
Merge #2905
2905: Add LearnToPlay, Sunny Side Up, Tsunami r=heinrich5991 a=def-



Co-authored-by: def <dennis@felsin9.de>
2020-09-22 14:50:05 +00:00
def 5f4ed14c17 Add Sunny Side Up map
Licensed by Ravie via Discord DM
2020-09-22 16:36:44 +02:00
def 1b39526ba3 Add Tsunami map
Licensed by Ravie via Discord DM
2020-09-22 15:21:18 +02:00
def c6ef987521 Add LearnToPlay so we have at least two maps
Licensed by Tridemy and Cøke via Discord DM
2020-09-22 14:22:06 +02:00
yangfl d08eca9ab3 Remove non-free skins by Moby Dog (fixes #2547) 2020-09-22 13:26:18 +08:00
Jupeyy 0ec7f1e1dc Fix dilate threshold & automatically apply dilate on embedded textures in the editor 2020-09-21 19:17:38 +02:00
def 591dfb0d02 Revert "Revert "Remove non-free skins by Lappi (fixes #2547)""
This reverts commit a7f5627df3.
2020-09-20 02:19:37 +02:00
def a7f5627df3 Revert "Remove non-free skins by Lappi (fixes #2547)"
This reverts commit 7b2c71435d.
2020-09-20 01:49:16 +02:00
def f11679afb2 Implement censoring words on server 2020-09-18 19:18:08 +02:00
def 003192eb12 Default to autoupdater off 2020-09-17 21:11:28 +02:00
def f2ec3c4f0a copy-paste error 2020-09-17 18:58:47 +02:00
def 41996fe672 OSX libwebsockets linking fix 2020-09-17 18:35:35 +02:00
bors[bot] 77cb30aec4
Merge #2733
2733: Implement on-demand skin downloader, remove Lappi's non-free skins (fixes #1166, fixes #2547) r=Learath2 a=def-

Seems to work on first try, I'm somewhat surprised :D

Future ideas:

- I haven't checked how the performance impact is of a new skin joining,
  might want to move the loading to a separate thread?
- Use the skins from download directory instead of redownloading? Might
  want to compare modified time.
- Make all skins load on demand only to save some memory?

Co-authored-by: def <dennis@felsin9.de>
2020-09-17 13:49:23 +00:00
def 2c66f7388a Use websockets 2020-09-17 13:35:07 +02:00
QingGo 70b2c842e3 update cmake file to use libwebsockets bundle 2020-09-16 23:16:13 +08:00
def 7b2c71435d Remove non-free skins by Lappi (fixes #2547) 2020-09-15 22:17:09 +02:00
heinrich5991 ffab6292ad
Merge branch 'master' into pr-start 2020-09-11 14:25:50 +02:00
def c839dc96d9 Remove tools we don't need anymore
Following Jupeyys new renderer
2020-09-10 23:15:28 +02:00
def 2cdc7d0faf Adapt 0.7 start menu
- Working Local Server button (needs fixing for Windows)
- Highlight buttons if server is running, new news is out and editor has
  unsaved changes
2020-09-10 20:13:01 +02:00
bors[bot] 21a51ff64b
Merge #2783
2783: Don't insert timestamps into PEs with MinGW r=def- a=heinrich5991

Should make the build reproducible.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-09-08 12:15:45 +00:00
heinrich5991 68b1df084d Don't insert timestamps into PEs with MinGW
Should make the build reproducible.
2020-09-08 14:13:24 +02:00
def ddc4b74354 Another mac fix 2020-09-08 08:12:42 +02:00
def 7abe20175a Version 14.7.1, fix Mac build 2020-09-08 07:48:25 +02:00
def 45457b6185 Bundle FFmpeg for everything
so that we can enable videorecorder by default

Works as expected.
2020-09-07 07:04:29 +02:00
heinrich5991 5b669bcb32 Only send valid UTF-8 over the network 2020-09-03 18:50:23 +02:00
def f56f36a0a7 SHARED instead of DYNAMIC (fixes #2703) 2020-09-01 15:23:56 +02:00
heinrich5991 32734aceb3 Make steam_api dependency static on Linux non-Steam builds
This allows building without rpath modifying on Linux which seems to be
needed for openSUSE packaging.

Fixes #2669.
2020-08-31 13:12:44 +02:00
Dennis Felsing 92616f1a55
Merge pull request #2664 from ddnet/pr-revert-revert
Revert "Revert Jupeyy's OpenGL changes" (fixes #2659)
2020-08-30 10:55:15 +02:00
heinrich5991 a2f9542d5f Drop lib prefix from MinGW builds of our steam_api.dll stub
libsteam_api.dll -> steam_api.dll

This unifies the name between MinGW and MSVC.

Fixes #2657.
2020-08-29 14:51:14 +02:00
def c85ffb90af Revert "Revert Jupeyy's OpenGL changes"
This reverts commit 3eab3f5eb7.
2020-08-29 12:10:53 +02:00
def 3eab3f5eb7 Revert Jupeyy's OpenGL changes
Emergency-revert for 14.5.1 release, too many problems
2020-08-26 20:03:22 +02:00
def 7babae5b41 Fix MacOSX cross-compilation linking 2020-08-26 10:28:44 +02:00
Dennis Felsing 5ffcab127f Add back Vanilla maps for compatibility (fixes #2643) 2020-08-25 21:49:33 +02:00
bors[bot] 694db44ee2
Merge #2598
2598: Allow specifying an OpenGL version manually r=def- a=Jupeyy

Ofc don't merge, we'll test it first, and if we want merge it, i'd need to enable shader compability for OpenGL 4+, and general support for OpenGL 3.1 and 3.2(bcs i think they already don't allow some older GL commands).

Also i never really read in the OpenGL 1.x specification, i remember that older OpenGL versions required glBegin and stuff like that

Co-authored-by: Jupeyy <jupjopjap@gmail.com>
2020-08-25 15:35:30 +00:00
heinrich5991 a1875e4292 Rename libddnet-antibot.so back to libantibot.so
Now that we install it into /usr/lib/ddnet, it should be fine.
2020-08-25 13:03:20 +02:00
heinrich5991 3c6f05887f Add SteamAPI + stub 2020-08-25 13:03:20 +02:00
Jupeyy a07e9ac2cf Add OpenGL 1.x, 2.x, 3.x support (fixes #2619) (fixes #2607) 2020-08-22 10:22:51 +02:00
Dennis Felsing dbb9c662ba
Merge pull request #2617 from Jupeyy/pr_font_fallback
Font fallback
2020-08-20 20:34:48 +02:00
def 178d864ec9 Switch to Source Han Sans font 2020-08-20 13:55:03 +02:00
heinrich5991 dd2662b4b8
Merge branch 'master' into pr-cert 2020-08-20 11:38:59 +02:00
def 446526486d Use two fonts, one as explicit fallback
Merging with fontforge had problems, for example for the Bei (U+5317) in
Beijing, see https://github.com/fontforge/fontforge/issues/4432
2020-08-20 11:13:08 +02:00
def 7c65b89fd2 Add bomb skin (by Ravie)
License given publicly on Discord
2020-08-19 23:06:39 +02:00
def c458ee52b0 Remove need for custom certificate
in anticipation of using CloudFlare
2020-08-19 17:54:05 +02:00
def 1394ac0fc4 Merge DejaVuSansCJKName with DejavuWenQuanYiMicroHei and use it for all (fixes #2593)
got them merged with fontforge, finally looks good.

allows reading CJK for everyone independent of language chosen.

Hopefully the lags are gone.
2020-08-19 12:31:55 +02:00
Jupeyy 7450e354de Add OpenGL 4.x support & cleanup 2020-08-19 08:42:09 +02:00
def 4da0592d78 Replace Kobra 4 and Goo! with Gold Mine
and add maps7 version
2020-08-18 10:47:17 +02:00
def cf15ef6cc0 Ship map_convert_07 executable 2020-08-16 22:43:56 +02:00
heinrich5991 63c26d25ee Add back skins by Moby Dog 2020-08-14 17:43:19 +02:00
def e0c06464d2 Version 14.3.1 2020-08-10 23:43:10 +02:00
Dennis Felsing 8239836a02
Merge pull request #2548 from def-/pr-skins-license
Move skins license information to its own file
2020-08-10 19:36:56 +02:00
def 0a9eb72d52 Fix bundling SQLite3 on Mac
Verified locally
2020-08-10 18:35:04 +02:00
def d08535684e Move skins license information to its own file 2020-08-10 18:23:31 +02:00
bors[bot] b06bea7c04
Merge #2465
2465: Sqlite3 support and prepared statements r=heinrich5991 a=Zwelf

This PR changes the abstraction layer of the score backend to thin abstractions over the MySQL and SQLite3 library. It executes all Queries in one worker thread making it easier to use the ddnet thread pool. This doesn't change much, because each the mysql-connection was locked with `m_SqlLock` beforehand, serializing writes and reads respectively.

Behavior change (even though I tried to minimize them):

* `sv_use_sql` is used to determine if mysql server should be added
* `sv_sql_failure_file` is replaced by `sv_sqlite_file`
* `sv_sqlite_file` is either used as a backup server when `sv_use_sql` is enabled or as the primary read+write server when `sv_use_sql` is disabled
* `/load` now escapes the like-string

Since I am not good at designing config file commands, I would appreciate feedback on this part.

WIP:
* [x] rewrite SQL statements to work in both MySQL and SQLite (preferable just ANSI-SQL)
  * [x] create tables (`COLLATE BINARY` and encoding info)
  * [x] store rank (UPSERT for points)
  * [x] load birthday (different function in sqlite for time handling)
  * [x] `/mapinfo` (`convert(? using utf8mb4) COLLATE utf8mb4_general_ci`)
  * [x] `/map` (`convert(? using utf8mb4) COLLATE utf8mb4_general_ci`)
  * [x] store teamrank (`GROUP_CONCAT`)
  * [x] `/teamrank` (`GROUP_CONCAT`)
  * [x] ~`/top5team` (`GROUP_CONCAT`)~ doesn't contain GROUP_CONCAT
  * [x] `/times` (`UNIX_TIMESTAMP`)
  * [x] `/load` without any arguments (`UNIX_TIMESTAMP`)
* [x] all commits compiling, making future bisect easier
* [x] write a sqlite_to_mysql script
* [x] write an old_file_server to sqlite script
* [x] gracefully shutdown DbPool

Co-authored-by: Zwelf <zwelf@strct.cc>
2020-08-09 23:30:08 +00:00
def 7be7160d9b Remove unlicensed skins (fixes #2518)
and mention skin licenses (fixes #2544)

Still missing: Which skin is by btd?
2020-08-09 15:07:08 +02:00
def 802c97a79d Remove IP skin
Apparently that's a pokemon, definitely can't use that one
2020-08-08 13:10:59 +02:00
Zwelf 0fa13f6bf9 Fix include directories for SQLite by heinrich5991 2020-08-03 16:07:36 +02:00
Zwelf a9c0912408 Sort cmake output alphabetical 2020-08-03 12:58:52 +02:00
Zwelf 452017a58b Move format string to CREATE TABLE into own file 2020-08-03 12:58:52 +02:00
Zwelf 2c5f892205 Apply suggestions from code review 2020-08-03 12:58:52 +02:00
Zwelf b898f8c7c2 Remove unused MySQL interface 2020-08-03 12:58:52 +02:00
Zwelf 7c31a15c93 Add SQLite interface 2020-08-03 12:58:52 +02:00
Zwelf 2eb3d23ef4 Rewrite score using the new interface
delete file_score for now as it will be replaced by a sqlite backend
2020-08-03 12:58:52 +02:00
Zwelf 295ce95d64 Roughly define database pool interface 2020-08-03 12:58:52 +02:00
Zwelf d59cdf47b5 Define new database interface 2020-08-03 12:58:52 +02:00
def d9c89d4e44 Remove IP skins 2020-07-08 22:04:54 +02:00
heinrich5991 9ed54440cb Add some tests for the bezier stuff 2020-07-02 11:07:30 +02:00
heinrich5991 cdd715fd53 Add smoothing of camera zoom using a cubic polynomial 2020-07-01 00:19:17 +02:00
bors[bot] bf09d18cc7
Merge #2331
2331: Enable rpath on Linux for shipping SDL2 shared lib r=heinrich5991 a=def-

I guess we should have a way to say when we want to build against the
static sdl2? Or we just ship SDL2 for the ddnet.tw releases as well. I'd
be fine with the latter, but it adds a few MB probably.

Co-authored-by: def <dennis@felsin9.de>
2020-06-25 11:52:49 +00:00
Zwelf a8abc3937b Make game less dependend on score backend 2020-06-25 12:36:01 +02:00
def 64d63bc123 Enable rpath on Linux for shipping SDL2 shared lib 2020-06-25 12:13:29 +02:00
def f51a443998 Merge remote-tracking branch 'edg-l/pr_show_spec'
Update x_spec with the more minimal version by HiRavie
Fix CMakeLists.txt
2020-06-24 09:55:59 +02:00
heinrich5991 10ab14d5eb List data files in CMakeLists.txt
This fixes missing files for people recompiling when we add new data
files.
2020-06-23 10:29:32 +02:00
heinrich5991 0db5c51ed9 Add a simple CSV writer for Python's "excel" csv dialect 2020-06-23 09:11:59 +02:00
heinrich5991 6f3a7a60ea Fix git_revision.cpp updating for out-of-tree builds 2020-06-20 11:08:59 +02:00
Learath ef89e9a300 Get CMake version requirement down again 2020-06-19 20:28:55 +03:00
Learath 03070d0567 Fix many issues 2020-06-19 20:28:52 +03:00
def ef4cad9f4d Fix Python 2020-06-19 20:27:15 +03:00
Learath 807c92f1a4 Generate the 0.7 protocol 2020-06-19 20:27:15 +03:00
heinrich5991 7f14b4b2bb Add glibc's PRNG
Based on a description on https://www.mscs.dal.ca/~selinger/random/
(retrieved 2020-05-25).
2020-05-25 15:19:25 +02:00
heinrich5991 f339fea748
Merge pull request #2139 from edg-l/pr_add_upnp
Add UPnP support
2020-05-24 22:23:20 +02:00
Edgar 3569e174f2
refactor upnp code 2020-05-24 11:36:43 +02:00
Learath 5e02bb5a23 Extend antibot interface
Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-05-13 23:39:40 +03:00
def c9dfcb2b11 Fix Mac OS X notifications linking 2020-04-30 21:30:21 +02:00
Learath 09fad44b87 Strip rpath before adding the correct one 2020-04-30 15:04:51 +02:00
Learath 17d1bccf2b Some osx cleanup 2020-04-30 15:04:51 +02:00
Arda Demir b7d452d2a0
Libnotify support for linux client (#2099)
Add libnotify support for linux client

Also unify notification management

Make libnotify mandatory for the client. It is installed on 100% of Arch
Linux systems and on 70% of Debian systems. I'd guess the remaining
Debian systems are servers.

Detect dependent libraries of `libnotify` using `pkg-config`. Remove
library-specific code from the game module. Decrement refcount for
libnotify notification object before leaving the function.
2020-04-14 17:53:53 +02:00
Ryozuki b647c1e978
Add UPnP support 2020-04-14 12:11:50 +02:00
Ryozuki e2a85345e4
Rename antibot -> ddnet-antibot and install it on cmake 2020-04-12 17:13:47 +02:00
Ryozuki 5f565a5eb5
check for WavpackCloseFile 2020-04-11 13:17:21 +02:00
Dennis Felsing 2965b8578a
Merge pull request #2124 from def-/pr-macosx-10.7
Rebuild Mac OSX libs with -mmacosx-version-min=10.7 (previously 10.9)
2020-04-10 20:28:58 +02:00
Ryozuki 0da0dddf15 drop glu dependency 2020-04-08 18:19:12 +02:00
def a127e6d5aa Rebuild Mac OSX libs with -mmacosx-version-min=10.7 (previously 10.9) 2020-04-08 12:07:33 +02:00
def 18aec44a99 New try for hidapi SDL2 rpath 2020-04-08 09:17:15 +02:00
def ae330bbe25 Try to fix SDL2 hidapi rpath on MacOSX
Following SDL 2.0.12 update
2020-04-08 07:37:00 +02:00
bors[bot] 0c51c0daf5
Merge #2117
2117: Don't emit the CMake rpath warning for CMake >= 3.14 r=def- a=heinrich5991

Fixes #2114.

Co-authored-by: heinrich5991 <heinrich5991@gmail.com>
2020-04-07 10:50:51 +00:00
heinrich5991 cac164cc71 Don't emit the CMake rpath warning for CMake >= 3.14
Fixes #2114.
2020-04-07 12:01:18 +02:00
def fd86c907a6 Fix ffmpeg package name (fixes #2115) 2020-04-07 09:00:19 +02:00
def 564e7577f7 Try to fix freetype mac warning 2020-04-06 12:48:58 +02:00
Learath 61e5667624 Streamline platform client 2020-03-28 02:20:16 +03:00
heinrich5991 bda3adabcc Use relative rpath, force relative rpath for older CMake versions
This allows you to copy around the built binaries together with the
binaries.
2020-03-14 01:48:45 +01:00
heinrich5991 a3163c5b9c Add support for dynamically loading an antibot module
Support for this feature is turned off by default. This feature allows
to integrate with noby's anticheat feature.
2020-03-11 01:58:50 +01:00
Dennis Felsing 50d848ec43
Merge pull request #1928 from sirius1242/demo_render2
Demo to video converter function.
2020-01-25 21:01:08 +01:00
ChillerDragon 01f42089f3 Add set_src to be more teeworlds compatible
thanks to @heinrich5991
2020-01-19 20:38:11 +01:00
heinrich5991 2fa80d0a67 Properly display hdiutil status in CMake
(cherry picked from commit cc2be456d4)
2020-01-05 17:51:19 +01:00
def df807a7486 -DVIDEORECORDER=ON instead of -DFFMPEG=ON, fix README
remove unused files
2020-01-01 16:56:54 +01:00
sirius 7710b88670 Merge branch 'master' of https://github.com/ddnet/ddnet into demo_render2 2020-01-01 18:36:49 +08:00
Dennis Felsing 45ad7be57c
Merge pull request #2021 from ElXreno/appdata
Add AppData manifest
2019-12-31 10:38:10 +01:00
ElXreno 44adf1878d
Added AppData manifest 2019-12-31 10:06:44 +03:00
Dennis Felsing 070d215ae0 Fix Travis Mac OSX build
ABI check failed, CMAKE_SIZEOF_VOID_P was thus not set and we look for
libs in wrong directory. Something seems to be wrong with the C/C++
compilers Travis is using. Not sure how to figure out more closely.
2019-12-30 13:19:33 +01:00
def fbbf7b3929 Fix MinGW build by temporarily disabling FORTIFY_SOURCE (fixes #2001) 2019-12-17 22:04:21 +01:00
def 28aabc5b91 Add map_convert_07 tool
Fixes https://github.com/ddnet/ddnet7/issues/20
2019-12-08 22:44:25 +01:00
ElXreno f6478067ae
Fixed installation on other than Ubuntu GNU/Linux distributions 2019-12-06 14:20:32 +03:00
sirius 1090953b7d update CMakeLists to make no ffmpeg need when ffmpeg off 2019-10-03 19:01:25 +08:00
sirius d9d1e8b309 add if defined to newly added lines 2019-09-30 20:54:19 +08:00
sirius 1375fbb95d add a button to render whole demo 2019-09-30 20:52:24 +08:00
HMH 461da64021 Basic cmake support for videorecorder 2019-09-30 20:49:35 +08:00
Dennis Felsing 0d9952b32a
Merge pull request #1748 from archimede67/pr_replays
Replay system (demo after-the-fact)
2019-06-11 18:13:26 +02:00
Corantin H 2e27a22927 typo + added an optional argument to save_replay + changed max replay length and fixed cl_notification_time values 2019-06-02 15:34:01 +02:00
Corantin H 761e73a131 should be thread safe now + moved demoedit to a new file 2019-05-31 20:42:28 +02:00
Ryozuki bd1f6be080
add .desktop and ico installation 2019-05-26 18:11:48 +02:00
Ryozuki ed5b96c6b9
fix modern cmake version warnings 2019-05-11 12:00:21 +02:00
Learath 5e5def314f Add tests 2019-04-24 23:53:38 +03:00
bors[bot] 526af034dd Merge #1620
1620: Rewrite of prediction code, with additional prediction (updated) r=def- a=trml

This is a reworked attempt at a rewrite of the prediction code (#464), to allow for more client side prediction. It doesn't fix the duplication of server code, but the client code should otherwise be cleaner. This includes separating prediction code out of gamecore/gameclient, and a refactor of the rendering of predicted characters.

There is also prediction for some new things, and some other changes:
- prediction of laser, shotgun, ninja, fng hammer, pickups and ddrace tiles (freeze/unfreeze tiles with cl_predict_freeze)
- laser and bullets are rendered when you fire them and bullets don't go through walls (when both cl_antiping_grenade and cl_antiping_weapons are enabled)
- antiping for flags
- prediction of dummy input
- an additional smoothing option that attempts to make antiping less jumpy (cl_antiping_smooth)

Co-authored-by: trml <trml@users.noreply.github.com>
Co-authored-by: trml <trml@noreply.github.com>
2019-04-23 17:11:21 +00:00
Dmitry Marakasov e404d6fd63 Fix platform-specific client libraries for Linux
Do not hardcode library names, detect and depend on them properly instead.
2019-04-23 18:15:30 +03:00
trml 0b3f3b03b5 Rewrite of prediction code, with additional prediction 2019-04-21 16:12:20 +02:00
Dennis Felsing 3ac2e0a06a
Merge pull request #1617 from def-/pr-ninja-compiler-color
Add compiler colors when using ninja
2019-04-14 22:00:53 +02:00
bors[bot] 826a7781ae Merge #1621
1621: Actually enable -Wuseless-cast r=heinrich5991 a=def-

It's not supported in C and we only checked using a C compiler.

Co-authored-by: Dennis Felsing <dennis@felsin9.de>
2019-04-12 00:08:19 +00:00
Learath b342048dad Actually add crypto includes to the target 2019-04-11 22:00:33 +02:00
Dennis Felsing cde07b420b Implement changes suggested by -Wuseless-cast
But don't enable it yet because I'm not sure what the best way is.
2019-04-11 19:54:43 +02:00
def 1d09dfa004 Add compiler colors when using ninja 2019-04-11 08:12:40 +02:00
Dennis Felsing ed34dcfec5
Merge pull request #1602 from def-/pr-explain-tiles
Explain game tiles and entities in editor (fixes #1600)
2019-04-10 17:38:22 +02:00
def fe432b8ae4 Enable a few more GCC warnings 2019-04-09 22:05:21 +02:00
def eda16acbca Explain game tiles and entities in editor (fixes #1600)
- Explanations by Lady Saavik taken from https://ddnet.tw/explain/
- CCW/CW were mixed up in enum names, fixed
- Make sure that the texts fits, otherwise reduce font size
- Still need explanations for Portal tiles
2019-04-08 19:39:56 +02:00
heinrich5991 e44b1ca986 Use OpenSSL md5 if it is available
Fixes #1582.
2019-04-06 02:56:29 +02:00
def 985c0153c7 cmake: Warn on unknown CMAKE_BUILD_TYPE (fixes #1334) 2019-03-19 22:14:58 +01:00
heinrich5991 632e91da3a Add a notification when files are not sorted in CMake
Would've solved the problem in teeworlds/teeworlds#2039 faster.

(cherry picked from commit fbdc6d69be)
2019-03-07 12:23:54 +01:00
def bc91659aa8 Get GAME_RELEASE_VERSION back, fix compatibility filter in server browser 2019-03-06 21:02:06 +01:00
def deb2494692 Don't suggest to downgrade, clean up versioning (fixes #1440) 2019-03-03 20:31:23 +01:00
def faa3cc195d UTF8 nocase compare & use for chat TAB completion
- As suggested by Arseniy Zarche
- Also updated confusables to Unicode 12
2019-01-09 08:31:03 +01:00
yangfl 754e6befb3 CMakeLists.txt: Add TESTRUNNER_ARGS
Make it easy to disable certain tests if they can't be run.
2019-01-06 14:17:06 +08:00
yangfl b704fd95e1 CMakeLists.txt: Let compiler tell its arch 2018-12-24 20:47:31 +08:00
def 77c086d617 Another CMake fix 2018-12-23 23:18:56 +01:00
def 280ed3fc3d CMake: Move -lpthread to the very end to fix Linux linking 2018-12-23 23:13:41 +01:00
Dennis Felsing 5c18d6c481 Remove /modhelp (fixes #1401) 2018-12-12 10:05:44 +01:00
heinrich5991 9ef200cd4a Revert "CMakeLists.txt: Replace PythonInterp with Python"
This reverts commit c1523d9fc3.

Fixes #1352.
2018-10-20 14:37:12 +02:00
yangfl c1523d9fc3 CMakeLists.txt: Replace PythonInterp with Python
FindPythonInterp is deprecated since CMake version 3.12. Use Python to
automatically detect Python 3 or 2.
2018-10-11 08:57:56 +08:00
heinrich5991 4660e0a680 Add support for extra map items in datafiles
This works by utilizing the good old UUIDs – this way we can make sure
that we don't clash with other people extending the map format.
2018-10-08 23:05:56 +02:00
Dennis Felsing e8bd8459a6 Fix #1325 2018-10-04 09:25:41 +02:00
Dennis Felsing a95032b633 Apply heinrich5991's fix for #1324 2018-10-04 08:39:43 +02:00
Dennis Felsing b0759830b7
Merge pull request #1300 from Learath2/dd_pr_autoupdateflag
CMake option to disable autoupdater. Closes #1292
2018-10-02 08:04:12 +02:00
heinrich5991 81408cac4e Debug mode should only be default if DEV is set, release otherwise
Fixes #1308.
2018-09-30 19:01:43 +02:00
Learath 2696ac134c Handle the platform differences in CMake. 2018-09-20 14:06:18 +02:00
Learath 3852f0e720 CMake option to disable autoupdater. Closes #1292 2018-09-20 03:01:31 +02:00
Dennis Felsing c7941db9d4 Static linking only when PREFER_BUNDLED_LIBS (closes #1295) 2018-09-19 07:58:17 +02:00
heinrich5991 cb09161dec Add a proper make install command
It will install data into `share/ddnet`, client and server binaries into
`bin` and tools into `lib/ddnet`.

Fixes #1269.
2018-08-26 21:44:31 +02:00
heinrich5991 f7afd76292 (Re-?)add proper install target
This puts binaries in `bin` and the data dir into `share/ddnet`.
2018-08-21 21:53:08 +02:00
heinrich5991 8d04e7e5e1 Share libcurl resources across requests
Use the libcurl-share interface to share DNS cache and connections
between different requests.

If compiled with OpenSSL, libcurl can only be safely used from multiple
threads for OpenSSL >= 1.1.0, but this problem is not newly introduced
by this commit: According to libcurl-thread(3):

>OpenSSL <= 1.0.2 the user must set callbacks.
>
>https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION
>
>https://curl.haxx.se/libcurl/c/opensslthreadlock.html
2018-07-11 20:17:21 +02:00
yangfl 81a39c229b Fix typo 2018-07-10 17:29:02 +08:00
heinrich5991 67a3042051 Fix Mac linking for cross-compilation
The `Security` framework is now needed on all targets because we link
libcurl everywhere.
2018-06-27 12:35:01 +02:00
Dennis Felsing 6c1e50bba5 Revert "No Crypto on Mac OSX"
This reverts commit fd1cdbfa74.
2018-06-27 10:02:29 +02:00
Dennis Felsing fd1cdbfa74 No Crypto on Mac OSX 2018-06-27 09:47:53 +02:00
heinrich5991 ca8fcc823c Use more secure hash function for map downloads
SHA256 was chosen because it is reasonably standard, the file names
don't explode in length (this rules out SHA512) and it is supported by
basically all versions of OpenSSL (this rules out SHA512/256 and SHA3).

The protocol is changed in a backward compatible way: The supporting
server sends the SHA256 corresponding to the map in the `MAP_DETAILS`
message prior to sending the `MAP_CHANGE` message. The client saves the
SHA256 obtained from the `MAP_DETAILS` message until the next
`MAP_CHANGE` message.

For servers not supporting this protocol, the client falls back to
simply opening maps like in the previous scheme.

Remove the `map_version` tool, it is not being used and would have been
a little bit effort to update.

Use the OpenSSL implementation of SHA256 if it is supported, otherwise
fall back to a public domain one.

Fix #1127.
2018-06-24 17:04:50 +02:00
heinrich5991 36694d3852 Add a way to call for external moderator help
This is done by HTTP POSTing to a location specified by
`sv_modhelp_url`. We also provide a `src/modhelp/server.py` which can
use theses POSTs to forward them to Discord servers.

The POST contains a JSON object payload, with the keys `"port"` which
contains the server port, `"player_id"` which contains the calling
player's client ID, `"player_name"` which contains the calling player's
nick and `"message"` which is the user-specified message.

Make JSON-escaping function public, add tests and fix bugs uncovered by
these tests.

Supersedes #1129.
2018-06-19 23:27:35 +02:00
def 9c29d83d32 Try statically linking libgcc and libstdc++ on Linux too 2018-05-22 19:42:48 +02:00
def f19f4530d3 Revert "Try removing manifest"
This reverts commit 6df2ad55ed.
2018-05-09 22:06:52 +02:00
def 6df2ad55ed Try removing manifest
Causes bug with Intel driver using OpenGL2:
https://stackoverflow.com/questions/34676697/embedding-manifest-into-the-application-binary-breaks-opengl-2
2018-05-07 20:57:06 +02:00
heinrich5991 81aeb30654 Also add a console command to enable map compatibility mode 2018-05-01 12:38:33 +02:00
heinrich5991 4576dae6aa Add infrastructure for special-casing maps 2018-03-24 14:00:41 +01:00
heinrich5991 11304661db Put name ban stuff into a separate file
Fix a bug when overlong names could be used to circumvent name bans. Add
tests for name bans.
2018-03-14 02:35:31 +01:00
heinrich5991 a71cc2a55b Execute git_revision.py in the source directory
Previously, if using an out-of-source build directory, git would report
an error and no revision string would be added to the final executable.
2018-03-10 00:58:10 +01:00
heinrich5991 31a3e8d4c0 Add possibility to ban players by name
This uses the Unicode confusable data together with judging how close
two strings are by using the Levenshtein distance.

Adds the commands `name_ban`, `name_unban` and `name_bans`. Kicks
players who join using a banned name and doesn't allow ingame players to
change their names to the banned ones.
2018-03-09 20:30:27 +01:00
heinrich5991 d118fbd5e0 Fix build with -DCLIENT=OFF on macOS 2018-03-06 19:25:59 +01:00
heinrich5991 458804c059 Make game dependency on generated protocol.h explicit 2018-03-02 03:42:35 +01:00
heinrich5991 1387ee9a3a Regenerate version file on git changes
Previously, this file had to be manually deleted if you wanted to have a
new version compiled in.
2018-03-01 16:50:29 +01:00
heinrich5991 1578e272a3 Ignore old generated files if still present
Our build system used to put generated files into `src/game/generated`,
now it's using `${PROJECT_BUILD_DIR}/src/game/generated`. Prefer the
ones in `${PROJECT_BUILD_DIR}/src/game/generated`.
2018-02-20 17:11:18 +01:00
heinrich5991 ac7e92df5e Rerun wavpack version detection when the library changes 2018-02-20 17:10:52 +01:00
def 491ccc85e1 Revert "Fix system wavpack (fixes #1041)"
This reverts commit 295b8a663a.
2018-02-18 15:35:20 +01:00
def 295b8a663a Fix system wavpack (fixes #1041) 2018-02-18 09:36:35 +01:00
heinrich5991 73c03544b4 Support older wavpack versions 2018-02-17 01:35:07 +01:00
heinrich5991 99fe1d7bcf Revert "Fix bundled wavpack when system wavpack is available"
This reverts commit 0d9265b1fa.
2018-02-17 01:31:40 +01:00
def 0d9265b1fa Fix bundled wavpack when system wavpack is available 2018-02-15 19:30:40 +01:00
heinrich5991 38b96791f6 Try to find libwebsockets on the host system 2018-02-14 12:55:37 +01:00
heinrich5991 94818ec1f0 Try to find external GLEW, pnglite and Wavpack
Allow for newer versions of Wavpack, fixes #1023.

Fixes #1016.
2018-02-12 23:29:45 +01:00
heinrich5991 22164d5c45 Squelch warnings in bundled ZLIB dependency 2018-02-12 23:29:45 +01:00
heinrich5991 9e9b57ec62 Move generated files to the CMake build directory 2018-02-12 23:29:45 +01:00
Learath2 050a34295f Remove make_release, scrub references to lua files 2018-01-29 13:37:26 +01:00
Learath2 b26eeb235d Scrub more references to bam 2018-01-28 22:47:03 +01:00
bors[bot] f48a2a395b Merge #947
947: Add support for extra chunks in teehistorian r=Learath2 a=heinrich5991

This allows to add rarely-used chunks without increasing the file format
version.
2018-01-27 21:09:43 +00:00
def 151da9af97 Remove Emojis 2018-01-25 20:03:18 +01:00
heinrich5991 9712a4494b CMAKE_CXX_FLAGS is space-separated, not semicolon-separated 2018-01-22 19:48:17 +01:00
heinrich5991 ccad91a11d Check for -std=gnu++11 in the C++, not C, compiler 2018-01-22 19:32:30 +01:00
heinrich5991 6b7921677c CMakeLists.txt: Check for each of the flags before adding them 2018-01-22 19:10:57 +01:00
def 45412a9a05 -ffloat-store to fix win32 server floats (fixes #989) 2018-01-15 19:34:54 +01:00
def b3ad3f2d27 Forgot .exe ending for Windows 2018-01-14 16:11:09 +01:00
def 4aeb0f9a8e Strip binaries, even in package_* 2018-01-14 15:57:02 +01:00
def 636fdeba70 cpack should get shorter version name as well 2018-01-14 15:31:31 +01:00
def 325371331d Version 11.0 2018-01-14 15:04:18 +01:00
def 7726540de1 Not sure why c++11 is not respected when compiling for mac 2018-01-14 14:36:25 +01:00
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