-------------------

Tetris-Karro v2.x / 2019
GPLv3.

-------------------

Системные требования:

Processor: Intel® Pentium® Processor P6200 and newer.
Memory: 2 GB RAM.
Graphics: OpenGL 2.1+ / Nvidia GeForce 200 series and newer, AMD Radeon HD 5000 Series and newer, Intel HD Graphics in Intel P6200 (GMA 4500) processors and newer.
Hard Drive: 250+ MB HD space.
Display resolution: 1280 x 720.
HTML5: Chrome Web Browser (base).

* Not recommended >AMD Radeon< (GNU/Linux).
* Not recommended >Nouveau nvidia driver<.
* Recommended >Enhance App Settings< for nvidia driver (AA+AS).

----------------------------------------------------------------------------

Тестируемая Конфигурация:

- Intel® Core™ i5- 4690K @4.2 GHz.
- DDR3 (1600) - 24GB (Dual).
- Ubuntu 18.04.x /  Linux Mint 19.x / x-86_64.
- DE / Cinnamon 4.0.x.
- Kernel 4.15
- Multi-monitor 4960x1080
- Intel® HD Graphics 4600
- Nvidia GTX-1050 TI Windforce ddr5 4GB / 128 bit.
- Nvidia GTX-650 ddr5 1024 mb / 128 bit.
- Drivers 430.40

-------------------

Описание:

Tetris-Karro подразумевает классическую версию Tetris. Автор модифицирует основу на свое усмотрение.

- Скорость фигур в игре случайная.
- Очистка дна стакана, доступно в любое время.
- Новые фигуры в игровом стакане.

Ранее в версии 2.0.0 были добавлены две новые фигуры, точка (один блок) и двоеточие (два блока).
Игровой процесс был ориентирован на внимательность бесконечного наполнения стакана, игрок мог проиграть от
избытка усталости игрового процесса.

В версии 2.0.5, точка (один блок) и двоеточие (два блока) изменены на крест (пять блоков) и уголок (три блока).
Уголок дополняет Крест по логике постановки на дно стакана, единичная установка Уголка универсальна.
Игровой процесс ориентирован на аномалии наполнения стакана.

Лицензия использования программы GNU GPL 3.
Для получения исходных кодов свяжитесь с авторами проекта (или используйте ссылку на сайте разработчиков).
Консультант проекта в психологической основе дизайна и жанра, психолог Карро Елена Александровна.
Проект предоставляется на условиях «КАК ЕСТЬ».

***

Интерфейс ENG:

Timer - общий внутриигровой таймер.

Session - Число текущих сессий игрока (сброса на дне стакана блоков).

Best Hits - Общие число заполненных горизонтальных рядов.

Hit Lines - Общие число заполненных горизонтальных рядов за одну сессию.

Total Shapes - Общие число использованных фигур за одну сессию.

(S)ound off - Отключить все звуки в игре.

(P)ause - Установка паузы игры.

(R)estart - Очистить на дне стакана все блоки, увеличить счетчик сессии.

Start - Снятие режима паузы.

Exit - закрыть приложение.


Интерфейс RU:

Таймер - общий внутриигровой таймер.

Сессия игры - Число текущих сессий игрока (сброса на дне стакана блоков).

Всего Хитов - Общие число заполненных горизонтальных рядов.

Хиты Линий - Общие число заполненных горизонтальных рядов за одну сессию.

Всего Фигур - Общие число использованных фигур за одну сессию.

(З)вук ВЫКЛ - Отключить все звуки в игре.

(П)ауза - Установка паузы игры.

(Р)естарт - Очистить на дне стакана все блоки, увеличить счетчик сессии.

Старт - Снятие режима паузы.

Выход - закрыть приложение.


Интерфейс элементы:

Если вы управляете фигурами в игре только на клавиатуре, не используя манипулятор (мышь, геймпад), и решили использовать GUI элементы с помощью курсора…

- Клик, выделить элемент  GUI.
- Переключение элементов, клавиша TAB.
- Подтвердить действие,  клавиша Rctrl (кнопка геймпада А).

Рекомендовано использовать только одну систему управления в игре.


***

Классическая версия Tetris:

