From caa30dd45d3ae76405a7f4ecc9641521c1fb8895 Mon Sep 17 00:00:00 2001 From: Johannes Herman Date: Mon, 16 Mar 2026 11:14:21 +0100 Subject: initial --- content/software/dedit.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 content/software/dedit.md (limited to 'content/software') diff --git a/content/software/dedit.md b/content/software/dedit.md new file mode 100644 index 0000000..9b04a21 --- /dev/null +++ b/content/software/dedit.md @@ -0,0 +1,33 @@ +# dedit + +Dedit is a [Teeworlds](https://teeworlds.com/) / [DDNet](https://ddnet.org/) demo inspector and editor. It is written in portable C99 with zero dependencies. The code repository is hosted on GitHub [here](https://github.com/johannesHHM/demo-edit). + +## features + +- renaming tees based on ID / name +- changing the skin of tees +- changing the map of the demo +- extracting the map from the demo +- printing information about each demo chunk + +## background + +The main motivation for dedit came from wanting to create some consistency for the [RRT FNG montages](https://www.youtube.com/@rrtteeworlds5108). Being able to edit the map and skins of the montage clips could be used for cool effects, or simply for changing the name of a player if an alt was used. + +Because of this, only aesthetic changes can be made using the tool, and there are no plans to support editing actual gameplay data. + +## status & future work + +Dedit is currently only tested and working for demo versions 5 and 6 (DDNet), and the Teeworlds 0.6 network protocol. I might tinker with supporting older demo versions, but the use case for this would be slim to none. Support for the 0.7 network protocol is planned, but I don't know when I will get around to implementing it. + +Parsing of message chunks is currently working, but I have yet to expose this to the user. The most obvious use case for this would be printing the chat to stdout, similar to the [demo_extract_chat](https://github.com/ddnet/ddnet/blob/master/src/tools/demo_extract_chat.cpp) DDNet tool. + +I have done some experimental work on “merging” two demo files in an attempt to have data from multiple demos present in one. The use case for this would be having a demo from a PvP match include data for multiple POVs, since the server only sends player data for players close to you. The current experiments have not been successful, and the demos appear jittery when transitioning from one demo’s data to another. I might continue working on this feature, but I am not hopeful that it will work. + +## credits + +A couple of functions and implementations are heavily inspired by other sources. They are commented in the code with links to their references. Below are some credits and acknowledgements: + +- [libtw2](https://github.com/heinrich5991/libtw2): variable-length integer implementation, demo/snapshot documentation +- [teeworlds](https://github.com/teeworlds/teeworlds): Huffman implementation +- [ddnet](https://github.com/ddnet/ddnet): some demo writing specifics -- cgit v1.2.3