Игра "Трикси и алмазы" улучшена и переведена на современные системы разработки
Реализовал перенос своей 16-битной игры «Трикси и алмазы» на систему поновее, а также немного улучшил по разным параметрам.

Заняло 10 дней неспешной работы, с учетом того, что половину этого времени дорабатывал собственный игровой движок, на котором эта игра и сделана. Графику не переделывал, в основном — всё те же пиксельные PCX-спрайты.
Также не выполнял нормальную балансировку уровней — можно утверждать, что последний уровень сильно сложнее первого, но не более того.
Ссылка на архив с игрой:
tereshenkov.ru/trixie32bit/TrixieDiamonds-1.0.0.2-Win32.zip
Изменения по сравнению с 16-битной версией:
Управление и всё, что касается игровой механики, содержится во встроенной справке игры.
Игровой движок реализован на C++ Qt, слой OpenGL использует SFML.
Игровая логика — на JavaScript.
Документация к движку и исходники движка будут выгружены попозже, еще идет доработка.
Исходники же самой игры лежат в каталоге data со всеми спрайтами, картами и скриптами, и доступны, как и все мои понные наработки, по лицензии CC0.
Запуск игры — файл TrixieDiamonds.exe из каталога engine.
Не могу сказать, что это прям великая игра, попирающая сапогами Вселенную — но определенная прелесть в ней, как и в любой простенькой аркаде, наверно имеется. Играйте на здоровье. Если кому-то понравится улучшенная версия — дополню уровни, бонусы и расширю игровую механику. Теперь это сделать проще.
Под катом скрины игры
Главное меню
Справка
Маленький уровень
Уровень побольше
Победное окно

Заняло 10 дней неспешной работы, с учетом того, что половину этого времени дорабатывал собственный игровой движок, на котором эта игра и сделана. Графику не переделывал, в основном — всё те же пиксельные PCX-спрайты.
Также не выполнял нормальную балансировку уровней — можно утверждать, что последний уровень сильно сложнее первого, но не более того.
Ссылка на архив с игрой:
tereshenkov.ru/trixie32bit/TrixieDiamonds-1.0.0.2-Win32.zip
Изменения по сравнению с 16-битной версией:
- Работает на 32-битной версии Windows без всяких ухищрений :-)
- Пять уровней аркады, отличающихся картами и сложностью
- Укрупненный размер карт
- Бонусы восстановления здоровья и маны
- Режим свободной игры для каждого уровня
Управление и всё, что касается игровой механики, содержится во встроенной справке игры.
Игровой движок реализован на C++ Qt, слой OpenGL использует SFML.
Игровая логика — на JavaScript.
Документация к движку и исходники движка будут выгружены попозже, еще идет доработка.
Исходники же самой игры лежат в каталоге data со всеми спрайтами, картами и скриптами, и доступны, как и все мои понные наработки, по лицензии CC0.
Запуск игры — файл TrixieDiamonds.exe из каталога engine.
Не могу сказать, что это прям великая игра, попирающая сапогами Вселенную — но определенная прелесть в ней, как и в любой простенькой аркаде, наверно имеется. Играйте на здоровье. Если кому-то понравится улучшенная версия — дополню уровни, бонусы и расширю игровую механику. Теперь это сделать проще.
Под катом скрины игры
Главное меню

Справка

Маленький уровень

Уровень побольше

Победное окно

