Commit graph

957 commits

Author SHA1 Message Date
def 48980efa2e Disable OpenGL 3 by default 2018-01-14 07:33:00 +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
Learath2 8353701789 Add sv_rcon_vote. Fix punctuation.
Add option to only allow authed clients to call votes.
2017-12-27 10:40:51 +03:00
heinrich5991 1a236dbefc Send connection information to external server 2017-12-20 16:56:34 +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 c10db436b4 Change some config variable defaults to official server values 2017-11-24 11:59:45 +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
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
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
Learath2 b8b4f7771d Rename the callback 2017-10-19 18:13:28 +02:00
Dennis Felsing d6999bb726 Merge "Pull Request using OpenGL 3.3" 2017-10-18 12:49:27 +02:00
Learath 96acddb57f Fix the other use after free 2017-10-17 15:39:20 +02:00
heinrich5991 dfc53b48cf Fix victim handling 2017-10-17 01:32:40 +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
heinrich5991 2fc018aac3 Add asynchronous file output, port dbg_msg()s to that system
Also add tests.
2017-10-10 04:11:14 +02:00
Redix 2586c001b7 Use demos/auto/race for the race recorder 2017-09-28 19:14:36 +02:00
Redix 5721612761 Clean up trailing whitespaces 2017-09-28 16:02:01 +02:00
Redix 216e5654e8 Added config variables for server controlled ghost and race recording 2017-09-28 16:02:00 +02:00
Redix 1c377ed00f Added Fastcap support for ghost and race demo 2017-09-28 16:01:57 +02:00
Redix b1e7138847 Added ghost file handling classes 2017-09-28 16:01:56 +02:00
Jupeyy 91216fb90c reduce upload size by normalizing color values, fix slow upload for some
iGPUs and force old opengl context, if issueinit fails
2017-09-27 12:16:34 +02:00
heinrich5991 a201352b29 Fix a grammar mistake in bot client message 2017-09-24 21:11:23 +02:00
heinrich5991 9761e9606a Make most user input teehistoric
Exclude private stuff like chat messages and votes.
2017-09-20 02:23:28 +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
Redix 43f246f174 Made int packing functions safe 2017-09-17 02:36:50 +02:00
Jupeyy 77b3c39553 allow disabling texture unit optimization by command, also use
drawelements instead of drawarrays for quads
2017-09-14 02:49:35 +02:00
Jupeyy 629bf2c5f9 Merge branch 'master' of https://github.com/ddnet/ddnet 2017-09-12 20:24:58 +02:00
Jupeyy 96694fb399 make new opengl version optionally 2017-09-12 20:12:37 +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
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 e64e59a839 semaphore instead of busy waiting in CJobPool 2017-09-02 12:30:55 +02:00
Dennis Felsing ed59b0f4a2 Fix binary dirs for installed locations on POSIX
Also rename them from teeworlds to ddnet
2017-09-01 13:37:01 +02:00
def 705349f2e5 Clean up and fix semaphores and threading 2017-08-31 19:18:07 +02:00
Dennis Felsing eb2634ab0a Merge pull request #852 from heinrich5991/pr_ddnet_fix_extractname
Add testing; fix, rename and test the `CEditor::ExtractName` function
2017-08-30 22:09:17 +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
heinrich5991 22be1be389 Fix and rename the CEditor::ExtractName function
Fixes #846.
2017-08-30 13:59:42 +02:00
heinrich5991 2682480f8a Rename GetUncompressedDataSize to GetDataSize
Also rename the old `GetDataSize` to `GetFileDataSize`. `GetDataSize`
now returns the actual data size, not the data size before
decompression.
2017-08-30 08:36:17 +02:00
root 2c748ebf70 Fixing PR over heinrich revision 2017-08-30 00:21:41 +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
def 0b1842d438 Use filesystem paths for -f command line param 2017-08-11 21:07:20 +02:00
def 0b5dcdc478 Disable vsync by default and warn about possible delay 2017-08-08 19:53:16 +02:00
def 5d8a0ddc1e Add time in console 2017-08-04 22:38:22 +02:00
heinrich5991 33315452c3 Merge branch 'master' into leak_fix 2017-07-31 20:42:32 +02:00
HMH 19a8e7add6 removed some spaces 2017-07-28 20:44:03 +02:00
HMH 6655b35bdd minior style issues 2017-07-28 14:49:09 +02:00
heinrich5991 6247aa0c7f Enable -Wextra and -Wformat=2
Also annotate `dbg_msg`, `str_format` and `str_timestamp_ex` so that the
compiler can determine whether the format strings are correct.

