Commit graph

615 commits

Author SHA1 Message Date
Jupeyy edaf632c04 Merge branch 'master' of https://github.com/ddnet/ddnet 2018-03-01 07:38:50 +01:00
Jupeyy 238c8847c0 keep track of lost frames and updates, to ensure FPS stability and
better CPU sleep times
2018-03-01 07:34:14 +01:00
yangfl 1620fc9b0f Fix typo 2018-02-07 16:10:40 +08:00
Chiller Dragun 52a7f84583 code styling 2018-01-07 03:03:33 -08:00
Chiller Dragun 654dd597fe fixed rand init error message 2018-01-04 06:33:21 -08:00
heinrich5991 94acac91a0 Overhauled job system
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-23 15:47:38 +01:00
heinrich5991 f0c647dba5 Change os_compare_version to os_is_winxp_or_lower
This stops leaking OS details in non-`system.c` files.
2017-11-23 03:10:15 +01:00
bors[bot] fdb2e330ce Merge #904
904: Fix use-after-free r=heinrich5991 a=Learath2

Not sure if this is the best way to go about this, but it works :/
2017-11-08 17:30:34 +00: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
Redix de1c0cf24d Fixed several issues with the ghost (thanks to Learath2) 2017-10-28 14:23:24 +02:00
Learath 30aebc9cf4 Destroy() implies Abort() 2017-10-17 15:42:17 +02:00
Learath 7f8356e37e Fix a heap-use-after-free 2017-10-17 14:23:56 +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
Learath2 9bce7e8630 Use a proper interface for CFetchTask 2017-10-09 18:47:02 +02:00
Learath 1b0ab87015 Get rid of unnecessary queue in CFetcher 2017-10-08 00:57:56 +02:00
def b368234dae Delete editor before graphics (fixes #881) 2017-09-30 06:27:05 +02:00
Redix e9a0271c29 Improved ghost and race recorder file handling 2017-09-28 19:13:20 +02:00
Redix a3a82b6571 Move filename clearing function to base lib 2017-09-28 16:02:01 +02:00
Redix ac234ad3ee Write the correct player name into ghosts that are saved from menu 2017-09-28 16:01:59 +02:00
Redix 5b3e9e4bbf Improved ghost file management 2017-09-28 16:01:58 +02:00
Redix 5cc0d16029 Reworked the race recorder 2017-09-28 16:01:57 +02:00
Redix c189678e44 Cleaned up the ghost component and made it use the ghost recorder and loader 2017-09-28 16:01:56 +02:00
Redix 43f246f174 Made int packing functions safe 2017-09-17 02:36:50 +02:00
Dennis Felsing 43d0299a45 Merge branch 'master' into pr_ddnet_fix_msvs_warnings 2017-09-16 11:17:39 +02:00
def 73d9ad7615 Really only download ddnet-info.json at correct time 2017-09-08 22:16:00 +02:00
def e7e1070adf WinXP: Use http://info.ddnet.tw 2017-09-08 20:06:48 +02:00
def c2c453bd45 Make sending name to info.ddnet.tw optional, show dialog at start and some minor fixes 2017-09-07 20:51:46 +02:00
heinrich5991 4d96090770 Fix MSVS warnings
```
warning C4291: no matching operator delete found; memory will not be freed if initialization throws an exception
warning C4305: truncation from 'double' to 'float'
warning C4805: unsafe mix of type 'bool' and type 'int' in operation
```
2017-09-06 10:54:29 +02:00
def 8b1470c31f Revert "Merge GAME_VERSION and GAME_RELEASE_VERSION"
This reverts commit 5cfd779c68.
2017-09-03 23:46:15 +02:00
def 5cfd779c68 Merge GAME_VERSION and GAME_RELEASE_VERSION 2017-09-03 18:54:43 +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
def 27b7549bba Make --silent stop stdout logging 2017-09-03 10:37:24 +02:00
def 42bc38227d Request server list and ranks at better location 2017-09-03 09:00:57 +02:00
def 862e26dd08 Clean up time handling a bit 2017-09-03 08:48:21 +02:00
Dennis Felsing 6c21738d9d Try to fix Windows crash 2017-09-01 08:01:26 +02:00
def 7c6c2f5d9b Fix graphics init to be later so that user resolution is available 2017-08-31 23:42:21 +02:00
def 9b214db85f Force version.ddnet.tw and update4.ddnet.tw 2017-08-31 23:28:10 +02:00
def 8ebac31c03 Use old ddnet-ranks.json when new one can't be fetched currently 2017-08-31 22:40:55 +02:00
def a58895291c Only trust ddnet ca 2017-08-31 19:33:20 +02:00
def a20db6ec56 Don't shutdown sound twice (fixes #851) 2017-08-30 23:19:33 +02:00
def 16f3ddc5a7 Show if user has rank on map in browser (+filter)
UI implementation by timakro
2017-08-30 21:34:04 +02:00
def 7f0eb53ff4 Initialize in order to ensure destruction in order (fixes #848) 2017-08-30 17:22:36 +02:00
heinrich5991 33315452c3 Merge branch 'master' into leak_fix 2017-07-31 20:42:32 +02:00
heinrich5991 1ebb4f89a6 Reopen: Add a flag for rcon login via username (#800)
This uses an extended protocol message to signal that rcon
authentication might require a username, allowing the client to enable
the username prompt.

Add a forgotten logout on key update
2017-07-24 21:43:55 +02:00
HMH bfc5700314 Yes the Kernel and Interfaces need to be deleted too... 2017-07-21 19:46:31 +02:00
HMH 7f7fa06dd6 free the Client created by CreateClient 2017-07-21 16:46:29 +02:00
def a30323d986 oops 2017-07-16 21:27:18 +02:00
def e4364983ab Use https for map downloads by default 2017-07-16 11:29:10 +02:00
def 191eefbb2f Only trust our own custom-selected CAs for our maps download server 2017-07-16 11:25:38 +02:00
def c7c9c3c4dd Possible to use https:// for map downloads, but still use http:// by default 2017-07-16 10:45:41 +02:00
def f9170fd031 ugly workaround for dummy input when frozen with grenade and getting hammered 2017-07-15 18:59:33 +02:00
def fba3815ddc Only send password on connection when explicitly asked to (fixes #788) 2017-07-15 17:29:20 +02:00
def 46cedf3a8c Compiler warnings 2017-07-09 10:27:58 +02:00
def 35dcb4d6cf Don't open map file again if we have it open already 2017-07-08 22:09:03 +02:00
def f3e3d57a90 Always close files, cleaner demo recording, fix some other stuff 2017-07-08 13:39:20 +02:00
def 73c61e4169 Let's not save maps that are ok already 2017-06-11 20:18:28 +02:00
def 2bd6316ce7 Add code for fixing old maps by removing unused tiles 2017-06-11 19:53:55 +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
eeeee 2797227063 also remove references to CGameContext from CServer 2017-06-05 22:31:56 -07:00
def b592d6af55 ms not µs for thread_sleep 2017-06-02 23:28:47 +02:00
def 7e503a306b Revert "Back to cl_cpu_throttle_inactive"
This reverts commit c217040319.
2017-06-02 23:27:35 +02:00
def c217040319 Back to cl_cpu_throttle_inactive 2017-06-02 23:18:14 +02:00
def 8553ed727b Replace cl_cpu_throttle with cl_refresh_rate 2017-06-02 21:33:45 +02:00
def 4125941896 Disable dbg_stress in release builds (fewer confused kids that think they hacked the server, less useless code in cache) 2017-06-02 20:45:09 +02:00
def 814feede33 Don't copy strings into themselves 2017-06-02 18:37:29 +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
Dennis Felsing 728e548f55 Merge pull request #754 from SheikhZayx/master
CSV file instead of statboard screenshot
2017-05-14 11:49:46 +02:00
def 6d81f1f188 Fix cl_cpu_throttle_inactive 2017-05-14 11:01:48 +02:00
SheikhZayx ea0e4948b4 CSV file instead of statboard screenshot
En-/Disable statboard being saved as csv
2017-04-26 05:10:31 +02:00
Learath2 568b5e5603 Pointers should be set to NULL 2017-04-12 01:20:39 +02:00
Learath 389b432758 Take a blind stab at #718 2017-04-11 21:47:27 +02:00
heinrich5991 1d81d56850 Introduce new, vanilla-compatible server info protocol
This means that we have a reliable and fast way to query for extended info,
while also not wasting network bandwidth.

The protocol is designed to be extensible, there's four bytes space for
encoding more request types (currently zeroed), and there's one string in each
response packet and one string for each player available (currently the empty
string).

The protocol itself has no problems with more than 64 players, although the
current client implementation will drop the player info after the 64th player,
because it uses a static array for storage.

Also fixes #130, the player list is just sorted each time new player info
arrives.
2017-03-29 12:56:13 +02:00
necropotame b8e4e5beea Fix style in several places 2017-03-22 19:45:14 +01:00
Ryozuki 84726547aa Fix warning also for server.cpp, and fixed client.cpp 2017-03-12 14:49:18 +01:00
Ryozuki 79f5b26cf7 Moved _WIN32_WINNT to the top instead 2017-03-12 14:45:57 +01:00
Ryozuki 1614e59e8f Fix some warnings 2017-03-12 12:12:39 +01:00
heinrich5991 f2b2eb8639 Allow easier login for passwords with spaces 2017-03-10 12:30:41 +01:00
Dennis Felsing 761c3c9be1 Merge pull request #646 from heinrich5991/pr_ddnet_brace_style
Fix the brace style in some places
2017-03-09 13:31:21 +01:00
Learath2 4101acd747 Add rcon_login 2017-03-06 10:31:05 +01:00
heinrich5991 ba5af42b1f Fix the brace style in some places 2017-03-04 15:43:49 +01:00
heinrich5991 e3f2316106 Revert "Revert "Refactor dummy input and demo filtering""
This reverts commit 187560c8c0.
2017-02-28 10:08:14 +01:00
Dennis Felsing 187560c8c0 Revert "Refactor dummy input and demo filtering"
This reverts commit 8375f4888e.
2017-02-28 08:15:35 +01:00
heinrich5991 8375f4888e Refactor dummy input and demo filtering
Remove references to src/game/ from src/engine/
2017-02-23 14:13:14 +01:00
Dennis Felsing c21399c4c5 Merge pull request #567 from d3fault/master
dummy copyMoves/hammer disabling when dummy connecting
2016-11-07 10:20:11 +01:00
Dennis Felsing ab6ed4c589 Discard invalid snaps 2016-11-04 13:26:46 +01:00
def 34531c0696 cleanup 2016-11-03 22:10:31 +01:00
d3fault d6b732113e dummy copyMoves/hammer disabling when dummy connecting 2016-10-26 15:00:02 -07:00
heinrich5991 fce9ec6cda Replace UI elements for the timeout code
Now you can regenerate your timeout seed with the click of a button.
2016-10-03 13:56:15 +02:00
heinrich5991 89b6d0c3da Fix C89 compilation and a copy&paste mistake 2016-10-03 12:31:11 +02:00
heinrich5991 7ca2697135 Generate server-specific timeout codes
This way, servers can no longer hijack the timeout codes of clients.
Timeout codes are generated from md5(seed + dummy + server address).

If `cl_timeout_seed` is set to the empty string, the old config options
are used instead.
2016-10-02 11:36:42 +02:00
Dennis Felsing 98a2f459b6 Merge pull request #533 from BannZay/openCurrentMap
Load Current Map button added
2016-09-05 18:27:54 +02:00
BannZay 66c44cea79 MAX_PATH_LENGTH instead of pure magick 2016-09-05 18:54:35 +03:00
ACTom 363d0f81a4 Fix editor cannot input
fix bug that press ctrl+shift+e enter editor and cannot input anything.
fixed by TsFreddie
2016-08-27 02:29:57 +08:00
BannZay c658411f15 Load Current Map button added 2016-08-23 14:29:53 +03:00
def 866ffe8ef2 Fix mouse when opening editor with cl_editor 1 2016-07-03 23:16:43 +02:00
def 4681f69b1b Introduce cached ticks for client again, this time with workaround for
particles. Hopefully not many other parts of the code will need this.
2016-06-28 23:36:34 +02:00
def 19feacb2ad Revert "Cache time on client as well"
This reverts commit 987fad55cd.

Broke too many graphics animations, couldn't find a fix
2016-06-28 02:51:26 +02:00
def 987fad55cd Cache time on client as well
- Fixes FPS for me after suspend from 40 to 500 fps
- Should generally improve performance
- Might lead to a few problems where we need to call set_new_tick() in a
  few more positions, so test please
2016-06-28 02:16:55 +02:00
def 8753620e42 Also use cl_reconnect_timeout on 'Too weak connection' 2016-06-19 02:17:23 +02:00
def bb634d7641 Reconnect to last server address, not the one selected in browser 2016-05-17 18:56:33 +02:00
def 695bf346ac Make gfx_refresh_rate functional (fixes #255) 2016-05-10 17:43:27 +02:00
def 2fc2515e0f Fix DDNet server browser to refresh only once on start, not twice 2016-05-10 12:40:33 +02:00
Ryozuki 82d2a994ed Fixed cl_showping (now cl_showpred) 2016-05-05 18:07:00 +02:00
def 1b668047c8 Clean up auto reconnect and make it independent of rendering 2016-05-04 18:23:00 +02:00
def 21ac41bfae Clean up fifo console 2016-05-02 23:36:21 +02:00
def 61e47422f6 Clean up debug messages a bit (lower case, no useless errors) 2016-05-02 21:35:32 +02:00
def 981533e177 More mouse fixes with SDL2 2016-05-01 15:20:52 +02:00
def 72a6e20ba8 Split CInput::NextFrame() from CInput::Update() (fixes #444) 2016-05-01 00:18:25 +02:00
def 4761608329 Input fixes from TW master for mouse wheel 2016-04-30 20:11:26 +02:00
def 7a5b79e48a More SDL2 graphics goodness, partially from TW master 2016-04-30 00:43:11 +02:00
def 11e3fd55db seperated ingame input handling from rendering (from TW master) 2016-04-29 23:05:20 +02:00
def 6c4e6c5c44 setlocale for XOpenIM with compose key 2016-04-29 21:56:38 +02:00
def db8a126315 Merge swick's SDL2 branch 2016-04-29 21:55:48 +02:00
def ccbdf1d073 Add demo_speed command (fixes #354) 2016-04-27 17:21:40 +02:00
def 0f5611c2f0 Add function to filter chat out of demo when slicing (fixes #382) 2016-04-27 17:05:30 +02:00
def a93e7710e1 Remove hacky security against rcon spoofing because we have a better one now (client-side) 2016-02-22 19:56:30 +01:00
def 52224875b4 Style cleanup 2016-01-23 21:44:45 +01:00
def 51504d2bd2 Switch dummy snapshots as well to prevent snapshot accumulation (fixes #400) 2016-01-23 21:42:35 +01:00
H-M-H e41b4f463d Merge pull request #389 from H-M-H/command_usage
added (console-)command usage fixes #387
2016-01-03 20:59:32 +01:00
def 7223d0ecc1 Use a do-while loop instead 2016-01-02 19:51:22 +01:00
east f3f33904f7 secure_rand() as replacement for client source port generation 2016-01-02 15:37:44 +01:00
H-M-H 8e24ef8020 commanddescription can now be placed directly in
the commandparamsstring: "s[file]"
2015-12-28 16:19:52 +01:00
H-M-H 11a426c18b added (console-)command usage 2015-12-23 14:29:31 +01:00
timgame 2874e18ce0 dont restore empty config values at start 2015-11-16 20:31:56 +01:00
H-M-H f0d10ac62d better get dummyinput directly from CControls 2015-11-10 20:29:12 +01:00
H-M-H 50c80a1cfb classmembers shall start with m_ ! 2015-11-09 20:27:18 +01:00
heinrich5991 e6959e116e Only update cl_antiping_* if cl_antiping is 0
If cl_antiping is 1, the previous version of the code would have set all
other antiping variables to 1 anyway, so with this commit the user can
retain their antiping config if they configured after the last start of
the old client.
2015-10-06 15:59:11 +01:00
heinrich5991 7512cc10d6 Introduce a mechanism to import old configs and use it for cl_antiping* 2015-09-10 12:31:02 +01:00
east 5dd2169bb0 keep support for map fastdl 2015-09-01 17:55:12 +02:00
east 7720d6bbf2 client exception for NETMSGTYPE_SV_EXTRAPROJECTILE not vital 2015-09-01 13:50:45 +02:00
oy e91d26b8ac force vital check on essential cl/srv messages and added additional sequence checking 2015-09-01 13:50:45 +02:00
def 12f55eb76c Try FreeConsole() instead 2015-08-26 15:12:27 +02:00
def fe22edadaa Hide console window on Windows by default 2015-08-26 12:40:50 +02:00
def 902e4b7487 Also use map name by default for manual demo recording 2015-08-22 17:36:47 +02:00
def 83be8af082 Change auto demo recorder format (fixes #297)
- auto/MAP_TIME.demo instead of the old auto/autorecord_TIME.demo
- Made CFileCollection usable with a wildcard to include the entire
  directory and not just files with a specific file name
2015-08-22 17:22:46 +02:00
Dennis Felsing 37256d6e2c Merge pull request #283 from savander/DDRace64
Improvements for demoplayer (pause/unpause demo is bindable) + you can hide scoreboard after death
2015-08-13 17:25:57 +02:00
Adam Jaworski 41620b1a36 Con_DemoPlay instead of Con_PlayDemo and demo_play instead of playdemo 2015-08-12 14:26:48 +02:00
def 8f532aad9f Use autoexec_client/server.cfg by default, fall back to autoexec.cfg for both 2015-08-12 13:49:16 +02:00
Adam Jaworski 18fae123ab Playdemo - Check if demo is played 2015-08-12 12:17:19 +02:00
Adam Jaworski 8d4aea8a00 Added: playdemo command to start demo via console, bindable 2015-08-12 11:59:34 +02:00
Nikita Zyuzin 0b9e2f144c Add prefix Cl to dummy and player variables 2015-08-07 00:16:33 +04:00
def e97c8ac08f Add foes (permanently ignored players) 2015-07-22 22:16:49 +02:00
def d815193d86 Merge branch 'DDRace64' of github.com:def-/ddnet into DDRace64 2015-07-22 18:24:09 +02:00
def 4e658c1057 Minor cleanups 2015-07-22 18:23:40 +02:00
east 63cfc09017 make add_demomarker working in all recorders 2015-07-22 15:37:59 +02:00
def 76e4ca1bf6 Sort players in scoreboard by name too 2015-07-10 22:26:55 +02:00
def 6e8ada1ac8 Fix whitespaces a bit 2015-07-09 02:12:35 +02:00
def 7c665a7b97 Add auto-antiping based on ping 2015-06-21 18:00:09 +02:00
east 458e83e794 Further revert of auto demo recorder (fixes continuous recording on TILE_BEGIN) 2015-06-17 12:54:41 +02:00