Случайные фигурки тетрамино падают сверху в прямоугольный стакан.
В полёте игрок может поворачивать фигурку на 90° и двигать её по горизонтали.
Также можно «сбрасывать» фигурку, то есть ускорять её падение, когда уже решено,
куда фигурка должна упасть.

Фигурка летит до тех пор, пока не наткнётся на другую фигурку либо на дно стакана.
Если при этом заполнился горизонтальный ряд, он пропадает и всё, что выше него,
опускается на одну клетку.

Темп игры постепенно увеличивается. Игра заканчивается, когда новая фигурка не может поместиться в стакан.
Игрок получает очки за каждый заполненный ряд, поэтому его задача — заполнять ряды,
не заполняя сам стакан (по вертикали) как можно дольше, чтобы таким образом получить как можно больше очков.

Начисление очков в разных версиях «Тетриса» довольно разнообразное.
Очки могут начисляться за убранные линии, за сброшенные фигурки, за переход на новую скорость и тому подобное.

При начислении очков за линии количество очков обычно зависит от того, сколько линий убрано за один раз.
Например, в китайских «Тетрисах», популярных в СНГ в 1990-х годах, начисление очков обычно было таким:
1 линия — 100 очков, 2 линии — 300 очков, 3 линии — 700 очков, 4 линии (то есть, сделать Тетрис) — 1500 очков.
То есть, чем больше линий убирается за один раз, тем больше отношение количества очков к количеству линий.
Любопытно, что тетрисом во многих версиях игры также называется действие,
после которого исчезает сразу 4 линии. Это можно сделать только одним способом
— сбросить «палку» (фигурку, в которой все клетки расположены на одной линии)
в «шахту» ширины 1 и глубины как минимум 4.

Обычно игрок проигрывает из-за того, что не может справиться со слишком быстрым темпом игры, или потому,
что данная реализация реагирует на клавиши слишком медленно по сравнению с ускоряющимся темпом падения фигурок,
вследствие чего игрок уже не может в принципе приложить достаточное количество сдвигов к фигурке.

Была опубликована статья, автор которой доказывает, что даже если бы игрок реагировал мгновенно
и всегда принимал правильные решения, то и в этом случае он бы в конечном счёте проиграл.
Проблемой являются S- и Z-образные фигурки. Достаточно большое количество S-фигурок заставит игрока оставить
дырку в правом нижнем углу. Достаточно большое количество Z-фигурок после этого заставит игрока оставить
дырку в левом углу следующего ряда, не заполнив предыдущую дырку. Если после этого опять выпадет
достаточно много S-фигурок, достаточно много Z-фигурок, и так много раз,
заполнится (с дырками по краям) всё поле, и для следующей фигурки места не останется.
Если генератор случайных чисел идеален и выдает дискретное равномерное распределение,
любая (в том числе и такая) комбинация рано или поздно выпадет.

-------------------

Основные файлы игры:

../data.pck (ресурсы игры).
../start_tetris.64 (бинарный файл движка Godot).

Запуск игры:

./start_tetris.64

-------------------

Отладка:

./start_tetris.64 -h

Usage: ./start_tetris.64 [options] [path to scene or 'engine.cfg' file]

Options:
	-h, -help : Print these usage instructions.
	-path <dir> : Path to a game, containing engine.cfg.
	-test <test> : Run a test (string, containers, math, render, particles, multimesh, gui, io, shaderlang, physics).
	-r <width>x<height> : Request window resolution.
	-p <X>x<Y> : Request window position.
	-f : Request fullscreen.
	-mx : Request maximized.
	-w : Request windowed.
	-t : Request always-on-top.
	-vd <driver> : Video driver (GLES2).
	-ldpi : Force low-dpi mode (OSX only).
	-ad <driver> : Audio driver (PulseAudio, ALSA).
	-rthread <mode> : Render thread mode ('unsafe', 'safe', 'separate').
	-s, -script <script> : Run a script.
	-d, -debug : Debug (local stdout debugger).
	-rdebug <address> : Remote debug (<ip>:<port> host address).
	-fdelay <msec> : Simulate high CPU load (delay each frame by [msec]).
	-timescale <msec> : Define custom timescale (time between frames in [msec]).
	-bp : Breakpoint list as source::line comma separated pairs, no spaces (%20 instead).
	-v : Verbose stdout mode.
	-lang <locale> : Use a specific locale.
	-rfs <host/ip>[:<port>] : Remote filesystem.
	-rfs_pass <password> : Password for remote filesystem.
	-dch : Disable crash handler when supported by the platform code.

