You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,22 @@
5
5
Формат основан на [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
и этот проект придерживается [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [3.1.1]
9
+
10
+
### Added
11
+
-**Project template paths** — `spritePro.cli --create` теперь создаёт `config.py` с готовыми путями `PROJECT_ROOT`, `ASSETS_DIR`, `AUDIO_DIR`, `IMAGES_DIR`, `SCENES_DIR` и `MAIN_LEVEL_PATH`, чтобы в новых проектах не нужно было каждый раз вручную собирать `Path(__file__).resolve()...`.
12
+
-**Project template events file** — в шаблон добавлен `game_events.py` с базовым событием `game_started`, подпиской через `s.events.connect(...)`, отправкой через `s.events.get_event(...).send(...)` и логом через `s.debug_log_info(...)`.
13
+
14
+
### Changed
15
+
-**Project template structure** — шаблон `--create` по умолчанию создаёт `main.py`, `config.py`, `game_events.py`, `scenes/main_scene.py`, `scenes/second_scene.py` и `scenes/main_level.json`. Вторая сцена остаётся почти пустой заготовкой для меню, паузы, магазина или другого уровня.
16
+
-**Multiplayer entrypoint** — рекомендации, demoGames и `multiplayer_course` обновлены под единый app-level запуск через `s.run(..., multiplayer=True)`, а `s.networking.run(...)` оставлен как low-level runner.
17
+
-**Версия библиотеки** — релиз обновлён до `3.1.1`.
18
+
19
+
### Fixed
20
+
-**Editor runtime image sizing** — runtime-сцены, созданные в редакторе, снова корректно подхватывают размер image-объектов в embedded/Kivy-сценариях вместо fallback-белого прямоугольника.
Copy file name to clipboardExpand all lines: DOCUMENTATION_INDEX.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -427,6 +427,7 @@
427
427
## 🔄 Обновления документации
428
428
429
429
### Последние обновления
430
+
-**2026-03 (v3.1.1)**: Обновлены шаблон `spritePro.cli --create`, multiplayer docs и курс: в шаблон добавлены `config.py` с путями к проекту/ассетам, `game_events.py` с базовым событием через `EventBus`, а multiplayer-примеры переведены на единый запуск через `s.run(..., multiplayer=True)`. Обновлены [README.md](README.md), [docs/game_loop.md](docs/game_loop.md), [docs/networking.md](docs/networking.md), [multiplayer_course/README.md](multiplayer_course/README.md).
430
431
-**2026-03 (v3.1.0)**: Добавлена документация по виртуальному разрешению `reference_size`: как запускать игру в маленьком окне, но держать `s.WH`, `s.WH_C`, UI, камеру и input в координатах большого логического экрана. Обновлены [README.md](README.md) и [docs/game_loop.md](docs/game_loop.md).
431
432
-**2026-03 (v3.0.3)**: Обновлена mobile/Android-документация: добавлены рекомендации по preview на компактных окнах, описаны режимы ориентации `landscape`, `portrait`, `auto` для APK, уточнён workflow проверки layout на разных экранах. Обновлены [README.md](README.md), [docs/building.md](docs/building.md), [docs/mobile.md](docs/mobile.md).
432
433
-**2026-03 (v3.0.2)**: Android/APK-документация уточнена по реально проверенному запуску после сборки: добавлены рекомендации по `adb logcat`, проверке ранних Python traceback и по явному включению свежего локального `spritePro` в проект игры, если тестируются непубликованные фиксы. Обновлены [README.md](README.md), [docs/building.md](docs/building.md), [docs/mobile.md](docs/mobile.md), [docs/kivy_hybrid.md](docs/kivy_hybrid.md).
Copy file name to clipboardExpand all lines: README.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -142,7 +142,7 @@ s.run(
142
142
- ✅ **Автолейаут (Layout)** - flex, сетка, круг, линия для автоматического размещения дочерних спрайтов ([документация](docs/layout.md))
143
143
- ✅ **ScrollView** — скроллируемая область для контента (лейаут), колёсико и перетаскивание мышью, опциональная маска (клиппинг по viewport)
144
144
- ✅ **Готовые сцены (readyScenes)** — подключаемые сцены: **ChatScene** (мультиплеерный чат с историей, скроллом и маской) и **ChatStyle** для настройки оформления
145
-
- ✅ **Мультиплеер** — сетевые игры: TCP relay, контекст (send/poll/send_every), EventBus; быстрый старт через `s.networking.run()`. **Готовое лобби** (`run(use_lobby=True)`): один экран — имя, хост/клиент, порт, IP, список игроков; у хоста кнопки «В игру» и «Назад», у клиента — «Назад». По нажатию «В игру» игра запускается у обоих. Подробно: [Networking — лобби](docs/networking.md#подробная-инструкция-лобби-use_lobbytrue). Мини-курс в папке `multiplayer_course/` — 10 уроков от обмена сообщениями до готовой мини-игры.
145
+
- ✅ **Мультиплеер** — сетевые игры: TCP relay, контекст (send/poll/send_every), EventBus; теперь можно запускать прямо через `s.run(..., multiplayer=True)` без отдельного `multiplayer_main`-runner, а `s.networking.run()` оставлен как low-level вариант. **Готовое лобби** (`s.run(..., multiplayer_use_lobby=True)`): один экран — имя, хост/клиент, порт, IP, список игроков; у хоста кнопки «В игру» и «Назад», у клиента — «Назад». По нажатию «В игру» игра запускается у обоих. Подробно: [Networking — лобби](docs/networking.md#подробная-инструкция-лобби-use_lobbytrue). Мини-курс в папке `multiplayer_course/` — 10 уроков от обмена сообщениями до готовой мини-игры.
146
146
- ✅ **Mobile-рантайм** — запуск через `Kivy`: `s.run(..., platform="kivy")`, встроенный host для touch-ввода и мобильных demo
-**NetServer** — TCP relay (пересылает сообщения всем клиентам)
89
89
-**NetClient** — клиент с `send()` и `poll()`
90
-
-**s.networking.run()** — единая точка входа с разными режимами
90
+
-**s.run(..., multiplayer=True)** — рекомендуемая единая точка входа для современных multiplayer-игр; `s.networking.run()` оставлен как low-level runner
- один и тот же `s.run(...)` для singleplayer и multiplayer
81
+
-`scene` и `setup` могут принимать `net` и `role`, если они нужны
82
+
- те же terminal-аргументы `--quick`, `--server`, `--host_mode`, `--host`, `--port`, `--clients` работают без отдельного вызова `s.networking.run(...)`
83
+
-`--kivy` и `--pygame` тоже можно передавать в тот же запуск
Утилита запуска для быстрого мультиплеера с автозапуском клиента/серверов.
48
99
@@ -60,7 +111,7 @@ s.networking.run(
60
111
```
61
112
62
113
-**По умолчанию** (`use_lobby=False`): без аргументов запускается быстрый режим (два окна — хост и клиент). Удобно для разработки.
63
-
-**С лобби** (`use_lobby=True`): одно окно. Сначала экран настройки: имя, выбор «Хост» / «Клиент», порт (и для клиента — IP). После подключения — список игроков (roster). У хоста: кнопки «Назад» и «В игру»; у клиента: кнопка «Назад». «Назад» отключает соединение и возвращает к настройке. По нажатию «В игру» вызывается ваша `multiplayer_main(net, role)`. Для готового приложения достаточно заменить вызов на `s.networking.run(use_lobby=True)`.
114
+
-**С лобби** (`use_lobby=True`): одно окно. Сначала экран настройки: имя, выбор «Хост» / «Клиент», порт (и для клиента — IP). После подключения — список игроков (roster). У хоста: кнопки «Назад» и «В игру»; у клиента: кнопка «Назад». «Назад» отключает соединение и возвращает к настройке. По нажатию «В игру» вызывается ваша `multiplayer_main(net, role)`. Для нового кода удобнее использовать `s.run(..., multiplayer=True, multiplayer_use_lobby=True)`, а `s.networking.run(use_lobby=True)` оставить как low-level вариант.
64
115
65
116
Важно: `run()` нужно вызывать из файла, а не из REPL.
66
117
@@ -152,9 +203,9 @@ while True:
152
203
other.set_position(remote_pos)
153
204
```
154
205
155
-
## Интеграция через s.networking.run()
206
+
## Интеграция через `s.networking.run()`
156
207
157
-
Создайте функцию входа и вызовите `run()`:
208
+
Если нужен старый или более явный low-level flow, можно оставить отдельную entry-функцию:
Если сама игра уже переведена на`s.run(...)`, обычно проще оставить это внутри `your_multiplayer_main(net, role)` и считать `run_multiplayer_lobby(...)` только экраном подключения.
299
+
Если игра уже запускается через`s.run(...)`, то для нового кода обычно удобнее перейти на `s.run(..., multiplayer=True)` и использовать `s.networking.run(...)` только как низкоуровневый runner.
245
300
246
301
-**Константа события:**`from spritePro.readyScenes import EVENT_START_GAME` — имя события `"start_game"` для согласования с своей логикой.
0 commit comments