Ноябрь 2007 - начало работ над Sky2Fly (рабочее название Crosswind). Первый компьютер в офисе :)
В то время, когда деревья были большие, а браузерные игры пошаговые, мы сразу поставили перед собой очень сложную задачу - настоящий real-time и полное 3D прямо в браузере. Мы изучили все имеющиеся 3D-движки под Flash: ни один из них даже близко не удовлетворял нашим требованиям, и было принято решение писать свой.
Итак, начало всех начал - матричные искажения:
Подготовка тестовых моделей:
Требования к моделям не просто low-poly (низко-полигональные), а very-low-poly (ниже некуда :) 3D дизайнер в шоке.
Мы очень боялись, что попытка сделать полное 3D во флеше окажется провальной, ведь до нас никто ничего подобного не делал. Весь код 3D-движка скрупулезно тестировался и подвергался максимальной оптимизации. Все формулы упрощены, расчеты минимизированы, изображения кешируются, а там где это возможно - используются спрайты.
И первый полет показал, что летать можно - проекту жить! Наши корабли поднимутся в небо!
Первая очень серьезная проблема, - как при минимальных затратах изобразить облака? Спрайтами изобразить облачность можно, но для приемлемого эффекта их нужно о-о-очень много...
...и ни на что большее процессора уже не хватит.
Вариант с несколькими полупрозрачными плоскостями, заранее отрендеренных облаков с рассечением на разной высоте, тоже показал нормальные результаты, но опять же, для нормальной объемной картинки облаков, их нужно, как минимум 10. Флеш умирал при отображении 4х. Пришлось оставить 2е плоскости и долго подгонять многочисленные параметры для получения удовлетворительной картинки:
Так же серьезной проблемой стало отображение неба над головой. Купол изобразить не сложно, но заставить облака плыть, та еще задачка.
Поскольку, уже после отображения неба под и над нами, процессор был загружен по самое "дальше некуда", при отображении остальных объектов приходилось использовать все исзвестные миру оптимизации в 3D.
Тест движка спрайтов:
Отображение птичек спрайтами:
В последствии их пришлось удалить, в малом количестве - толку никакого, а в большом - излишняя нагрузка.
Мы очень надеялись на выход 10-го флеша, где обещали нативную поддержку 3D...
"Вот выйдет новый флеш, с поддержкой 3D на уровне видеокарты, тут уж мы развернемся на полную!"
Да... Adobe Flash Player v.10 - стал самым большим разочарованием. Поддерка видеокарт отсутствует. Нативная отрисовка 3D примитивов работает медленнее нашей. Занавес. Тушите свет.
Что ж, пришлось использовать то, что есть. Отступать уже некуда.
Разработка интерфеса:
"У нас парапанк, а не средневековье. Готику и вензеля - убрать!"
"Вот, уже лучше, но завитушек еще меньше."
Постройка летающих островов:
Приведение все к единому размеру с соблюдением пропорций:
От соблюдения пропорций в будущем отказались, в игре все должно выглядеть "круто", а не "правдоподобно".
И вот, великий день настал: 25 апреля 2008. Флеш клиент подготовлен, 3D модели созданы, сервер функционирует, пушки заряжены.
Первый бой:
Да. Это надо было видеть, с каким восторгом мы таранили и расстреливали друг друга. Взрослые люди вели себя как дети. Наконец-то можно было реально "потрогать" то, над чем работали вот уже пол года. Не какие-то синтетические тесты и просмотры объектов или логов, а вот, реально летит, поворачивает, сталкивается и даже стреляет!
Все это здорово, но сделать еще нужно ооочень много. Для начала, все это бескрайнее небо нужно заселить живыми существами и вдохнуть в них жизнь...
Создание анимации для ботов:
Эскизы:
Текстурирование:
Создание интерфейса взаимодействия с НПС:
И написание квестового движка, т.к. во всех этих взаимосвязях без поллитры не разберешься:
Частенько вижу нашего геймдизайнера, который несколько часов подряд неподвижно сидит и вникает в подобную картину:
прям, как Нео в код матрицы.
Число обиталей неба неуклонно растет:
Первые полеты показали, что без видимости плоскости "земли" очень сложно ориентироваться в небе. Тяжело оценить, где объект находится, выше или ниже, далеко и он просто большой, или же близко, но маленький.
Было принято решение добавить основной слой тумана, который рассекает все объекты, и создает ту самую видимую "точку остчета", которая позволяет ориентироваться в небе.
Динамическое рассечение объектов:
Рыбы по началу жили глубоко внизу под основным слоем, и попытки их растрела из мортиры показал, что невеозможно понять, куда надо ставить прицел, чтобы их накрыть взрывом. Рыб переселили практически вплотную к основному слою.
Птицы по началу летали высоко в небе :) Постоянно крутить камеру, чтобы посмотреть вверх, сильно напрягает... Птиц переселили подближе к основному слою.
Ресурсы, куда ж без них. Но, "кликни чтобы подобрать" это слишком банально, процесс добычи ресурсов должен быть занимательным!.. так, родился одуванчик.
"Все что нажито непосильным трудом" нужно выгодно продать. И вообще, нужно место для отдыха, где можно подлатать трюм, прикупить новую пушку, поболтать о том о сем:
В городе нужно создать здания для выполнения всех необходимых действий. Никакой романтики, предметы, добавление, удаление, зайти, выйти, куча кнопочек, циферок и подсказок... рутинная работа над интерфейсом. Вот часть протокола взаимодействия с сервером:
Создание большого количества предметов: тараны, орудия, мортиры, пулеметы, прицелы, броня, ресурсы, деньги, снаряжение, квестовые и т.п.:
Кают-компания для команды корабля
Наконец-то готова модель нубошипа, как заказывали: тихоходное, пузатое, бестолковое корыто.
Впрочем, тихоходным и бестолковым он был недолго :) А наш первый тестовый кораблик, на котором все время и летали до нубошипа, так и не вошел в игру
Создание эскизов оружия настоящих воздушных капитанов:
моделирование:
и проверка установки их на корабль:
Раскадровка выстрелов и взрывов:
Балистика полета снаряда:
Объем работы растет в геометрической прогрессии, количество моделей уже за 300:
Все работают с полной выкладкой, без выходных, разрешаются только перерывы на поесть да поспать, впрочем и это уже не всегда. Время исчезает бесcледно как в черную дыру. Не всегда осознаешь какой сегодня день недели. Сроки запуска проекта сорваны. Число недоделок и "ладно, пусть и коряво, но зато работает, потом передадаю" нескончаемо.
Редактор локации:
Расположение и поведение ботов:
Величина дропа ресурсов из ботов, урон, защита, скорости, цифры, цифры, цифры... кто все это будет балансировать???
"Кстати, у нас ведь РПГ, где прокачка параметров игрока? сила, выносливость и т.д. и т.п.?"
"К черту параметры! заменим прокачкой умений"
Наброски умений и их взаимосвязей:
Собственно, дерево умений:
Блин, а ведь еще нужны "бафы" и "дебафы"! Цифры, цифры, код, цифры...
Готова клевая картинка входа в игру:
готовимся к запуску,
"Нужен видеоролик по игре!"
"Еще нету!"
"Млин... ладно, пока ставлю заглушку"
Планы и недоделки на клиенте:
Осталась не реализована идея с добычей ресурсов копанием дигера в горах
Впрочем, это уже все мелочи, в целом проект готов к началу открытого бетатеста (7-е апреля):
А через три с половиной месяца состоялся релиз Sky2Fly 18.07.09
Последние секунды бетатеста:
Создание игры с нуля и до релиза заняло год и 9 месяцев, над проектом работали:
3dorange - 3D дизайнер: модели всех объектов в игре.
gustos - программист (java): серверная часть, игровая логика, поведение монстров.
mahtan - программист (си): серверная часть, низкоуровневое программирование, сокеты, базы данных.
merlin - программист (flash): клиентская часть и 3D движок.
sangi - дизайнер: предметы, иконки
svart - геймдизайнер: квесты, карты
vasiliy - художник: эскизы оружия, кораблей.
vika - художник: эскизы монстров, островов, НПС, аватары.
ПыЖыК - дизайнер: игровой интерфейс.
Сан Саныч - генеральный директор