Commit graph

6287 commits

Author SHA1 Message Date
heinrich5991 fd36b8c8c8 Remove unused header file src/engine/shared/storage.h 2017-11-27 00:58:30 +01:00
bors[bot] 41f6140179 Merge #945
945: Don't use nonstandard `#pragma pack` r=Learath2 a=heinrich5991

It's not needed in that place anyway.
2017-11-26 16:27:50 +00:00
bors[bot] 5bfb25c9c8 Merge #954
954: Change some config variable defaults to official server values r=Learath2 a=heinrich5991
2017-11-26 16:13:23 +00:00
bors[bot] f9e0b6b3fe Merge #931
931: Add Speedup tiles correctly at the border creation & remove tile layer extension restriction & fix the LastIndex buffer initlialization & setup non mipmap textures up correctly(texture completness) r=heinrich5991 a=Jupeyy

Allows speedups to be drawn on extended range(out of map range) too.
2017-11-26 13:32:05 +00:00
Jupeyy b1d99de87a s_ 2017-11-26 14:10:47 +01:00
Jupeyy bff1186d3b is now s_ 2017-11-26 14:08:00 +01:00
Jupeyy 14297ae45c code pattern 2017-11-26 13:28:41 +01:00
heinrich5991 c10db436b4 Change some config variable defaults to official server values 2017-11-24 11:59:45 +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 01d81fc4cc Make m_Shutdown variable atomic instead of volatile 2017-11-24 09:23:23 +01:00
heinrich5991 a3cdfac84e Fix lookup job being zeroed in CMasterServer::Load 2017-11-24 02:13:34 +01: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
heinrich5991 7fc4a21565 Remove deprecated multi commands
You now have to use `/mc;` instead of `/` if you want to bind multiple
commands to one key.
2017-11-18 16:36:34 +01:00
heinrich5991 be80ccb7d6 Don't use nonstandard #pragma pack
It's not needed in that place anyway.
2017-11-18 00:24:44 +01:00
heinrich5991 dcbd8197a4 Stop using deprecated APIs on macOS in server launcher 2017-11-17 14:57:42 +01:00
heinrich5991 dd5c26f81c Build the server launcher on macOS, package it 2017-11-17 14:37:29 +01:00
bors[bot] 27722633a3 Merge #940
940: Put shaders into the data/ directory r=Learath2 a=heinrich5991

Simplifies a lot of things
2017-11-15 23:29:55 +00:00
heinrich5991 17d3f4afa4 Put shaders into the data/ directory
Simplifies a lot of things
2017-11-08 22:19:47 +01:00
bors[bot] 71d77ae778 Merge #937
937: Fix `3 / 2` using integer division r=Learath2 a=heinrich5991
2017-11-08 20:08:59 +00: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
Jupeyy 78c06e180f remove dublicated GL queries 2017-11-04 05:38:48 +01:00
Jupeyy 78a9fbb9b5 use the write buffer slot, instead of elementarray slot to create the
index buffer
2017-11-04 04:57:58 +01:00
heinrich5991 ef0c1b266f Fix 3 / 2 using integer division 2017-11-03 22:10:04 +01:00
Jupeyy d367f94d7c invalidate all index buffer bindigs, when index buffer is resized 2017-11-03 19:48:17 +01:00
Jupeyy c22af4bb4d fix index buffer bindig for normal quads(fixes startup crashes) and
initialize non mipmap textures as linear(texture completness)
2017-11-03 19:33:23 +01:00
bors[bot] 3fdc87047b Merge #935
935: removed dead function prototype r=heinrich5991 a=ChillerDragon
2017-11-01 14:15:56 +00:00
ChillerDragon a013a59aa6 removed dead function prototype 2017-11-01 14:57:34 +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
Redix de1c0cf24d Fixed several issues with the ghost (thanks to Learath2) 2017-10-28 14:23:24 +02:00
def 04820b44f8 Simplify emoji 2017-10-28 09:08:17 +02:00
Michał ebe894faef Fix duplicate 2017-10-28 09:08:17 +02:00
Michał f7e64fe99e Quick fix 2017-10-28 09:08:17 +02:00
Michał 2e353beec2 Rendering fix, better offset calculation, optimizations 2017-10-28 09:08:17 +02:00
Michał 58b0ae5fc7 Possible emoji rendering fix 2017-10-28 09:08:17 +02:00
Michał 3c3c7abd3c Removed alias->utf replacer, added alias lookup instead, modified CEmojis class 2017-10-28 09:08:17 +02:00
Michał 07db85d806 Removed string.h, replaced some C functions with system.h ones, renamed variables 2017-10-28 09:08:17 +02:00
Michał bb419c43b7 Linux build fix + cleanup 2017-10-28 09:08:17 +02:00
Michał e85898a4b6 Fix includes + small clean 2017-10-28 09:08:17 +02:00
Michał 35fb1ddb41 Add emoji support 2017-10-28 09:08:17 +02:00
Jupeyy f15f41e654 remove extension limit for tile layers 2017-10-28 02:04:53 +02:00
Savander fa544dc0e6
Localize Date, Demo 2017-10-28 01:22:11 +02:00
Savander b2b82eb3dd
Localize friend message 2017-10-28 01:21:32 +02:00
Jupeyy 493d2dc9d8 add speedups correctly to the border tiles, to allow them beeing
displayed on extended range
2017-10-28 00:52:54 +02:00
Learath2 a6eb1b94f2 Add lock around m_Destroy and m_PastCB 2017-10-27 15:26:39 +02:00
bors[bot] d5b6b30f95 Merge #929
929: Don't draw invalid tiles r=heinrich5991 a=Jupeyy