При возникновении критических проблем рендеринга потока...
Режим рендеринга потока («небезопасный», «безопасный», «отдельный»).
-rthread <mode> : Render thread mode ('unsafe', 'safe', 'separate')

./start_tetris.64 -rthread unsafe

-------------------

Управление:

* Геймпад Xbox-360 / Logitech Gamepad F310

- Стики (Оси), вниз - опустить фигуру, лево и право управление по горизонтали.
- Dpad, вверх - поворот фигуры, вниз - опустить фигуру, лево и право управление по горизонтали.
- Кнопка Y, поворот фигуры.
- Кнопка A, подтвердить выбор элемента интерфейса.
- Кнопки L1/R1, выбор элемента интерфейса.
- Start - Пауза.
- Select - Сброс стакана, фигур.

* Клавиатура

- Стрелки, вниз - опустить фигуру, вверх поворот фигуры, лево и право управление по горизонтали.
- Пробел, поворот фигуры.
- ESC, пауза.
- Enter, сброс паузы.
- R, очистить на дне стакана все блоки, увеличить счетчик сессии.
- S, отключить все звуки в игре.
- CTRL+S, включить все звуки в игре.

* GUI Стрелки на экране

- Стрелки, вниз - опустить фигуру, вверх поворот фигуры, лево и право управление по горизонтали.

-------------------

Редактирование Локализаций:

- Основной файл text.csv
- Находится в корневой папке игры ../Lang/text.csv
- Обязательная кодировка UTF-8 (.csv)
- Шрифт должен поддерживать Юникод.
- Добавить в 4 столбец например DE, опираясь на текст др языков, внести аналог перевода.
- Импортировать файл языка в редакторе движка игры.
- Добавить логику переключения языка в редакторе движка игры.
- Запуск без логики переключения языка "./start_tetris.64 -lang de".
- Переключение локализации игры происходит на начальном экране (зеленые кнопки EN и RU).
- Упращена система помощи по управлению (отображение).

-------------------

Ход изменения версий:

Path 0.01 - 1.8.7

- Создание общего хода игровой логики, текстур, звука и тд.

Path 1.8.7 - 1.8.8

- Правка бинарников для всех версий ОС.
- Принудительная анизотропия для всех текстур.
- Смена размера шрифта монитора очков игрока.
- Правка размера текстур, описание управления.
- Правка анимации среднего колобка.
- Добавлена анимация GUI интерфейса.

Path 1.8.8 - 1.9.0

- Добавлена анимация GUI интерфейса (взрыв).
- Убрана анимация 2х колобков.
- Добавлен новый эффект для молний.
- Правка логики сцены BG.
- Смена текста под логотипом.
- Добавлена анимация GUI интерфейса (стрелки).
- Правка цветовой гаммы общего 2D света.

Path 1.9.0 - 1.9.1

- Правка GUI интерфейса (взрыв).
- Правка текстур взрыва, анимации, цвета взрыва.
- Правка GUI интерфейса (молнии).
- Добавлены карты нормалей для фоновых изображений.
- Правка фоновых изображений.
- Добавлена система частиц для анимации взрыва.
- Правка логики Sprite (молнии).
- Правка логики Sprite (взрыв).
- Правка анимации, молнии и взрыв.
- Правка скрипта fx_01.gd
- Правка скрипта fx_02.gd
- Добавлена разность анимации молнии.
- Правка tetris_doc.txt
- Правка add_joy.png
- Правка add_key.png

Path 1.9.1 - 1.9.2

- Смена основного цвета шрифта GUI интерфейса.
- Смена основного цвета теней шрифта GUI интерфейса.
- Правка GUI интерфейса (взрыв).
- Правка GUI интерфейса (молнии).
- Правка GUI интерфейса статистики.

Path 1.9.2 - 1.9.3

- Правка GUI интерфейса в режиме паузы.
- Правка GUI интерфейса управление.
- Правка логики узлов паузы.
- Добавлен fx_03.gd / GUI интерфейса управление.
- Правка цвета теней текста / GUI интерфейса.

Path 1.9.3 - 1.9.4

