diff --git a/README.md b/README.md
index 3d6c54f..d8e93fa 100644
--- a/README.md
+++ b/README.md
@@ -1,276 +1,104 @@
-[](https://tclient.app)
+# AMF Client
-[](https://github.com/TaterClient/TClient/actions/workflows/build.yaml)
-
-
+> Неофициальный клиент DDNet с гибким HUD, игровыми инструментами и Music Player.
-### Taters custom ddnet client with some modifications
+## О проекте
-Not guaranteed to be bug free, but I will try to fix them.
+AMF Client построен на основе Best Client и DDNet. Это не просто набор скинов: у клиента есть собственные модули интерфейса, редактор HUD, предикт ввода, визуальные настройки и интеграция с медиаплеером. Он остаётся совместимым с серверами DDNet и не меняет правила игры.
-If ddnet devs are reading this and want to steal my changes please feel free.
+> AMF Client не связан с официальной командой DDNet. Некоторые функции могут быть недоступны на серверах с ограничениями.
-Thanks to tela for the logo design, and solly for svg <3
+## Ссылки
-### Links
+- [Релизы AMF Client](https://github.com/AlyaDDNet/AMF-Client/releases)
+- [Discord-сообщество](https://discord.gg/7zG28thvRV)
+- [Инструкция по сборке](docs/BUILDING.md)
-[Discord](https://discord.gg/BgPSapKRkZ)
-[Website](https://tclient.app)
+## Скриншоты
-### Installation
+Снимки сделаны в текущей локальной сборке клиента.
-* Download the latest [release](https://github.com/sjrc6/TaterClient-ddnet/releases)
-* Download a [nightly (dev/unstable) build](https://github.com/sjrc6/TaterClient-ddnet/actions/workflows/fast-build.yml?query=branch%3Amaster)
-* [Clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) this repo and build using the [guide from DDNet](https://github.com/ddnet/ddnet?tab=readme-ov-file#cloning)
+### Настройки → AMF Client → Основное
-### Translation
+
-FTAPI (a simple wrapper for Google translate) will work out of the box, however it will quickly become overloaded
+### Настройки → AMF Client → Визуальное
-This is a guide for setting up [libretranslate](https://docs.libretranslate.com/guides/installation/)
+
-First you need an old version of python (3.8, 3.9 or 3.10), along with `pip`
+### Music Player
-If you do not have this you can use [conda](https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions) to install it
+
-```sh
-conda create -n libretranslate python=3.9
-conda activate libretranslate
-```
+## Главные возможности
-Then you can install and run libretranslate, do note that this requires large libraries like `torch` so it's a couple of gigs
+| Music Player | Редактор HUD |
+| --- | --- |
+| - Название трека, обложка, таймер и визуализатор
- Текст песни и плавная смена строк
- На Linux: MPRIS-плееры, включая Spotify, VLC, mpv и браузерные медиа-сессии | - Перенос и масштабирование AMF-модулей прямо в игре
- Сохранение позиций каждого элемента
- Отдельная настройка Music Player, индикаторов и HUD |
+| **Предикт ввода** | **Визуальная настройка** |
+| - Fast, Best, Saiko, Saiko+, Delta, F, Cloud и Meow
- Auto Margin по задержке и джиттеру
- Snap Tap для противоположных направлений | - Плавные анимации интерфейса, чата и таба
- Градиенты никнеймов и командных цветов
- Соотношение сторон, эффекты оружия и Motion Blur |
-```sh
-pip install libretranslate
-libretranslate
-```
+## Обзор функций
-You can then set `tc_translate_backend libretranslate`, the port is automatically 5000
-
-### Scripting
-
-TClient supports the [ChaiScript](https://chaiscript.com/) language for simple tasks
-
-Add scripts to your config dir then run them with `chai [scriptname] [args]`
-
-> [!CAUTION]
-> There are no runtime restrictions, you can easily `while (true) {}` yourself or run out of memory, be careful!
-
-```js
-var a // Declare a variable
-a = 1 // Set it
-var b = 2 // Do both at once
-var c = "strings"
-var d = ["lists", 2] // not strongly typed
-// var e, f = d // no list deconstruction
-print(d[0] + to_string(d[1])) // explicit to_string required for string concat
-var bass = "ba" + "s" + "s"
-var ass = bass.substr(1, -1) // both indices required, use -1 for end
-if (a == b) { // brackets required
- print("this will never happen") // output
-} else if (c == "strings") { // string comparison
- exec("echo hello world") // run console stuff
-}
-var current_game_mode = state("game_mode") // Get the current game mode, all states you can get are listed below
-def myfunc(a, b, c) { // yeah it uses def for function definition idk
- print(a, b, c)
- if (a == b) { return "early" }
- c // last statement returns like in rust
-}
-print(myfunc(1, 2, 3)) // prints "early"
-for (var i = 0; i < 10; i += 1) { // for loops (c style)
- print(i) // auto converts to string, will throw if it cant
-}
-return "top level return"
-```
+### Визуальное
-Here is a list of states which are available:
-
-| Return type | Call | Description |
-| --- | -- | --- |
-| `string` | `state("game_mode")` | Returns the current game mode name (e.g., “DM”, “TDM”, “CTF”). |
-| `bool` | `state("game_mode_pvp")` | Whether the current mode is PvP. |
-| `bool` | `state("game_mode_race")` | Whether the current mode is a race mode. |
-| `bool` | `state("eye_wheel_allowed")` | Whether the “eye wheel” feature is allowed on this server. |
-| `bool` | `state("zoom_allowed")` | Whether camera zoom is allowed. |
-| `bool` | `state("dummy_allowed")` | Whether using a dummy client is allowed. |
-| `bool` | `state("dummy_connected")` | Whether the dummy client is currently connected. |
-| `bool` | `state("rcon_authed")` | Whether the client is authenticated with RCON (admin access). |
-| `int` | `state("team")` | The player’s current team number. |
-| `int` | `state("ddnet_team")` | The player’s DDNet team number. |
-| `string` | `state("map")` | The name of the current or connecting map. |
-| `string` | `state("server_ip")` | The IP address of the connected or connecting server. |
-| `int` | `state("players_connected")` | Number of currently connected players. |
-| `int` | `state("players_cap")` | Maximum number of players the server supports. |
-| `string` | `state("server_name")` | The server’s name. |
-| `string` | `state("community")` | The server’s community identifier. |
-| `string` | `state("location")` | The player’s approximate map location (“NW”, “C”, “SE”, etc.). |
-| `string` | `state("state")` | The client’s connection state (e.g., “online”, “offline”, “loading”, “demo”). |
-| `int` | `state("id", string Name)` | Finds and returns a client ID by player name (exact or case-insensitive match). |
-| `string` | `state("name", int Id)` | Returns the name of a player given their client ID. |
-| `string` | `state("clan", int Id)` | Returns the clan name of a player given their client ID. |
-
-```js
-var what = include("thatscript.chai") // you can include other scripts, they use absolute paths from config dir
-print(what) // prints "top level return"
-if (!file_exists("file")) { // check if a file exists, also absolute from config dir
- throw("why doesn't this file exist")
-}
-```
+- Music Player: обложка или статичный цвет, масштаб текста, столбики и положение визуализатора, скругление, текст песни и текущее время.
+- Плавный HUD и анимации меню, чата, таблицы счёта и стартового экрана.
+- Индикатор AMF Client возле никнеймов и фильтр серверов с пользователями AMF Client.
+- Настраиваемое соотношение сторон: пресеты, собственный размер и безопасное подтверждение перед применением.
+- Градиентные никнеймы, командные цвета, эффекты винтовки и дробовика, движущиеся тайлы и Tune Zone.
+- Индикаторы клавиш/мыши с CPS и стилями Default или Minecraft.
+- Motion Blur на Vulkan.
-There is also `math` and `re` modules
-
-```js
-import("math")
-math.pi
-math.e
-math.pow(1, 2)
-math.sqrt(3)
-math.sin(1)
-math.cos(1)
-math.tan(1)
-math.asin(1)
-math.acos(1)
-math.atan(1)
-math.atan2(1, 1)
-math.log(1)
-math.log10(1)
-math.log2(1)
-math.ceil(1)
-math.floor(1)
-math.round(1)
-math.abs(1)
-```
+### Игра
-```js
-import("re")
-
-if(re.test(re.compile(".+?ello.+?"), "hello")) { // re.test(r, string)
- print("hi")
-}
-re.match(re.compile("\\d"), "h3ll0", false, fun[](str, match, group) { // re.match(r, string, global, callback)
- print("not global: " + to_string(match) + " " + str)
-})
-re.match(re.compile("\\d"), "h3ll0", true, fun[](str, match, group) {
- print("global: " + to_string(match) + " " + str)
-})
-re.match(re.compile("(h3)l(l0)"), "h3ll0", false, fun[](str, match, group) {
- print("groups: " + to_string(match) + " " + to_string(group) + " " + str)
-})
-print(re.replace(re.compile("\\d"), "h3ll0", true, fun[](str, match, group) { // re.replace(r, string, global, callback)
- if (str == "3") {
- return "e"
- } else if (str == "0") {
- return "o"
- }
- return str
-}))
-```
+- Режимы предикта Fast, Best, Saiko, Saiko+, Delta, F, Cloud и Meow.
+- Auto Margin для подстройки запаса предикта по сети.
+- Snap Tap для приоритета последнего нажатого направления.
+- Focus Mode: скрывает отвлекающие элементы по выбору — имена, эффекты, HUD, чат, таблицу счёта и музыкальный плеер.
-### Settings Page
+### Вне меню
-> [!NOTE]
-> This is out of date
+- Discord Rich Presence.
+- Профили, конфиги, бинды и колесо биндов.
+- Перевод чата.
+- Скрипты ChaiScript. Они не запускаются в песочнице: используй только файлы, которым доверяешь.
-
-
-
-
-
-
+## Где искать настройки
-
+1. Открой **Настройки** через значок шестерёнки.
+2. Справа выбери **AMF Client**.
+3. **Основное** — ввод, Auto Margin, Snap Tap, Focus Mode и системные настройки.
+4. **Визуальное** — HUD, Music Player, эффекты, индикаторы и соотношение сторон.
+5. Для редактора HUD подключись к серверу и нажми **Редактор HUD**.
-### Features
+## Сборка
-> [!NOTE]
-> This is out of date
+Сначала инициализируй подмодули:
+```sh
+git submodule update --init --recursive
```
-tc_run_on_join_console
-tc_run_on_join_delay
-tc_nameplate_ping_circle
-tc_hammer_rotates_with_cursor
-tc_freeze_update_fix
-tc_show_center
-tc_skin_name
-tc_color_freeze
-tc_freeze_stars
-tc_white_feet
-tc_white_feet_skin
-tc_mini_debug
-tc_last_notify
-tc_last_notify_text
-tc_last_notify_color
-tc_cursor_in_spec
-tc_render_nameplate_spec
-tc_fast_input
-tc_fast_input_others
-tc_improve_mouse_precision
-tc_frozen_tees_hud
-tc_frozen_tees_text
-tc_frozen_tees_hud_skins
-tc_frozen_tees_size
-tc_frozen_tees_max_rows
-tc_frozen_tees_only_inteam
-tc_remove_anti
-tc_remove_anti_ticks
-tc_remove_anti_delay_ticks
-tc_unpred_others_in_freeze
-tc_pred_margin_in_freeze
-tc_pred_margin_in_freeze_amount
-tc_show_others_ghosts
-tc_swap_ghosts
-tc_hide_frozen_ghosts
-tc_pred_ghosts_alpha
-tc_unpred_ghosts_alpha
-tc_render_ghost_as_circle
-tc_outline
-tc_outline_in_entities
-tc_outline_freeze
-tc_outline_unfreeze
-tc_outline_tele
-tc_outline_solid
-tc_outline_width
-tc_outline_alpha
-tc_outline_alpha_solid
-tc_outline_color_solid
-tc_outline_color_freeze
-tc_outline_color_tele
-tc_outline_color_unfreeze
-tc_player_indicator
-tc_player_indicator_freeze
-tc_indicator_alive
-tc_indicator_freeze
-tc_indicator_dead
-tc_indicator_offset
-tc_indicator_offset_max
-tc_indicator_variable_distance
-tc_indicator_variable_max_distance
-tc_indicator_radius
-tc_indicator_opacity
-tc_indicator_inteam
-tc_indicator_tees
-tc_profile_skin
-tc_profile_name
-tc_profile_clan
-tc_profile_flag
-tc_profile_colors
-tc_profile_emote
-tc_auto_verify
-tc_rainbow
-tc_rainbow_others
-tc_rainbow_mode
-tc_reset_bindwheel_mouse
-add_profile
-add_bindwheel
-remove_bindwheel
-delete_all_bindwheel_binds
-+bindwheel_execute_hover
-+bindwheel
-tc_regex_chat_ignore
-tc_color_freeze_darken
-tc_color_freeze_feet
-tc_spec_menu_ID
-tc_limit_mouse_to_screen
+
+Быстрая сборка клиента на Linux:
+
+```sh
+cmake -S . -B build -G Ninja
+cmake --build build --target game-client -j"$(nproc)"
```
+
+`$(nproc)` задействует все доступные ядра процессора.
+
+Для полной Linux-интеграции Music Player поставь DBus и PulseAudio-совместимые библиотеки. С PipeWire визуализатор работает при включённом PulseAudio compatibility service.
+
+- Debian/Ubuntu: `libdbus-1-dev libpulse-dev`
+- Arch Linux: `dbus libpulse`
+- Fedora: `dbus-devel pulseaudio-libs-devel`
+
+Без этих библиотек клиент всё равно собирается, но часть возможностей Linux Music Player недоступна.
+
+## Благодарности и лицензия
+
+Спасибо авторам DDNet и Best Client за основу проекта, а также участникам и тестерам AMF Client.
+
+Код DDNet/Teeworlds, сторонние библиотеки и ассеты сохраняют свои лицензии. Подробности — в [license.txt](license.txt) и файлах лицензий внутри соответствующих каталогов.
diff --git a/docs/assets/screenshots/amf-general.png b/docs/assets/screenshots/amf-general.png
new file mode 100644
index 0000000..ff24ecb
Binary files /dev/null and b/docs/assets/screenshots/amf-general.png differ
diff --git a/docs/assets/screenshots/amf-music-player.png b/docs/assets/screenshots/amf-music-player.png
new file mode 100644
index 0000000..60f5587
Binary files /dev/null and b/docs/assets/screenshots/amf-music-player.png differ
diff --git a/docs/assets/screenshots/amf-visual.png b/docs/assets/screenshots/amf-visual.png
new file mode 100644
index 0000000..577ca08
Binary files /dev/null and b/docs/assets/screenshots/amf-visual.png differ