Тип: аркадно-логическая игра.
Краткое описание: на каждом уровне есть источник лазерного луча, приёмник, зеркала, "фишки", стены и другие объекты. Цель – поворачивая зеркала необходимо "поразить" лучом все фишки (пораженная фишка исчезает с поля), после этого исчезает объект препятствующий прохождению луча к приёмнику. Для завершения уровня необходимо направить луч в приёмник. Сложности: лазер имеет ограниченный заряд (по времени); установка может выйти из строя из-за перегрева (когда отраженный луч возвращается в источник) и другие.
Интерфейс: на основном экране изображена схема установки и параметры (заряд, температура). Можно включить дополнительный экран – "Микроскоп" – на этом экране будет отображаться (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 (что придаёт особый колорит).
О технологии: Главным желанием в процессе разработки было продемонстрировать технологию ray-tracing (которая используется при создании мультфильмов и спецэффектов в кинофильмах), и проверить, готовы ли современные процессоры к широкому её внедрению. Оказалось, что для несложных сцен (как в данной игре), процессорной мощности современных компьютеров вполне достаточно. Основной плюс технологии – реалистичное освещение, блики и тени, корректное отображение прозрачных (линз) и зеркальных тел (обязательно нажмите F1 для переключения в режим отображения прозрачных объектов!).
Что дальше: В плане развития игры: – отображение недостающих объектов, имеющих в своём составе тор; – сглаживание (anti-aliasing), для улучшения картинки на мощных системах; – управление светом и опциями отображения.
Материалы для скачивания.
Последняя версия игры: ray-trace-010709.exe (1.6 Мб)
Видео демонстрация: ray-trace-demo (swf + html, 30 Мб) В концовке видео продемонстрирована ситуация отключения сетевого питания ноутбука и обратное подключение.
Инструкция: manual.doc (135 Кб)
|
eustas
1,625
Статусных баллов:
1,125