# CREDITS — demos/assets

Свободные (CC0) игровые ассеты для демо-сцен.
Все ассеты скачаны с **https://opengameart.org** (главный источник). Kenney.nl **не использовался** —
подходящие ассеты нашлись на OpenGameArt.
Дата загрузки: 2026-10-05.

Лицензии: **только CC0** (public domain dedication). CC-BY-SA и GPL не использовались.

---

## Аудио — звуковые эффекты (`audio/sfx/`)

| Файл | Название | Автор | Лицензия | Источник (URL) |
|---|---|---|---|---|
| `shoot_01.ogg` | sfx_weapon_singleshot1 (выстрел из пистолета) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `shoot_02.ogg` | sfx_wpn_machinegun_loop8 (очередь из автомата) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `explosion_01.ogg` | sfx_exp_medium1 (взрыв) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `jump_01.ogg` | sfx_movement_jump1 (прыжок) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `pickup_01.ogg` | sfx_coin_single1 (подбор предмета / монета) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `hurt_01.ogg` | sfx_damage_hit1 (урон игроку) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `step_01.ogg` | sfx_movement_footsteps1a (шаг) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `ui_click.ogg` | sfx_sounds_button1 (клик по кнопке меню) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `enemy_hit.ogg` | sfx_sounds_impact1 (попадание по врагу) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `enemy_die.ogg` | sfx_deathscream_android1 (смерть врага) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |
| `reload.ogg` | sfx_wpn_reload (перезарядка оружия) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/512-sound-effects-8-bit-style |

Пак-источник: **«The Essential Retro Video Game Sound Effects Collection [512 sounds]»** —
https://opengameart.org/sites/default/files/The%20Essential%20Retro%20Video%20Game%20Sound%20Effects%20Collection%20%5B512%20sounds%5D.zip

## Аудио — музыка (`audio/music/`)

| Файл | Название | Автор | Лицензия | Источник (URL) |
|---|---|---|---|---|
| `menu.ogg` | Title Screen (спокойная тема меню, зациклена) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/5-chiptunes-action |
| `action.ogg` | Level 1 (энергичная игровая тема, зациклена) | Juhani Junkala (SubspaceAudio) | CC0 | https://opengameart.org/content/5-chiptunes-action |

Пак-источник: **«5 Chiptunes (Action)»** —
https://opengameart.org/sites/default/files/5%20Action%20Chiptunes%20By%20Juhani%20Junkala.zip
(описание пака: «5 tracks, all seamlessly looping!»)

## Тайлы (`tiles/`)

| Файл | Название | Автор | Лицензия | Источник (URL) |
|---|---|---|---|---|
| `kenney_16x16.png` | Kenney 16x16 (основной тайлсет, равномерный грид 16×16) | surt (по тайлам Kenney) | CC0 | https://opengameart.org/content/kenney-16x16 |
| `platformer_tileset_16x16.png` | Generic Platformer Tileset (16x16) (тайлсет, равномерный грид 16×16) | etqws3 | CC0 | https://opengameart.org/content/generic-platformer-tileset-16x16-background |
| `bg_mountains.png` | Generic Platformer — Mountains (бесшовный фон, тайлится по горизонтали) | etqws3 | CC0 | https://opengameart.org/content/generic-platformer-tileset-16x16-background |
| `bg_clouds.png` | Generic Platformer — Clouds (бесшовный фон, тайлится по горизонтали) | etqws3 | CC0 | https://opengameart.org/content/generic-platformer-tileset-16x16-background |

---

## Требуется атрибуция

