| 16.10.2008 18:16 | |
Дмитрий Добряк, программист, участник проекта Magic Worlds, ответил на вопросы ISN.
ISN: Расскажите, пожалуйста, как возникла идея столь необычной игры?
В редкие минуты отдыха после работы хочется сделать что-то для души. Что-нибудь красивое и интересное. Что же сделать такое программисту, чтобы порадовать простых смертных. Наверное, самое подходящее – это компьютерная игра. Нет, мы совсем не собирались замахиваться на уровень топовых игр с бюджетом среднего голливудского фильма. А присоединились к огромной армии тех, кто делает так называемые казуальные игры – маленькие игры на 15 минут.
Вначале появилась идея - давайте сделаем двухмерную игру, вид сбоку, скроллер, головоломку, в какой-то мере, экшн. Пусть персонажи ходят сами по себе навстречу ловушкам, монстрам и прочим опасностям, демонстрируя полное отсутствие инстинкта самосохранения. А игрок своей твердой рукой пусть рисует разные заклинания, спасая команду горе-героев. Намешаем, не взбалтывая в этот коктейль систему распознавания образов, нейронные сети, черно-белую графику и попробуем на вкус.
ISN: Почему вы решили принять участие в конкурсе?
В одной из рассылок пришло упоминание о конкурсе от Intel, решили подать заявку. Геймплей игры таков, что он идеально подходит для игры со стилусом, поэтому решили номинироваться в категории “Лучшая игра для мобильных ПК”.
Всего разработчиков игры трое. Я отвечаю в игре за распознавание образов, в какой-то мере занимаюсь пиаром. Артем Шабаршин – программист всего остального, в том числе используем написанный им игровой движок. И Дмитрий Замуруев – художник, именно ему мы обязаны столь необычной графикой и, в достаточно большой степени, победе в конкурсе.
ISN: В игре используется необычная графика. Расскажите о ней поподробнее?
Вся графика изначально создавалась тушью и пером на бумаге, а уже потом переводилась в электронную версию. Идея была создать игру в черно-белом стиле с отдельными яркими элементами. За основу была взята идея севера, с его суровостью, орнаментами, бытом и его красотой. Вдохновение черпали на Северном Урале. Ходили в походы, видели настоящие древние мансийские нарты, северных оленей, аборигенов - мансийцев. В графике используются настоящие, реально существующие орнаменты. Копье, элементы одежды, ленточка в волосах персонажа - все опирается на историческую достоверность. В противоположность серой, но прекрасной суровости, в игре присутствуют яркие, не менее потрясающие цветные элементы, обращающие внимание игрока, не позволяя ему заскучать. Во всех мирах будет прослеживаться такая же северная стилистика - именно она является ключевым направлением в образе игры.
Как уже было сказано выше, геймплей игры основан на том, что игрок рисует символы-заклинания. Они распознаются, и происходит определенная реакция. Например, дуга, нарисованная над пропастью, распознается как заклинание моста и соответственно сверху на пропасть упадет мост, позволив персонажам пройти. Как же распознать заклинания, которые пользователь рисует мышкой. Ведь символ можно нарисовать и так и эдак (и приплюснутым и вытянутым и завиток какой-нибудь поставить). В качестве технологии распознавания была применена нейронная сеть, а точнее многослойный персептрон, реализация которого была взята из open-source библиотеки от Intel – openCV. Были созданы отдельные утилиты, облегчающие процесс настройки и обучения нейронной сети. Пришлось довольно много экспериментировать с параметрами – находить баланс между чрезмерно большой (в несколько мегабайтов) и малой в размерах, но от этого менее точной, сетями.
ISN: Во всех проектах есть трудные участки. С чем вы столкнулись во время разработки Magic World?
В процессе разработки возникало немало различных проблем. Расскажу об одной из них. Предположим у нас есть текстура (рис. 1).
Рис. 1. Пример текстуры.
Файл с текстурой имеет 4 канала RGB (красный, зеленый и синий) и A - прозрачность. При этом пиксель с интенсивностью равной 255 в альфа-канале – непрозрачен, а с 0 – абсолютно прозрачен. Исходный файл с текстурой имеет определенные размеры. Однако различное разрешение экрана может привести к необходимости изменить исходные размеры. Существуют разные алгоритмы масштабирования изображения. Например, 4 соседних пикселя текстуры при масштабировании будут заменены на один на игровом экране. При этом его интенсивность по всем каналам будет равна средней арифметической интенсивности всех заменяемых пикселей.
Рис. 2. Слева – исходные пиксели текстуры (255 – абсолютно непрозрачные пиксели, 0 – абсолютно прозрачные). Справа – пиксель, отображаемый на экране с усредненной интенсивностью.
Из рис. 2 видно, что в данном случае интенсивность по всем каналам исказится, в том числе изменится прозрачность в альфа-канале. Таким образом, появятся полупрозрачные участки. Соответственно текстура будет окантована белыми пикселями, чего мы соответственно хотим избежать.
Решить эту проблему можно несколькими способами:
Нужно стремиться масштабировать текстуру один к одному за счет размера и количества мип-уровней.
Можно сделать фон текстуры примерно равным фону, на который она будет накладываться. Этот способ не сработает, если текстура будет накладываться на меняющийся фон.
Вообще надо сказать, что участие в конкурсе очень сильно нам помогло. Игра делалась в свободное от основной работы время, соответственно очень часто возникал соблазн отложить разработку из-за каких-то дел. Думаешь про себя: ”сегодня что-то не охота, вот завтра сяду и все сделаю”. А конкурс поставил определенные сроки и задачи, которые необходимо сделать. А уж победа дала мощный заряд позитива и мотивации к дальнейшей разработке.
Об авторах
Шабаршин Артем Юрьевич родился 21 января 1978 года в г.Екатеринбурге. Увлекаться компьютерными играми начал в 10 лет, а первый опыт программирования приобрел в 11 лет. С 1994-1998 участвовал в демосцене (ZX-Spectrum). С 2002 года занимается написанием графического движка “Spin Engine”. В 2004 году был выпушен первый полноценный игровой продукт “SpaceBalls”. На настоящий момент является главным программистом и руководителем проекта “MagicWorlds”.
Замуруев Дмитрий Иванович родился 09 декабря 1968 года в г. Кировград, Свердловской обл. 15 лет преподавал изобразительное искусство, занимается творчеством. Неоднократно участвовал в выставках графики и живописи - "ALWAYS" - Екатеринбург, "black and white" - Екатеринбург, персональная выставка в 2003 г. - г. Кировград. С 2008 года участвует в игровом проекте как главный художник.
Добряк Дмитрий Вадимович родился 26 февраля 1984 года в г. Нижний Тагил, Свердловская область. Закончил УГТУ-УПИ в 2006 году (диплом с отличием). С 2006 года учится в аспирантуре. С 2008 года участвует в игровом проекте как гейм-дизайнер и программист, в частности отвечает за систему распознавания образов. Интересы – искусственный интеллект, нейронные сети, распознавание лиц, поиск изображений по содержимому.
Более подробно узнать об оптимизации и игре MagicWorld можно задав свои вопросы в блоге Intel Software Network. Если у вас возникнут вопросы или предложения, то авторы игры всегда будут рады ответить на них.
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.