Fix the compiler warnings generated by these extra warnings -- some of
them were security issues.
2017-07-27 20:38:17 +02:00
heinrich5991 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
def 60d7388d9f Fix demo slicing 2017-07-22 22:03:05 +02:00
def 0b5942fc04 Add special handling for infClass class selection (fixes #794) 2017-07-21 21:43:56 +02:00
HMH bfc5700314 Yes the Kernel and Interfaces need to be deleted too... 2017-07-21 19:46:31 +02:00
HMH d3714f7efa close workerthreads on shutdown 2017-07-21 15:52:42 +02:00
HMH 80fac31175 fixed memory leak in console 2017-07-21 15:51:56 +02:00
def a736a27430 No need for writing to tmp config file anymore 2017-07-16 06:54:02 +02:00
def f2444b0de7 Add map_diff tool to compare tile layers of map versions 2017-07-12 20:15:00 +02:00
def 46cedf3a8c Compiler warnings 2017-07-09 10:27:58 +02:00
def 66f6f16e81 Windows DPI fixes #2 2017-07-09 09:44:07 +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
heinrich5991 409bc0e019 Ensure null-termination in str_escape
This also fixes a couple of potential buffer overflows. The affected
code is still buggy (doesn't do the right thing on potential buffer
overflow), but at least it won't result in crashes/out of bound writes
anymore.
2017-07-08 13:06:03 +02:00
def 36d5c8d608 string toggling supports escaped strings; also some code cleanup 2017-07-08 11:03:51 +02:00
Dennis Felsing 80565b646c Merge pull request #790 from Learath2/dd_pr_togglestr
Add toggling for string options
2017-07-08 10:03:47 +02:00
Learath2 5941755832 Add toggling for string options 2017-06-20 11:27:14 +02:00
heinrich5991 1a50d405cb Use str_find from src/base/system.h and check for C: on Windows
Previously, using drive-relative paths could be used to escape the
Teeworlds directory on Windows.
2017-06-18 16:26:29 +02:00
def 59b33b95e4 Stronger catch for .. 2017-06-17 23:07:02 +02:00
def d3daa51486 Correct filter 2017-06-16 22:19:36 +02:00
def 624fd38188 Oops 2017-06-16 20:46:41 +02:00
def 1b0de108c6 Forbid escaping base directory 2017-06-16 20:22:43 +02:00
Learath2 ca4da73b75 Update the range of sv_default_timer_type. Fixes #760 2017-06-08 14:35:48 +03:00
def e4b3c17829 Add option to disable long pain sound (used when shooting in freeze) 2017-06-06 18:58:23 +02:00
eeeee 2797227063 also remove references to CGameContext from CServer 2017-06-05 22:31:56 -07: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 d6e5df0023 oops 2017-06-02 21:58:16 +02:00
def b8d61e9b7d Change some defaults 2017-06-02 21:49:30 +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 a6e144ea72 Let's not crash the client and server on dbg_assert 2017-06-02 20:12:20 +02:00
def 27074e926a Further cleanup 2017-06-02 19:44:14 +02:00
Dennis Felsing ca9cca4c94 Merge pull request #770 from heinrich5991/pr_fix_events_uuid
Fix unpacking of net events
2017-05-27 16:21:37 +02:00
heinrich5991 3b88d78736 Fix a possible out-of-bounds read in snapshot.cpp 2017-05-27 15:52:05 +02:00
heinrich5991 9e7020368e Fix UUID formatting - the last field only has 12 hex digits
It didn't cause misprinted UUIDs because the string buffers had the
correct size.
2017-05-27 15:02:32 +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
def c2400c79cf Rename cl_show_other_hook_coll to cl_show_hook_coll_other and add cl_show_hook_coll_own (fixes #741) 2017-05-14 12:03:09 +02:00
Dennis Felsing a0a1276b6a Merge pull request #751 from Learath2/dd_pr_ratelimitinvite
Add ratelimiting for /invite
2017-05-14 11:50: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
def 7a9f316dd1 cl_cpu_throttle_inactive can be set higher than 1 2017-05-14 10:58:01 +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
def 4b376d239c rename 2017-04-24 17:36:13 +02:00
Learath2 c1a4a95d61 Add ratelimiting and config options for invite 2017-04-24 14:04:50 +02:00
def d4ed1310d2 Configurable rate limit for SQL queries 2017-04-13 09:33:26 +02:00