Игра «Лабиринт»

Теги: Программирование, Игры, Delphi

Игра, созданная командой Perfect Light еще во времена первых шагов в программировании. Идея проста: вам необходимо найти выход из лабиринта (он помечен стрелкой), затратив на это как можно меньше времени. Управление осуществляется при помощи стрелок.

Игровой процесс осложняется тем, что вы видите только определенную область на карте, освещенную «фонариком», остальная же часть экрана скрыта в темноте.

Скриншоты игровой области

Скачать игру можно по ссылке ниже:

labirint.zip (14.1mb) Архив с исполняемым файлом игры.

Наша первая игра, созданная, к тому же, по экспериментальной технологии. Однажды, когда мы уже знали о некоторых проблемах вывода GDI-графики в компьютерных играх, но не знали ни технологий их создания, ни сложных систем типа OpenGL, нам пришла в голову интересная идея обхода этих проблем.

О каких проблемах здесь идет речь? Прежде всего, о трудностях реализации сложных эффектов: размытия, рассеянного свечения, цветокоррекции и других; а также, о трудностях создания нестандартных игровых карт типа лабиринта, в частности, - которые нельзя явным образом разделить на клетки (тайлы). Идея, о которой говорится выше, была основана на представлении игровой карты в виде единого изображения, выводящегося на экран и некоей черно-белой маски, хранящейся в памяти и соответствующей первому изображению таким образом, что проходимые участки остаются на маске белыми, а непроходимые - закрашиваются черным цветом.

Идея хороша для узкого круга игр, впрочем, взявшись за подобный проект с нынешними знаниями в области программирования и разработки игр, мы избежали бы некоторых проблем в реализации и значительно улучшили бы результат. Но есть, также, существенные проблемы и ограничения подобной реализации:

  • Сложно рисовать карту. Неспроста в компьютерных играх карта делится на тайлы - таким образом, можно избежать повторной загрузки одного и того же участка в память. При подобном же подходе мы не только вынуждены хранить в памяти повторяющиеся участки (а подобных участков много), но и всякий раз заново рисовать их в графическом редакторе.
  • Большой «вес». И карта, и маска для нее, занимают слишком много места как на диске, так и в оперативной памяти: даже если на диске хранить маску в формате со сжатием, - в оперативной памяти она развернется до огромных размеров. Впрочем, для современного компьютера это не проблема, да и оптимизировать, при желании, можно; но сам подход, конечно, не из лучших.
  • Сложно рисовать маску. Кроме проблемы с размером маски, есть еще несколько. Например, маска должна полностью повторять карту и состоять только из черного и белого цветов, что вносит дополнительные трудности в процесс ее создания.
  • Статичная карта. Подобный подход, подразумевающий, что вся карта будет нарисована на одном изображении, полностью исключает всякую динамику на игровом экране. В итоге, изображение может выглядеть слишком скучным и безжизненным.

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

Иллюстрация игровой карты и маски для нее

А еще SpectreZ реализовал интересный эффект фонарика на основе квадратного спрайта с «прозрачностью» внутри - эффект даже получился анимированным. Это позволило, также, оптимизировать игру с технической точки зрения, благодаря тому, что на экран выводится только та часть изображения, что находится внутри этого прямоугольника.

Напоследок, хотелось бы заметить, что идея построения красивой карты в виде лабиринта, сложна по самой своей сути, так как созданием ограниченного количества повторяющихся участков здесь, явно, не обойдешься (разумеется, если речь идет о сложных и запутанных лабиринтах). Сам метод реализации подобной игры представляет намного больший интерес, нежели любой возможный конечный результат.

Авторы: SpectreZ, SaiLight Работа над проектом: 2009 год
+
Фильтрация по тегам
Выбранные теги отобразятся в этой области...
Найти
Программирование 38, Игры 16, Программы 12, Delphi 29, Библиотеки 15 Веб-разработка 23, Сайты под ключ 7, Дизайн 22, JavaScript 5, PHP 0, Laravel 0, Joomla 2 Графика 30, Обработка фото 6, Логотипы 2, Иллюстрации 7, Рисунки 3, Печатная продукция 2 Видео 11, Трейлеры 1, Анимация 3 Музыка 3, Персонажи 8, Статьи 7, Литература 5, Рассказы 4, Стихи 1, 2D 5, 3D 20, На заказ 10
Используйте среднюю кнопку для быстрого фильтра по тегу...
Календарь проектов
2015 7 , 2016 6 , 2014 3 , 2010 5 , 2011 1 , 2013 2 , 2012 1 , 2009 3 , 2017 3 , 2018 1