- Правка GUI интерфейса управление.
- Правка текста при игровых событиях.
- Добавлен smily_good_fx при игровых событиях.
- Добавлен новый фон для игрового стакана.

Path 1.9.4 - 1.9.5

- Смена кнопки пауза-старт.
- Смена кнопки пауза-старт, анимация.
- Правка GUI интерфейса надпись paused.
- Правка GUI интерфейса (взрыв).
- Правка GUI интерфейса (good).

Path 1.9.5 - 1.9.7

- Переработка всех GUI кнопок.
- Правка логики откл звка.
- Правка текста при GUI событиях.
- Дополнен tetris_doc.txt

Path 1.9.6 - 1.9.8

- Добавлены доп источники освещения.
- Правка GUI интерфейса.
- Добавлен Credits (строка-пауза).
- Версия игры обновлена, согласно новой версии движка Godot (2.1.1).
- Правка 90% текстур.
- Правка BG фонов.

Path 1.9.8 - 1.9.9

- Правка GUI интерфейса / шейдеры.
- Правка GUI интерфейса / тени текст.
- Правка GUI интерфейса / общие элементы.
- Добавлен GUI интерфейс / опрос модели джойстика.
- Добавлен GUI интерфейс / проверка клавиш управления.

Path 1.9.9 - 1.9.10

