ddnet/src/engine
bors[bot] 48e53470cd
Merge #4581 #4590 #4593 #4607
4581: Adjustable prediction margin r=def- a=trml

This adds an option to adjust how early the client sends an input for a given tick. In vanilla this value is hardcoded to 10 milliseconds before the next tick, which is good for low-latency gameplay and/or when you have a stable connection, but sometimes it could perhaps be useful to increase the value, to either test something with a high ping (without having to joing a high-ping server or use on a 3rd party program like tc/netem), or for counteracting the effect of jitter and jumping ping.

The last part comes at a tradeoff for higher ping though, and it also doesn't handle lag caused by packet loss, but it I have found it useful in some situations when playing race/solo/dummy with a bad connection. Since it's a bit experimental I only added it as an f1 option and not stored between sessions, and also added a gameinfo flag to only support it on servers that implement #1441.

Edit: Also attempted to cleanup variable names for tick calculations in client.cpp slightly.

## 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
- [ ] 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)


4590: Remove extra projectiles r=def- a=trml

Aligns the code with vanilla, and cleans up things a bit
(same as [329e6261f3](url))

These were used to show projectiles a tick (or fraction of a tick) earlier than they otherwise would (and they were also sent without extrainfo since they didn't matter for prediction), so removing them would perhaps not make a noticeable difference. (and perhaps also less of a difference now since weapon input isn't applied before the start of a tick anymore).

## 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)


4593: Fix compiler warning with new ffmpeg version (currently built from git) r=heinrich5991 a=def-

```
src/engine/client/video.cpp:102:32: error: assigning to 'AVOutputFormat *' from 'const struct AVOutputFormat *' discards qualifiers
        m_pFormat = m_pFormatContext->oformat;
                    ~~~~~~~~~~~~~~~~~~^~~~~~~
src/engine/client/video.cpp:571:13: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers
        *ppCodec = avcodec_find_encoder(CodecId);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
<!-- 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)


4607: Adopt upstream input (especially double click) handling, refactoring r=def- a=Robyt3

This adopts the 0.7 way of handling double clicks, by checking `Event.button.clicks` of the `SDL_Event`. The double click is stored as a flag which is cleared when the `MouseDoubleClick()` function is called (d215c73206 and 7977b46d36).

This reverts 72a6e20, as this hack is no longer required (closes #1745). Double clicking a friend in the friend list still works (#444) with both `gfx_asyncrender_old 0` and `1`.

Refactorings and minor fixes synchronizing with upstream:

- Only copy SDL keystate of _keyboard_ keys and mem_zero the rest to ensure out of bounds SDL keys don't trigger mouse keys.
- Rename variables and use SDL constants.
- Reduce unnecessary indentation.

## 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
- [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: trml <trml@users.noreply.github.com>
Co-authored-by: Dennis Felsing <dennis@felsin9.de>
Co-authored-by: Robert Müller <robert.mueller@uni-siegen.de>
Co-authored-by: oy <Tom_Adams@web.de>
2022-01-17 23:36:14 +00:00
..
client Merge #4581 #4590 #4593 #4607 2022-01-17 23:36:14 +00:00
docs Fix a woopsie in snapshot docs 2021-05-29 11:07:33 +02:00
external Fix serverinfo json parser to work with system libjsonparser (fixes #4202) 2021-11-17 18:26:16 +01:00
server Merge #4581 #4590 #4593 #4607 2022-01-17 23:36:14 +00:00
shared Merge #4581 #4590 #4593 #4607 2022-01-17 23:36:14 +00:00
antibot.h Forgot to add target here 2021-07-22 00:22:12 +02:00
client.h Fix run_on_join being run on normal player again (fixes #4494) 2021-12-20 23:19:43 +01:00
config.h Implement "reset" command 2021-12-27 01:13:11 +01:00
console.h Use default color, if print color is white 2021-10-24 01:48:38 +02:00
demo.h add functions for packing/unpacking int/unsigned using char arrays 2021-11-09 22:19:32 +01:00
discord.h Put the Discord stuff into its own file 2021-01-31 10:17:21 +01:00
editor.h Adopt upstream refactoring: Mark several functions as 'const' 2021-02-23 18:26:16 +03:00
engine.h Add serverbrowser ping cache 2021-05-14 01:00:41 +02:00
friends.h Run clang-format 2020-09-26 21:50:15 +02:00
ghost.h Update ghost format to v6: Replace CRC with SHA256 2020-10-14 17:08:58 +02:00
graphics.h Fix windows macro and split the resize events 2022-01-15 16:55:32 +01:00
input.h change type of MouseDoubleClick from int to bool 2022-01-16 12:43:32 +01:00
kernel.h Run clang-format 2020-09-26 21:50:15 +02:00
keys.h Use scancodes instead of keycodes for input (fixes #796, please test) 2017-07-21 19:53:49 +02:00
map.h Run clang-format 2020-09-26 21:50:15 +02:00
masterserver.h Adopt upstream refactoring: Mark several functions as 'const' 2021-02-23 18:26:16 +03:00
message.h Run clang-format 2020-09-26 21:50:15 +02:00
server.h add IServer::ChangeMap to fix change_map command 2021-12-15 03:36:25 +03:00
serverbrowser.h Support 128 players in serverbrowser 2022-01-02 13:41:59 +01:00
sound.h Modulize skins, particles, emoticons and game 2020-10-09 09:07:19 +02:00
sqlite.h Add sqlite3 to the client 2021-05-14 01:00:41 +02:00
steam.h Allow joining and inviting others via Steam friend list while ingame 2020-09-06 17:08:38 +02:00
storage.h Add IStorage::FormatTmpPath static method 2021-12-20 16:12:15 +01:00
textrender.h Add basic selection support for ui ex edit boxes 2021-10-04 19:58:25 +02:00
updater.h Overhauled job system 2017-11-23 15:47:38 +01:00
uuid.h Make sure headers compile standalone 2020-09-26 21:50:27 +02:00
warning.h Add block list for drivers 2020-11-05 21:07:14 +01:00