**Нет.** Все перечисленные файлы распространяются под **CC0 1.0 Universal**
(https://creativecommons.org/publicdomain/zero/1.0/) — атрибуция юридически не требуется,
указание авторов необязательно и делается как жест вежливости.

Готовые строки атрибуции (опционально, можно вставить в титры/README игры):

```
Sound effects: "The Essential Retro Video Game Sound Effects Collection" by Juhani Junkala (SubspaceAudio)
  — CC0, https://opengameart.org/content/512-sound-effects-8-bit-style

Music: "5 Chiptunes (Action)" by Juhani Junkala (SubspaceAudio)
  — CC0, https://opengameart.org/content/5-chiptunes-action

Tileset: "Kenney 16x16" by surt (based on Kenney's pixel tiles)
  — CC0, https://opengameart.org/content/kenney-16x16

Tileset & parallax backgrounds: "Generic Platformer Tileset (16x16) + Background" by etqws3
  — CC0, https://opengameart.org/content/generic-platformer-tileset-16x16-background
```

---

## Примечания по обработке

1. **Аудио перекодировано в OGG.** Оба исходных аудио-пака на OpenGameArt содержат только
   WAV-файлы (в музыкальном паке 3 из 5 треков весили 12–14 МБ). Чтобы получить имена ровно
   как в задании (`.ogg`) и уложиться в лимит размера музыкальных треков, файлы перекодированы
   в **Ogg Vorbis** (44100 Hz, стерео) через `ffmpeg`. Исходные WAV-файлы указаны в таблицах выше
   в колонке «Название». Потери для игровых нужд пренебрежимо малы; длительности совпадают
   с оригиналами с точностью до мс.
2. **Отклонённый ассет.** Первоначально рассматривался
   «Generic Platformer Tiles» (surt, CC0) — https://opengameart.org/content/generic-platformer-tiles —
   но его PNG оказался **не тайлсетом с равномерным гридом**, а мокапом-сценой со «свободной»
   раскладкой тайлов. По требованию задания он **не использован**. Вместо него взяты два
   тайлсета с проверенным равномерным гридом 16×16 (см. таблицу).
3. Файлы лицензий/информации об ассете положены рядом с ассетами как `*.LICENSE.txt`.

---

## Маскот движка (`art/mascot/`)

| Файл | Что это | Автор | Лицензия |
|---|---|---|---|
| `russiano_mascot_sheet.jpg` | исходный лист-спрайт маскота: 8 колонок × 4 строки, кадр 176×176, чёрный фон | владелец проекта | материалы проекта |
| `russiano_mascot_sheet.png` | то же в PNG (конвертация `sips`) | владелец проекта | материалы проекта |
| `russiano_mascot_sheet_a.png` | тот же лист с альфой: чёрный фон убран мягким colorkey (порог 32), приграничные пиксели полупрозрачные | производная от исходника | материалы проекта |

Важно: движок рисует спрайты обычным альфа-смешиванием, поэтому лист без альфы
давал бы чёрный прямоугольник вокруг персонажа. Игровой код должен использовать
**`russiano_mascot_sheet_a.png`**.

Маскот выбран владельцем проекта как лицо движка Russiano2D.

---

## Известные дефекты упакованных ассетов

| Файл | Дефект | Как обходим |
|---|---|---|
| `tiles/platformer_tileset_16x16.png` | фон клеток залит непрозрачным `#5fcde4`, альфы нет | монеты и звезда-финиш взяты из `tiles/kenney_16x16.png`, где альфа есть |
| `tiles/bg_mountains.png`, `tiles/bg_clouds.png` | тоже без альфы | цвет неба сцены совпадает с фоном слоёв, иначе параллакс читается прямоугольниками |
| `art/mascot/russiano_mascot_sheet.jpg` | тёмный, но не чисто чёрный фон (15,15,17) | игровой код использует `_a.png` — версию с вырезанным фоном |

Чинить сами файлы не стали: это исходные упаковки, а обход дешевле и виден в коде.

---

## ВН «Руси-тян» (`demos/russi_vn`)

Демо-новелла: позы героини, локации, музыка и звуки.

### Позы героини — `art/vn/russi/`

| Файл | Источник | Лицензия |
|---|---|---|
| `russi_neutral.png`, `russi_happy.png`, `russi_blush.png`, `russi_shy.png`, `russi_angry.png`, `russi_jealous.png`, `russi_caring.png` | Присланные автором проекта картинки Руси-тян | CC0 (автор — автор проекта) |

Обработка: `tools/make_vn_sprites.py` — альфа сохранена, кадры обрезаны по
**общей** рамке (1272×2304 → 636×1152, ×0.5), чтобы смена позы не двигала
героиню. Инструмент исходники не меняет.

### Локации — `art/vn/bg/`

| Файл | Название | Автор | Лицензия | Источник (URL) |
|---|---|---|---|---|
| `classroom_day.png` | Classroom 002 (кадр `classroom01_0.jpg`, кадрирован и подкрашен) | Midnight68 | CC0 | https://opengameart.org/content/classroom-002 |
| `rooftop_sunset.png` | 40 game backgrounds, painted style (кадр `bg-13.JPG` как небо заката + процедурная крыша) | rubberduck | CC0 | https://opengameart.org/content/40-game-backgrounds-1-painted-style-and-photorealistic |
| `bedroom_night.png`, `city_night.png`, `schoolyard_day.png` | Процедурная графика проекта | автор проекта | CC0 | генерируется `tools/make_vn_backgrounds.py` |

Исходные кадры CC0 лежат в `art/vn/src/` (`classroom.jpg`, `sky_sunset.jpg`):
без них инструмент не пересобрать, а весят они 300 КБ на двоих. Что именно
взято из каждого файла — в шапке `tools/make_vn_backgrounds.py`.

### Музыка и звук

| Файл | Название | Автор | Права | Источник |
|---|---|---|---|---|
| `audio/music/vn_tension.mp3` | bedroom-tension | автор проекта | его собственная работа (не CC0-ассет) | прислан автором, `[usesuno.com]` |
| `audio/music/vn_afternoon.mp3` | 静谧的午后 («Тихий полдень») | автор проекта | его собственная работа (не CC0-ассет) | прислан автором, `[usesuno.com]` |

Оба трека сжаты из WAV (28 и 29 МБ) в MP3 `libmp3lame q4` — иначе репозиторий
потолстел бы на 57 МБ. Рядом с каждым лежит `.LICENSE.txt` с подробностями.

| `audio/music/lobby_groove.mp3` | Lobby Groove | автор проекта | его собственная работа (не CC0-ассет) | прислан автором, `[usesuno.com]` |

`lobby_groove.mp3` — музыка меню-лаунчера (циклом, пока открыто меню). Сжат из
WAV 36 МБ в MP3 `libmp3lame 128 kbps` (≈2,9 МБ); почему MP3, а не OGG —
в `lobby_groove.mp3.LICENSE.txt` рядом с файлом.

Фон лаунчера — `art/menu/witch_lobby.png` (1672×941, предоставлен автором
проекта, подробности — в `witch_lobby.png.LICENSE.txt` рядом с файлом).
Прежний `art/menu/witch_menu.png` оставлен в репозитории.

Остальное — уже лежащие в демо-проекте CC0 записи Juhani Junkala (`audio/music/menu.ogg`, `action.ogg`,
`audio/sfx/ui_click.ogg`, `jump_01.ogg`, `pickup_01.ogg`, `enemy_hit.ogg`,
`explosion_01.ogg`). Выбор файла — в `demos/russi_vn/index.js`, расширения
проверяются через `$.fs.exists`, поэтому подмена любого файла на CC0-аналог
не ломает демо.
