Информация

История создания Sky2Fly (в картинках)

Ноябрь 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 - художник: эскизы монстров, островов, НПС, аватары.
ПыЖыК - дизайнер: игровой интерфейс.
Сан Саныч - генеральный директор