I just forgot to fix that, when i was changing the buffer creation.
It just prevents invalid tiles, e.g. speedup without force, to be drawn
2017-10-25 14:21:45 +00:00
Jupeyy 863385e208 fix the code layout 2017-10-25 15:42:06 +02:00
Jupeyy 3c8f937b79 Don't draw invalid tiles 2017-10-24 20:41:11 +02:00
ChillerDragon 86f4deef8c fixed boardcast 2017-10-24 13:40:35 +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
Jupeyy 442a1767d4 reset lastindexbuffer at object deletion 2017-10-24 03:12:48 +02:00
Jupeyy 5c9fc3d19b remove unused variable 2017-10-23 18:31:44 +02:00
Jupeyy 37c5102928 only delete VBOs when the VAO, which uses the VBO, is deleted(AMD driver
bug under windows). And only allow true fullscreen under supported
display resolutions, to enable prevention of DPI scaled opengl viewport
2017-10-23 18:02:18 +02:00
heinrich5991 b463197348 Add CTestInfo class, add test for create-close-remove process 2017-10-23 00:13:53 +02:00
def cb00a294b8 Enable gfx_opengl3 by default 2017-10-20 22:52:38 +02:00
def 342c6048bf Use new opengl by default 2017-10-20 22:47:59 +02:00
def 02aeae416b Infinity = no limit 2017-10-20 22:47:59 +02:00
Dennis Felsing 2dec3d771a Merge pull request #916 from heinrich5991/pr_ddnet_fix_aio_test_leak
Fix file descriptor leak in aio tests
2017-10-20 22:32:31 +02:00
def 2b7809befd Switch cl_showfps 1/2 2017-10-20 22:27:53 +02:00
heinrich5991 5d783895e4 Fix file descriptor leak in aio tests 2017-10-20 18:46:31 +02:00
Dennis Felsing 4afe702985 Merge pull request #913 from heinrich5991/pr_ddnet_fix_warning
Fix `-Wtypedef-redefinition` for `struct ASYNCIO`
2017-10-20 14:12:49 +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
heinrich5991 c654d82fd2 Fix -Wtypedef-redefinition for struct ASYNCIO
Fixes #912.
2017-10-20 11:24:45 +02:00
Dennis Felsing 88c0778b21 Bundle glew instead 2017-10-20 11:12:27 +02:00
Dennis Felsing 07db95ed59 Mac build fix 2017-10-20 10:20:29 +02:00
Dennis Felsing d7eabb0ea9 Further macosx fixes 2017-10-20 09:31:42 +02:00
Dennis Felsing db46d18e71 No GLEW on OSX necessary (untested) 2017-10-20 09:08:49 +02:00
Learath2 b8b4f7771d Rename the callback 2017-10-19 18:13:28 +02:00
Redix 9289deb5c7 Stop ghost rendering when touching the start line again 2017-10-18 21:37:25 +02:00
Dennis Felsing d6999bb726 Merge "Pull Request using OpenGL 3.3" 2017-10-18 12:49:27 +02:00
Dennis Felsing cc9bcb5b9f Merge pull request #900 from Learath2/dd_pr_authname
Reset the username on disconnect
2017-10-18 12:43:08 +02:00
Edgar Luque 3408d4f016 MinGW putenv workaround. 2017-10-17 16:38:40 +02:00
Learath 30aebc9cf4 Destroy() implies Abort() 2017-10-17 15:42:17 +02:00
Learath 96acddb57f Fix the other use after free 2017-10-17 15:39:20 +02:00
Learath 7f8356e37e Fix a heap-use-after-free 2017-10-17 14:23:56 +02:00
bors[bot] 5aca38e50e Merge #902
902: Fix victim handling r=Learath2 a=heinrich5991
2017-10-16 23:41:15 +00:00
heinrich5991 dfc53b48cf Fix victim handling 2017-10-17 01:32:40 +02:00
Learath 9ae2c16235 Allow changing UsernameReq while connected 2017-10-16 20:08:39 +02:00
Learath 81135d17de Reset the username on disconnect 2017-10-16 20:01:33 +02:00
Jupeyy cc54c4acdf also out the LOD to the fragment shader to make sure we use the same LOD
on every hardware
2017-10-14 23:27:14 +02:00
heinrich5991 16694a0d7b Use a random token for serverbrowse requests
This alleviates the risk for spoofed servers.
2017-10-14 21:58:23 +02:00
Jupeyy 5389dd9666 fix border amount for right and bottom border lines 2017-10-14 16:37:48 +02:00
heinrich5991 525b643e18 Fix a syntax error
Sorry. :/
2017-10-13 16:33:23 +02:00
heinrich5991 c439b04a2d teehistorian: Hide chat from teehistorian
There was a missing check that allowed chat messages to be written to
disk.
2017-10-13 16:25:26 +02:00
Learath2 4394933d6c Merge pull request #887 from heinrich5991/pr_ddnet_async
Add asynchronous output system and use it for teehistorian and `dbg_msg()`s
2017-10-13 15:30:24 +02:00
heinrich5991 e989ffad78 Rename async_* to aio_* and add test for nondivisible buffer lengths 2017-10-13 02:48:42 +02:00
heinrich5991 8e778cd9ab Address pull request comments 2017-10-13 02:29:18 +02:00
heinrich5991 d5008d87a3 Add a test that checks for correct order in async IO 2017-10-12 00:58:47 +02:00
heinrich5991 13f0655cba Don't reset ASYNCIO_CLOSE flag on async_wait 2017-10-12 00:53:12 +02:00
Jupeyy add339d210 not needed, because of restrictions before 2017-10-11 11:18:03 +02:00
Jupeyy 1814fa8d19 make OpenGL 3.3 experimental option, and don't initialize it as default 2017-10-10 15:35:20 +02:00
Jupeyy 4fc7187a14 adjust sprite texture coordinates to respect texel offset 2017-10-10 12:20:20 +02:00
Jupeyy 966b388b0e clamp speedup arrows images 2017-10-10 12:08:36 +02:00
heinrich5991 4d05a2379b Make teehistorian asynchronous 2017-10-10 04:11:14 +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 be0b52eddc Fix teehistorian crash on startup 2017-10-10 02:39:29 +02:00
heinrich5991 7de42a1414 Couple of thread fixes 2017-10-10 00:08:24 +02:00
Learath 1855992014 Fix style 2017-10-09 20:51:16 +02:00