53 комментария
«MaxSpawnMonsters»:18,
но начиная с третьей карты этот параметр равен 9999 :-)
Как уже упоминал — над балансом я пока что не работал серьезно.
Только вместо Трикси теперь они жрут оперативку, видимо )
Если не UE5, то даже читать дальше нет смысла)
«Я жалкаааааая!»©
А если серьезно, хочу изучить, но всё руки не доходят.
Если сравнивать 16-битный код реального режима, где половина в Ассемблере, а половину пишешь с точностью до байт (а то и бит, в некоторых видеорежимах) — и системы вроде Godot или Unity, то понятно, куда смотрит вектор прикладной разработки.
Но чисто для себя, и для прокачки скилла — оно пользительно… бывают все еще моменты когда подоптимизировать таки надо, чтоб выжать максимум.
ну вроде как пересекать Тихий океан на гребной лодке. И что характерно, пересекают, хотя конечно, на особых лодках, построенных по специальным проектам.
Очень раздражает что при потере жизни, теряешь возможность юзать магию в течении секунды. Бессмертие в течении этой секунды нифега не помогает ибо как правило за это время успеваешь оказаться внутри монстра из-за чего вновь теряешь жизнь и продолжаешь быть беспомощным овощем ещё на одну секунду дольше.
Рекомендация: любое действие игрока скипает состояние мигания.
На 4-м уровне слишком часто оказываюсь в патовой ситуации, когда маны нет, а на сейфзоне уже заспавнился монстр. По первичным наблюдениям показалось, что монстры не спаунятся в подземелии, пока ты в нём или был в нём на предыдущем ходу.
Рекомендация: при убийстве 2+ монстров за один выстрел, возвращать ману в количетсве убитых монстров — 1
F10 — нифега не интуитивная пауза. Помимо озвученного выше бага с продолжающимся спауном, оч не хватает вкладки с помощью. Ну мол возможность узнать управление без необходимости выходить в главное меню и терять текущий прогресс. Так же бесит, что по привычке жмакаешь Esc дабы включить паузу, а в итоге без предупреждений выходишь в главное меню опять таки теряя прогресс.
Это так и задумано — чтобы не позволить игроку прыгать прямо в толпу монстров и размести их выстрелом.
Ага, это мой промах, по Esc должна быть игровая пауза с меню.
1) Прекращается спавн после завершения игры
2) При нажатии Escape в игре включается пауза, с возможностью продолжить игру или вернуться в меню
Тут же вспомнилась эта книжка)
Пикча
А я могу на Lua сделать так?
после чего вызвать в скрипе просто и незатейливо
mapviewer.doMagic({x: 1, b: true, s: «OK» });
Думаю, нет. QtScript всё-таки очень могуч.
Да и дополнительный синтаксис учить… JavaScript-то каждая собака знает.
Но это всё абсолютно бесполезные в жизни знания, они не помогут получить у Деметры совет как перестать быть жучком в банке.
А вообще отличная тема — предыдущая и эта версия это прямо как ванильный DOOM и GZDoom =)
.pro файл — это для движка, исходники которого сейчас дорабатываю.
А в каталоге data находится исходник игры, которая этот движок через QtScript использует.
Раз возник запрос, вот движок и сишные исходники игры (кое-что недописано и документация устарела, но пусть)
tereshenkov.ru/trixie32bit/engine.zip
(в core исходники самого движка, в корне — файлы, отвечающие за игру, например, map и mapviewer)
SFML можно взять отсюда
www.sfml-dev.org/files/SFML-2.5.1-windows-gcc-7.3.0-mingw-32-bit.zip
в .pro файле вбить актуальные пути к SFML include и lib
На гитхабе через неделю думаю, уже будет, реально несколько багов закрыть и всё.
Спойлер
А в случае ненайденного файла получается double free внутри ~PcxTexLoader()
Ага, есть такое. При работе под Windows привыкаешь плевать на регистр имен файлов.
Это чисто для меня класс — не думаю, что кому-то понадобится реально работать с PCX-файлами. Хотя конечно, в список багов занес, спасибо.
Почему PCX кстати? TGA проще и вменяемо поддерживается кучей софта.
Можно, конечно, было перегнать PCX в PNG, но я пошел по пути «вместо конвертации данных, напишем декодер данных». Чисто по приколу.
Что понравилось:
*Главный экран — идея где Трикси бегает за\от монстров хе-хе). Это добавляет «изюминку».
*Справка — тут тебе и небольшая история с картинками-персонажами, и даже анимации монстров.
*Уровни — собери n алмазов и не умри, используй ману с умом!
Что не понравилось\вызвало вопросы:
*Динамика — честно, я думал что в начале игры так медленно, потому что с набором алмазов будет увеличиваться скорость трикси (добавляя динамику и сужая время принятия решений). Какое же мое удивление было когда я этой механики не обнаружил, ни в аркаде, ни в свободном режиме (где она вообще сама прям напрашивается).
*Монстры — их много… но по факту их 2шт — которые летают и нет. Да, я заметил что некоторые быстрее других, но этого не достаточно что бы они влияли на игровой процесс по разному (слишком минимальна разница в скорости). Не знаю… может добавить монстров которые могут телепортироваться между ярусами, или которые могут иногда внезапно поменять направление или которые могут съесть алмазы и их надо опередить. Это дало бы больше игровых событий меняющих динамически тактику в зависимости от монстров на ярусе.
Увы, это не идея, это пасхалка, отсылающая к Prehistorik 2. В зависимости от настроения, это можно воспринимать как бесстыдное слизывание, или дани уважения.
1992-ой, 286-ой :-)
Это годная идея, и я попробую её развить, спасибо.
Про динамику, уже после завершения портирования, до меня дошло, что карта стала больше в 9 раз от оригинала, а скорость не изменилась. Тут надо подумать.
А при пересечении трёх врагов гарантированный геймовер(((
Хотя по уму, действительно нужно проверку развернуть, спасибо. Записал.
Нужно переместить проверку условия бессмертия в цикл.
Глупый баг с моей стороны.