- Правка tetris_doc.txt
- Правка базовой версии сайта.
- Обновление игрового движка Godot Engine 2.1.3
- Правка базовой версии сайта, проверка md5sum для бинарных файлов.
- Добавлена базовая версия сайта (http://crimea-karro.ru/dev_karro/tetris/).


Path 1.9.10 - 2.0.0

- Правка tetris_doc.txt
- Правка строки Credits.
- Новые звуки, старт, пауза.
- Доработки текстуры блока.
- Доработки текстуры фона, кубы.
- Доработки эффекта фона, кубы.
- Доработки эффекта фона, смаил.
- Удален эффект линии (огненная сфера).
- Обновление игрового движка Godot Engine 2.1.4.
- Правка логики, расположения интерфейса пользователя.
- Удален звук мелодии при повторном рестарте сессии игры.
- Дополнительные кнопки управления (клавиши), пауза, звук, сброс и тд.
- Две новые фигуры, точка (один блок) и двоеточие (два блока).
- Импорт нового шрифта с продержкой Юникода (NotoSans).
- Оптимизация интерфейса пользователя для нового шрифта (NotoSans).
- Доработки эффекта фона, молния (анимация, расположение).
- Проверка поддержки контролеров (геймпадов) серии X-box 360.
- Замена названия кнопки, (R)estart - Очистить на дне стакана все блоки, увеличить счетчик сессии.
- Оптимизация размещения ресурсов проекта (отдельные папки ресурсов, sound, scripts и тд).
- Добавлена стартовая сцена с логотипом, только при первом запуске проекта.
- Добавлен общий внутреигровой таймер (время игры/работы приложения).
- Добавлена начальная локализация проекта, русский и английский язык.
- Правка базовой версии сайта (http://crimea-karro.ru/dev_karro/tetris/).
- Добавлена начальная логика переключения локализации проекта, при старте (GUI).
- Удаление анимации интерфейса пользователя (левый блок цифр).
- Корректировка архивов игрового проекта для разных типов ОС (загрузка / сайт).

Path 2.0.0 - 2.0.1

- Правка tetris_doc.txt
- Корректировка BG фонов и эффектов.
- Добавлен новый эффект при Хите (удалении линии).
- Корректировка интерфейса пользователя, новый эффект.
- Правка алгоритма случайной смены скорости фигур.
- Дополнительные сообщения при росте сессий игрового процесса.
- Дополнительный цвет стрелок интерфейса управления (фокус).
- Корректировка интерфейса взаимодействия при управлении мышью (стрелки/кнопки).
- Правка сайта проекта, вкладка Develop, текстовое описание последнего патча.

Path 2.0.1 - 2.0.5

- Правка tetris_doc.txt
- Замена эффекта удаления линии в игровом стакане (эффект при Хите).
- Две новые фигуры, точка (один блок) и двоеточие (два блока) изменены на крест (пять блоков) и уголок (три блока).
- Исправлена Vector2 отрисовка блоков, повторное наложение блоков.
- Доработки текстуры блока.
- Смена цвета блоков, однотонный сплошной цвет.
- Добавлен BBcode (режим паузы) для отсылок на ресурсы разработки.
- Добавлен BBcode (режим игровой заставки) для отсылок на ресурсы разработки.
- Доработки эффекта фона, смаил (свет, цвет).
- Дополнительный расчет поворота фигуры по вектору.
- Правка кода, отдельная переменная для альфа канала блока.
- Обновление игрового движка Godot Engine 2.1.5.
- Правка прозрачности игрового стакана.
- Правка логики текстовых сообщений, новое текстовое сообщение.
- Правка базовой версии сайта (http://crimea-karro.ru/dev_karro/tetris/).
- Правка сайта проекта, вкладка Develop, текстовое описание последнего патча.

Path 2.0.5 - 2.0.9

- Правка tetris_doc.txt
- Доработана сцена логотипов/смены языка.
- Протестирован геймпад Xbox-360.
- Донастройка параметров движка игры.
- Очистка исходников проекта от не используемых файлов.
- Донастройка / переработка управления в игре (геймпад/клавиатура).
- Доработан BG эффект, модуляция цвета, карта нормалей.
- Замена эффекта рамки хита, логика и отображение.
- Правка эффекта прозрачности, пауза/процесс игры.
- Правка анимации бегущей строки.
- Правка/доработка системы UI элементов.
- Правка/доработка эффектов хита (удаление линии).
- Добавлена логика удаление незначительных UI элементов в процессе игры.
- Смена логики системы помощи (замена текста в бегущей строке).
- Смена логики системы рандомизации фигур на основе системного времени.
- Скорректирована максимальная/минимальная скорость падения фигур, рандом.
- Доработки эффекта/надписей, системных сообщений.

Path 2.0.9 - 2.0.19

- Правка kaaworld_doc.txt
- Обновление игрового движка Godot Engine 2.1.6.
- Удаление поддержки и версии для HTML5.
- Для элементов GUI добавлен ToolTip (описание кнопок).
- Добавлена анимация основного игрового курсора.
- Доработки отображения основного игрового курсора.
- Добавлен эффект для GUI элементов.
- Доработки фоновой текстуры, монохром.

* Патчноут отражает ключевые изменения в игре и не содержит список всех исправлений.

-------------------

Используемый софт для разработки проекта:

- GIMP 2.8
- Spriter PRO
- Kenney Game Assets
- Krita 3.x
- Pixeluvo 1.6
- Aseprite 1.1
- Blender3D 2.7
- Ubuntu 18.04
- Audacity 2.1
- Godot Engine 2.1.x

-------------------

Зависимости для разделяемых библиотек:

# ldd start_tetris.64

    linux-vdso.so.1
	libX11.so.6
	libXinerama.so.1
	libXcursor.so.1
	libXrandr.so.2
	libfreetype.so.6
	libasound.so.2
	libpulse-simple.so.0
	libpulse.so.0
	libGL.so.1
	libpthread.so.0
	libz.so.1
	libdl.so.2
	libm.so.6
	libgcc_s.so.1
	libc.so.6
	lib64/ld-linux-x86-64.so.2
	libxcb.so.1
	libXext.so.6
	libXrender.so.1
	libXfixes.so.3
	libpng12.so.0
	librt.so.1
	libpulsecommon-8.0.so
	libjson-c.so.2
	libdbus-1.so.3
	libGLX.so.0
	libGLdispatch.so.0
	libXau.so.6
	libXdmcp.so.6
	libsystemd.so.0
	libwrap.so.0
	libsndfile.so.1
	libasyncns.so.0
	libselinux.so.1
	liblzma.so.5
	libgcrypt.so.20
	libnsl.so.1
	libFLAC.so.8
	libvorbisenc.so.2
	libresolv.so.2
	libpcre.so.3
	libgpg-error.so.0
	libogg.so.0
	libvorbis.so.0

-------------------

Donate:

WebMoney

R620615996098

QIWI

https://qiwi.com/p/79787620061

-------------------

Author: August Karro

http://it-karro.ru
http://crimea-karro.ru/
https://crimea-karro.ru/dev_karro/tetris/

Phone: +7978-762-00-61
it@crimea-karro.ru
