Релиз Winged Crushers




Итак, свершилось! Я опубликовал своё творение во ВКонтакте!
Работает таблица рекордов.
Ставьте лайки, френдите, показывайте друзьям (ну или что там на ВК принято?).
Также можно излить бугурт по поводу глюков, тормозов и прочих издержек.

Здесь находится журнал разработки. Там же можно почитать исходники.

Итоги.

Я трудился над этой игрой более трёх недель. От концепта:



К реализации.

Изначально не предполагалось, что "Самолётик" будет полноценной игрой. Вообще, я начал изучать WebGL для того, чтобы сделать кроссплатформенный ирёхмерный игровой проект с совершенно другим геймплеем. Но стало понятно, что этот грандиозный замысел дойдёт до играбельного состояния ещё не скоро, а играбельное нечто хотелось сделать как можно скорее.

Первым делом — самолёты!

Так и был придуман "Самолётик" — простейший геймплей, минимум требований к движку (который писался на коленке и в отсутствие опыта), минимум вообще всего в игре (даже без GUI хотел обойтись чтобы его не писать).

Это был мой первый опыт создания полноценной игры не только на JavaScript, но и на GAPI без использования уже готового движка. Пришлось осиливать линейную алгебру, кватернионы. Пожалуй, за 3 недели узнал куда больше, чем за первые 2 курса университета. Огромное спасибо Mr_F и falcon за то, что терпеливо отвечали на мои тупые вопросы по части математики, без них я бы тупил@тормозил куда дольше.

Конечно, многое в движке сделано очень косячно, я уже потом понял, как надо. Ну, с другой стороны, не стал бы делать — не узнал бы.

4 года назад я нашёл работу в Web и тогда практически забросил игрострой. Впрочем, оказалось, что навыки, будучи очищены от пыли, неплохо сохранились. Что бы там ни говорили, а старина Блиц многому научил.

Игра вышла вполне играбельной по скорости на современном компьютере. Да я даже на ноуте 2009 года выпуска играл, и на компах в университете. Так что, что бы там ни говорили, вопрос железа не так уж критичен. В последнем случае WebGL — явный плюс, ведь в учреждениях нет возможности поставить, например, Юнити Плеер. Конечно, на древней рухляди не заведётся, но доля её всё уменьшается, а время работает на нас. В Microsoft обещали поддержку WebGL к версии 11 Internet Explorer'а, так что скоро можно будет говорить о поддержке WebGL "искаропке".

Мысли по оптимизации.

Что же больше всего занимает времени в Самолётах кроме собственно рисовки треугольников? Профилирование показало: математика. Сборщик мусора, который давеча ругали, где-то там, далеко не на первых позициях. Да, JavaScript не очень хорошо годится для выполнения операций над векторами, матрицами и кватернионами. Тут, как ни крути, компилируемые языки программирования по скорости будут намного быстрее JS, с этим не поспоришь. С другой стороны, в движке у меня много нерациональных вещей, и количество мат. операций линейной алгебры можно сократить очень значительно. А ещё если учесть, что у меня игра-то не очень рационально построена (каждый кубик в конструкции самолёта — отдельный объект со всей математикой), то математику можно очень сильно сократить.

Отсюда можно вывести общее правило разработки на WebGL: JavaScript — дорого, треугольники и шейдеры — дёшево. Это значит, что если вставить высокополигональные модели, навесить на них хайрез-текстуры и всякие бампы с параллаксами, то FPS упадёт не сильно.

Однако я нарочно не стал делать красивую графику, даже не делал намёка на подобные амбиции. Модели нарочно кубические "левой ногой", текстуры за 5 минут левой рукой. Впрочем, такую "красоту" видеоряда все поняли, кто как хотел.

Даёшь WebGL в народ!

Что же в итоге? За 3 недели — полноценная игра без пипитарных движков. ЖНУ/ПИНУС ШВАБОДКА ЖОПАЕЛЬ! Работает везде где есть арбузер с WebGL (а он есть на всех десктопах, части Андроидов, а скоро будет повсеместно). WebGL играм быть! Это дело перспективное! Больше WebGL-игор, хороших и разных!


You can leave a comment with "Facebook":
Не забывайте оставлять комментарии при помощи "ВКонтакте":
Яндекс.Метрика