Тип: аркадно-логическая игра

реклама
Тип: аркадно-логическая игра.
Краткое описание: на каждом уровне есть источник лазерного луча, приёмник,
зеркала, "фишки", стены и другие объекты. Цель – поворачивая зеркала необходимо
"поразить" лучом все фишки (пораженная фишка исчезает с поля), после этого исчезает
объект препятствующий прохождению луча к приёмнику. Для завершения уровня
необходимо направить луч в приёмник. Сложности: лазер имеет ограниченный заряд
(по времени); установка может выйти из строя из-за перегрева (когда отраженный луч
возвращается в источник) и другие.
Интерфейс: на основном экране изображена схема установки и параметры (заряд,
температура). Можно включить дополнительный экран – "Микроскоп" – на этом экране
будет отображаться (render) участок схемы методом трассировки лучей (ray-tracing).
Категория – многопоточность: трассировка лучей – ресурсоёмкая задача, которая
получает огромный выигрыш при использовании многоядерных систем. Для
реализации многопоточной обработки используется библиотека Intel TBB.
Задействованы неделимые (atomic) операции для синхронизации данных основного
цикла игры и главного потока визуализации.
Параллельные потоки занимаются визуализацией строк, память под строчки
результатов выделена с выравниванием на строки кэша (cache aligned). Таким образом,
выполнение потоков не сопровождается накладными расходами на поддержание
когерентности кэша.
Для уменьшения времени "холостого хода" (когда нет новых задач, и некоторые потоки
уже закончили работу) использована особенность "микроскопа". Микроскоп имеет
круглое поле отображения. То есть строки имеют длину. Если раздавать задачи
потокам в порядке уменьшения длины строки (и, в среднем, объёма вычислений), то
разброс времени окончания вычислений заметно сокращается.
Для поиска объектов пересекающихся с лучом отображения использована особенность
расположения объектов. Объекты располагаются в одномерном слое смежных кубов,
что даёт хорошее разбиение пространства даже без построения дополнительных
структур (kd-tree, …).
Библиотека Intel TBB скомпилирована и слинкована статично, чтобы избежать
зависимостей выполняемого файла от других продуктов (MSVC redistributable).
Категория – мобильность: для уменьшения энергопотребления устройства –
"Микроскоп" будет отключаться отключении питания ноутбука от сети.
Изначально предполагалось использование Intel TDK, но анализ исходного кода
показал, что требуемые функции не содержат специфических вставок кода и являются
лишь обёрткой для Windows API.
Установка: игра не требует установки, можно запускать сразу после распаковки. Для
работы не требуется наличия DirectX, OpenGL и других дополнительных библиотек.
Оптимизация: в основном меню игры, в схематическом отображении поля, в таблице
рекордов, на экране "о лаборатории" используются различные графические эффекты
(полупрозрачность, "частицы"). Процесс оптимизации показал, что чёткое указание
компилятору к использованию "неотрицательных" (unsigned) типов и объединение
однотипных операций в группы (когда в одной переменной хранятся более одного
результата) позволяет добиться 20-кратного прироста производительности.
Процесс разработки:
Разработка была начата 9 июня, велась, в основном, по вечерам после работы. На
разработку “микроскопа” ушло всего 5 вечеров. Как рабочие инструменты
использованы Intel C++ Compiler, FAR Manager, MSVC, Paint.Net, Blender, Adobe
Audition. Использованы звуковые материалы с сайта freesound.org и композиции
группы Pink Floyd (что придаёт особый колорит).
О технологии:
Главным желанием в процессе разработки было продемонстрировать технологию raytracing (которая используется при создании мультфильмов и спецэффектов в
кинофильмах), и проверить, готовы ли современные процессоры к широкому её
внедрению. Оказалось, что для несложных сцен (как в данной игре), процессорной
мощности современных компьютеров вполне достаточно. Основной плюс технологии –
реалистичное освещение, блики и тени, корректное отображение прозрачных (линз) и
зеркальных тел (обязательно нажмите F1 для переключения в режим отображения
прозрачных объектов!).
Что дальше:
В плане развития игры:
– отображение недостающих объектов, имеющих в своём составе тор;
– сглаживание (anti-aliasing), для улучшения картинки на мощных системах;
– управление светом и опциями отображения.
Материалы для скачивания.
http://software.intel.com/file/20843
Последняя версия игры: ray-trace-010709.exe (1.6 Мб)
http://software.intel.com/file/20853
Видео демонстрация: ray-trace-demo (swf + html, 30 Мб)
В концовке видео продемонстрирована ситуация отключения сетевого питания
ноутбука и обратное подключение.
http://software.intel.com/file/20963
Инструкция: manual.doc (135 Кб)
Изображения:
Схема: http://software.intel.com/file/20697
Взрыв установки: http://software.intel.com/file/20698
Схема и микроскоп: http://software.intel.com/file/20702
http://software.intel.com/file/20706
Микроскоп – блики и тени: http://software.intel.com/file/20699
Микроскоп – "фрактал" и его тень: http://software.intel.com/file/20700
Микроскоп – зеркальный сферы: http://software.intel.com/file/20701
Микроскоп – "портал": http://software.intel.com/file/20703
Микроскоп – зеркала и лазерный луч: http://software.intel.com/file/20704
Микроскоп – "поляризатор": http://software.intel.com/file/20705
Микроскоп – прозрачная сфера и лазерный луч: http://software.intel.com/file/20856
Микроскоп – прозрачная сфера и прозрачная сфера: http://software.intel.com/file/20857
Микроскоп – прозрачная сфера и "фрактал": http://software.intel.com/file/20858
Микроскоп – прозрачная сфера и зеркало: http://software.intel.com/file/20859
Микроскоп – прозрачная сфера издалека: http://software.intel.com/file/20860
Скачать