DDNet 20.0 has been released with the following changes:



- 128 player support
- Web version
- Tabs to open multiple maps at the same time
- Android: Add aim-relative joystick and relative direct input
- More FPS: Stop rendering off-screen entities, players, hooks, ghosts and spectator chars
- Dynamic antiping player prediction (cl_antiping_players 2/3)
- Replace invisible assets with default sprites
- More FPS: Cache scoreboard text containers
- Reuse the text container buffer in CCachedText
- Clip hook collision line on maps without telehooks
- Improve hook collision line render check
- Fix old telehooks not being detected for the telehook check
- Fix projectile clipping being applied to start position instead of actual position
- Show skin names in scoreboard tooltips [0xpixty]
- Improve player settings country filter, highlight matches and show reset button
- Also bind W to +jump by default
- Add "Show directory" button to automapper rule selection popup
- Minor cleanup of settings menus
- Fix potential thread-safety issue in community icon loading
- Validate and initialize demo player data
- Get server info by const reference instead of copying
- Rewrite envelope editor as editor component with separate state per map
- Keep map settings, layer/image/sound lists, history UI, font typer and HD/zoom preview state separate for each map
- Properly clip envelope editor timebar and inactive region background
- Fix points of unused channels being selected by envelope box selection
- Properly slow mouse in envelope editor
- Add quick action for "Goto position"
- Fix quad flipping for multiple quads
- Reimplement action to delete selected quads
- Attach brushes to a separate internal map, fix invalid texture used for tile layer brush with quad image
- Fix incorrect item size for info map item when loading map
- Improve validation of map version item and other map data
- Avoid marking datafile data as unloaded when it failed to be loaded
- Fix dummy_map tool creating invalid map for sv_vanilla_antispoof feature
- Ensure snapshot item offsets and sizes are aligned with int32_t
- Reject oversized uncompressed packets in UnpackPacket
- Validate tune zone of DDNetProjectile snapshot object and tick of sv_preinput messages
- Add SSL support for MySQL database connections
- Fix rescue blocking team from finishing when used before start line
- Don't unfreeze player on skipped rescue
- Allow /cancelswap while using super, clarify that /swap is not allowed
- Purge acked snapshots from snapshot storage, search starting from the newest snapshot
- Include shortened git revision hash in server version, change 0.6.4 game version prefix to 0.6
- Assert non-reserved server gametype instead of checking pure tuning
- Split settings menus into separate source files, move UI popup menus to ui_popups.cpp
- Improve macOS packaging and MACOS_CODESIGN