New Zombotron. Неделя #7

Конец апреля и весь май — это, пожалуй, самые тяжелые месяца для меня в плане работы. Весна, тепло, все расцветает, птицы поют, девушки скидывают лишние шубки и все вокруг оживает.

А мне, как обычно, нужно сидеть дома перед окном в виртуальный мир и работать, работать, работать... много работать. А еще нужно писать новые записи и вообще делать кучу всяких не интересных вещей, чтобы вам было интересно. И стоит ли говорить о том, что как раз в эти весенние месяцы интерес к работе ниже плинтуса!? В общем, я, как и полагается, на все немножко забил. На работу забить — конечно нет никакой возможности. А вот всякие необязательные вещи вроде ведения дневника и т.п. все пошло немножко по боку :) К концу весны, как правило, ко всем вступившим в силу изменениям в природе привыкаешь и уже проще заставить себя работать и вернуться к ведению блога. А тут еще и погода как раз испортилась!

В общем, в эти весенне-дождливые деньки я наконец-то расскажу об освещении в новой игре.

Динамический свет

Переход с Flash на Unity, конечно же, сразу открывает массу новых и невероятных возможностей. И, пожалуй, самая красочная и эффектная возможность — это сделать динамическое освещение в игре. Конечно и во Flash были попытки создать динамическое — смотрится эффектно, но как правило все упирается в производительность, поэтому многие наработки в этом плане так и остались в запасниках.

Одним из таких запасников стала наработка под названием Living Lights, которая была сделана как расширение для Anthill Framework. О ней я уже рассказывал давным давно и публиковал все необходимые исходники. Почитать и попробовать это дело можно здесь.

Ох, как я мечтал использовать подобное освещение в Zombotron! Но использование столь требовательного эффекта во Flash версии игры, конечно же, было настоящим самоубийством, поэтому этого так и не случилось. Этого не случилось ни в одной из моих игр, потому что результат во всех играх был бы печальным. Даже использование динамической воды мне дорого обошлось в итоге. Но зато я знал, что первым делом сделаю, когда доберусь до аппаратной поддержки в своих играх — динамический свет!

Свет в Unity

Первое, что я сделал в Unity, когда начал работать с ним — я начал разбираться с тем, как там устроено освещение. И тут, пожалуй, особо рассказывать нечего. С освещением у Unity все в порядке: отличные тени с разными настройками, разные источники света. В общем для 3D освещения каких-то особенных знаний совершенно не нужно.

А как же обстоят дела с 2D освещениям? Ха-ха… Какое-такое освещение может быть в 2D!? Это же 2D — там нет никакого освещения! Впрочем, то, что 2D спрайты могут отбрасывать тени по своему альфа каналу в 3D мир — это уже отлично, но как это можно использовать для 2D игр? Не очень понятно. Хотя, я попытался поискать применение стандартным теням Unity в 2D проекции.

Идея 1: Если стандартные тени Unity смогут сформировать какое-то темное пятно под персонажем — это уже хорошо, тогда ведь не придется делать какое-то свое решение. Хотя, что-то мне сразу подсказывало что это хоть и простое решение, но весьма и весма не красивое с точки зрения реализации и производительности. Но начинать же нужно с чего-то, верно?

Задача: какую-нибудь приемлемую тень для 2D игры стандартными средствами Unity.

  • Делаем кусок земли
  • Ставим персонажа
  • Включаем тени

     

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

Варианты решения этой задачи:

1. Сделать 3D пол с текстурой, по которому будут бегать картонные персонажи.

Этот вариант сразу усложняет весь процесс разработки, так как дополнительно нужно рисовать еще и текстуру пола в нужной проекции и… вообще сразу возникает вопрос: «А почему бы сразу все окружение не сделать в 3D, как на картинке выше!?». Вроде быстрее и главное, честнее получится. Только по факту создание всего окружения в 3D не получится быстрее, кто бы и чего там не говорил, 3D окружения — это кропотливая работа, на которую требуется в разы больше времени, чем на простой двухмерный спрайт. Но есть вариант и по-проще!

2. Сделать прозрачный 3D пол, на который будут проецироваться только тени..

Этот вариант мне понравился больше, и главное выглядит все просто и понятно. Делаем что-то вроде «стеклянного» пола, на котором остаются только тени, а за ним просвечивает задний план. Пару вечеров я, конечно, грохнул в вопросы создания шейдеров и кое-как получил нужный результат, который работал до первого обновления Unity, а потом мой шейдер сломался! Но я совершенно не унывал по этому поводу, так как еще до поломки шейдера стало понятно, что такой прозрачный пол будет большой головной болью для меня. Ведь для каждого уровня придется делать уникальную сетку для пола. Впрочем, это не критично, ну подумаешь дополнительные 2-3 часа работы на каждый уровень, главное что Unity легко расширяется, и редактор сетки можно сделать прям в Unity!

Но это все цветочки. Ведь в итоге от чего я бежал, на то и напоролся! Игра должна быть в 2D, а тени получились как в 3D, подчеркивая картонность картинки. То есть, такие тени подчеркивают тот факт, что плоский персонаж перемещается на фоне плоских декораций. Да и откуда тени падают — там света не должно быть, а источники света будут ведь за персонажем, на стенах или под потолком. В общем, как не крути, но становится очевидно, что стандартные тени Unity в 2D мире не сработают так хорошо, как это было бы в 3D.

Идея 2: Вспоминая о мечтах сделать динамический свет в Zombotron я понял, что нужно отказываться от стандартных теней в Unity и двигаться к такому свету, как я делал для Anthill — то есть, создавать плоские 2D тени в плоском мире.

К сожалению, стандартной реализации в Unity для создания 2D теней нет и неизвестно, будет ли когда-нибудь. Но такие тени не сложно написать и самостоятельно. Правда для этого нужны уже некоторые знания.

Забегая вперед, хочу сказать, что к этому моменту я уже успел сделать первые скетчи игровой графики с небольшой изометрической проекцией полов и объектов. И берясь за работу над 2D тенями, я еще совершенно не представлял, как это все можно совместить, но начинать то с чего-то нужно! :)

Особенности создания 2D теней.

Теория моделирования 2D теней не несет в себе каких-то уникальных знаний, все достаточно просто: предположим, у нас есть некоторый источник света, который испускает лучи в разные стороны.

Испускаемые лучи, как правило, имеют длину, равную радиусу источника света. Кроме этого лучи должны быть чувствительны к некоторым объектам, а именно к тем объектам, которые являются непроницаемыми для нашего света. Таким образом, если наше солнышко будет светить на непроницаемый объект, то оно будет выглядеть как-то так.

Работая с динамическим светом во Flash, я работал с попиксельной проверкой — это было наиболее простым и понятным приемом. Конечно, проверять каждый пиксель на непроницаемость (на прозрачность) — это не самое оптимальное решение, поэтому я делал различные настройки: проверять каждый пятый или десятый пиксель при движении луча. Конечно, такой подход давал погрешности в точности освещения, но учитывая огромный прирост производительности — на это можно было смело закрывать глаза.

Чем меньше точек, тем быстрее просчет теней, но при малом количестве точек луч с большей вероятностью пройдет сквозь маленькие препятствия, поэтому необходимо подбирать оптимальный интервал для сохранения качества и производительности.

С аппаратной поддержкой о понятии «непрозрачный пиксель», конечно же, пришлось сразу забыть: пикселей на этапе просчета картинки не существует, они получаются как результат рендера. Так что, их невозможно использовать как основу для расчета освещения. В общем, весь упор ставится исключительно на геометрию. Проще говоря, в место пиксельной маски для расчета 2D теней нужно использовать дополнительную геометрию — полигоны, позволяющие задавать непроницаемые формы для объектов.

Далее нам остается только при испускании лучей из источника света проверять пересечении луча с каждой гранью непроницаемого полигона и если луч пересекает грань, то ограничивать длину луча точкой их пересечения.

Тут хочется сделать небольшое отступление и упомянуть важный момент: если вы вдруг сами решите реализовывать 2D тени по выше обозначенному алгоритму, то при нахождении точки пересечения с гранью, которая не пропускает свет — нужно не просто прервать движение луча. Необходимо найти ближайшую крайнюю вершину грани, в которую попал наш луч и взять положение этой вершины относительного нашего источника, как эталонную точку для полного луча (см.картинку).

В противном случае получатся так, что свет будет перекрывать объект там, где этого быть не должно. Можно конечно увеличить количество лучей для повышения точности, но тогда и ресурсов больше понадобится для просчета каждого луча. А если источников света будет много!?

После всех этих не хитрых расчетов мы получаем необходимые значения для построения геометрии (формы), которую нужно построить на лету и натянуть на нее заранее заготовленную текстуру источника света.

Все просто! Но... стоп, стоп! Как это все посчитать — это не самый сложный вопрос, другое дело как это все правильно и оптимально написать именно под Unity, чтобы не тормозило и не глючило? Ведь всего несколько недель прошло с тех пор как я впервые открыл Unity.

Зачем изобретать велосипед, тем более когда я еще толком не знаком с технологией, надо же где-то подглядеть как делаются те или иные вещи, верно? В общем, я решил не бросаться в бой, а сходить в Unity Asset Store и посмотреть, какие решения на эту тему уже есть там, попутно копаясь в форумах по 2D освещению.

2D тени для вашего проекта

Посмотрев Unity Asset Store, я пришел к выводу, что не обязательно писать что-то свое, можно скачать какие-то бесплатные или платные наработки, и при необходимости доработать их для своего проекта, благо выбор есть!

Готовых библиотек для 2D теней много, одни навороченные с кучей возможностей, другие - бесплатные и простые. Я не стал приводить список всех отсмотренных мною, только самые интересные:

 

Отсмотрев несколько, я взял один из ассетов, где уже все отлажено и работает, и начал заниматься тем, чтобы адаптировать его под свой проект. Что рекомендую сделать и вам, если вы хотите сделать красивые 2D тени для своего проекта. В крайнем же случае можно взять уже готовую библиотеку и на её основе написать свою — это в любом случае будет лучше, чем что-то пытаться сделать с нуля, особенно если с Unity вы еще не достаточно хорошо знакомы.

Особенности адаптации

Сами тени я трогать не стал, ведь в теории все просто и если кто-то реализовал выше описанную мной теорию в коде и оптимизировал результат — туда лезть уже не нужно. Тут встает немного другая задача: органично вписать проделанную кем-то работу непосредственно в свой проект. А именно крутить настройки и искать оптимальный внешний вид и хорошую производительность.

Но в моем случае стояла еще одна небольшая задача: вписать 2D тени в изометрический вид! И тут пришлось думать о тенях немного в другом ключе. Мне сложно это описать, но я просто решил задавать маски вручную для каждого отдельного объекта с определенными допусками, чтобы получить весьма интересный 3D эффект без потери 2D окружения.

Таким образом, эффект объема достигается за счет того, что полигон, задающий непроницаемость для света задается не для всего объекта, а для определенной его части, тем самым какая-то часть объекта остается светлой (высветляется источником света), а другая часть остается в тени — таким образом получается интересный объем в 2D игре. Конечно тени при этом рассчитываются не очень верно, так как мир плоский… Но кого это волнует?! Ведь никто не будет смотреть под правильным ли углом падает тень от ящика в том углу или там угол падения тени должен быть на 45 градусов больше или меньше?

Еще тут хочется похвалить Spine за его скелетную анимацию и возможность работать программно с каждой отдельной частью его тела, что в итоге позволило мне прицепить компоненты-полигоны, задающие непроницаемые участки для света, непосредственно к телу и к ногам персонажа, как к отдельным объектам, что в итоге позволило сделать динамические тени для тела и для ног.

Заключение

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

Планов на следующую неделю, как это было раньше — я уже не делаю, потому что разработка игры ушла далеко вперед, чем я успеваю рассказывать. На текущий момент я уже более менее победил ИИ, рэгдоллы, вроде бы разобрался со звуковой системой. Ахура потихоньку подключается к работе над звуками и далее мы уже по ходу дела будем обсуждать звук и как он должен работать. А еще, я начал разрабатывать систему характеристик для персонажей. То есть, теперь у героя и врагов будут такие параметры как: сила, ловкость, концентрация и выносливость — все эти характеристики будут сказываться на стиле игры и прохождении в целом. Но как это все будет связанно и взаимодействовать — толком еще не ясно, поэтому более подробно к этой теме мы вернемся позже.

[23 Апреля]

Бонус!

Специально для статьи я сделал небольшой пример, демонстрирующий принцип и идеи, которые я описал в записи. Этот пример не претендует на окончательное решение, которое можно использовать в вашем проекте, но как отправная точка для изучения и углубления в данную тему — вполне сгодится!

 


Индикаторы: Уроки, Zombotron3
Постоянная ссылка

 

 

Судя по виду теней вы остановились на super fast soft shadows. Прав?)

Vorren
31 Мая 2016
— 15:34
#

Эх, красота! Карлов рулит, даже весной!

P.s. буду массовку создавать, чем могу так сказать :)

Elmigo
31 Мая 2016
— 17:17
#

Прошу прощения, но не могли бы вы сказать примерную дату выхода игры?)

GABICH
31 Мая 2016
— 18:29
#

GABICH, мало ещё чего сделано, пока рано говорить о выходе игры.

Любитель мечей
31 Мая 2016
— 18:54
#

По поводу анимаций. Раз уж ЗТ идёт к успеху, а он как обычно идёт, то нужно больше реализма! То есть да ,перезарядка , удары , прыжки , бег, приседания - всё это понятно. Не хватало анимации смены пушек. А то выглядело так что ГГ либо со скоростью Флэша их меняет, либо трансформирует, либо он читер :P (знаю знаю, я бешу говорить известное и понятное, просто я щас представил пару сцен из грядущего шедевра(!) , и аж слюни пустил. Начнём с ... биороботов . Или экзоскелетов с вертушками(просто моя нереально богатая фантазия) )

Кто-То-Там
31 Мая 2016
— 23:37
#

Кстати, было бы забавно встретить соперника, который по интеллекту и экипировке не уступал нам. Ну там , ящики скидывает чтобы прибить быстрее, прячеться, меняет пушки... а мы испытываем судьбу бедных зомбей на себе.

Кто-То-Там
31 Мая 2016
— 23:39
#

>> Сегодня тот день чтобы уйти на UE если еще нет серьезной привязанности к Unity.

Антон, а что означал этот ваш твит? Что не так с Unity? Сам не смог новостей найти на эту тему.
Спасибо

Макс
1 Июня 2016
— 01:12
#

Не совсем понял про концентрацию. Это что-то типо меткости или как?

dinoZ
1 Июня 2016
— 01:31
#

https://m.youtube.com/watch?v=2AqcL2WhfH0

dinoZ
1 Июня 2016
— 01:33
#

@Антон
Блог всегда приятно читать. И спасибо, за очень приятный бонус!

Denis
1 Июня 2016
— 06:25
#

@Vorren,

> вы остановились на super fast soft shadows. Прав?)

Да, все верно.

Ant.Karlov
1 Июня 2016
— 11:22
#

@Elmigo, спасибо! :)

Ant.Karlov
1 Июня 2016
— 11:23
#

@GABICH,

> Прошу прощения, но не могли бы вы сказать примерную дату выхода игры?)

Примерная дата выхода: первая половина 2017 года.

Ant.Karlov
1 Июня 2016
— 11:24
#

@Кто-То-Там,

> По поводу анимаций. Раз уж ЗТ идёт к успеху, а он как обычно идёт, то нужно больше реализма! То есть да ,перезарядка , удары , прыжки , бег, приседания - всё это понятно. Не хватало анимации смены пушек.

Да, в этом плане я полностью согласен с вами. В новой игре нет ограничений по количеству ресурсов (контента) и геймплея на игру, поэтому анимаций и их разновидностей будет очень много. Уже сейчас первый базовый монстр «зомби» имеет как минимум две разновидности атаки и как минимум два варианта перемещений (ходьба, бег, прыжки) и т.п. В общем, в этом плане я постараюсь сделать максимум деталей, которых не было возможности сделать во Flash версиях игр.

Ant.Karlov
1 Июня 2016
— 11:29
#

@Кто-То-Там,

> Кстати, было бы забавно встретить соперника, который по интеллекту и экипировке не уступал нам.

Да, в этом плане био-боты были достаточно разумные в последней части Z: Time Machine. Но, к сожалению, погибали быстрее чем успевали показать свою разумность :D Посмотрим, удастся ли мне сделать в новой игре более проворных и умных противников.

Ant.Karlov
1 Июня 2016
— 11:31
#

Это уже не 7 неделя

игрок
1 Июня 2016
— 11:33
#

@Макс,

> Антон, а что означал этот ваш твит? Что не так с Unity?

Новость на эту тему здесь..., а здесь обсуждение новости.

Может быть на этой неделе, я напишу свои мысли по этому поводу отдельной записью в блоге.

Ant.Karlov
1 Июня 2016
— 11:36
#

@dinoZ,

> Не совсем понял про концентрацию. Это что-то типо меткости или как?

Меткость будет от ловкости зависеть, а так же ловкость будет влиять на критические попадания. Ловче, метче, а значит бьет в критические точки по врагу.

А концентрация — это аналог магии в sci-fi вселенной. Проще говоря концентрация будет влиять на пассивные возможности героя и возможность использования энергетического оружия (или что-то вроде того).

Ant.Karlov
1 Июня 2016
— 11:39
#

@Denis, здорово! Я рад, что интересно и не зря старался! :)

Ant.Karlov
1 Июня 2016
— 11:39
#

@игрок,

> Это уже не 7 неделя

Да, все верно, недель уже прошло намного больше. Но я по прежнему буду сохранять эту нумерологию для сохранения последовательности записей.

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

Ant.Karlov
1 Июня 2016
— 11:42
#

Я вот подумал... а как на счёт Псионики? Ну там объекты или мелких врагов швырять, наносить урн силой мысли, и всё такое? Ну или просто аналог грави-пушки или кинетик-модуля? Такая мелкая, но забавная деталь всегда радовала глаз.
P/S/ Стазис?
pspspsp то чувсво когда код активации - 6666

Кто-То-Там
1 Июня 2016
— 13:50
#

Отлично! :)

Арсеня
1 Июня 2016
— 18:46
#

С нетерпением жду новый Zombotron!!!

Чмыр Леонид
2 Июня 2016
— 20:47
#

5 копеек. я вообще ни как не связан с игроделаньем, я потребитель игр))))
Маленькое замечание. В предыдущих частях был такой косяк - я нажимаю на кнопку активирующую например лифт, и включается видео, точнее экран переносится и показывает что активировалось при нажатии кнопки. В это время если был не убитый монстр, он меня спокойно убивает, т.к. я его не вижу и не могу влиять на игру, я в это время смотрю что активировалось. припокупках игра какбы встает на паузу. сделай так чтобы в новой части такого не было и меня не убивали пока мне показывают что активировалось при нажатии на кнопку)))
ну и огромное спасибо за игру. переигрываю снова и снова пару раз в неделю))) С нетерпением жду новую часть игры.
И еще. что же там с Финой???)))

Олег
3 Июня 2016
— 16:00
#

Олег, а это мы узнаем как раз в 3-ем Зомботроне.

Любитель мечей
3 Июня 2016
— 23:27
#

Сколько вы тратите часов в день за компьютером?

олдфаг зомботрона
4 Июня 2016
— 00:02
#

Антон, забань уже тролля. Даже если тебе он не мешает, простым посетителям все равно неприятно.

Vik
4 Июня 2016
— 23:09
#

У меня к тебе предложение Антон. Введи регистрацию на своём сайте пожалуйста. Чтобы всякие левые тролли не могли тут безнаказанно шастать. Спасибо.

gg
4 Июня 2016
— 23:19
#

*информативных

Очень классно раскрыта тема, оссобенно про освещение, жду не дождусь след.поста)

олдфаг зомботрона
5 Июня 2016
— 18:47
#

Антон, будете продолжать работать на Юнити? (Ввиду последних анонсов)

Rasp
5 Июня 2016
— 21:14
#

Траты на 3д, когда применяется лишь 2д (А траты производительности наверняка есть, ежели программная поддержка 3д остаётся) - не понимаю этого...

Roman
6 Июня 2016
— 00:05
#

Понимаешь, roman, мир полон тайн и загадок. Как говорил один безызвестный футуролог, цитата:"мы захлебываемся информацией и умираем от жажды знаний". Ты понимаешь? Это значит, что ответ и близко и далеко — х-лучи, большой разрыв, измерения, жизнь на других планетах, существование бога, миры между мирами,тайны прошлого настоящего и будущего,смысл жизни(42), появление жизни на земле...я могу продолжать этот список бесконечно
как производство энергии в вечном двигателе, но боюсь тебя утомить. Ты когда-нибудь хотел желаемого? Конечно же хотел, желания, желания и прогресс двигают человечество вперед...Но зачем? Зачем нам двигаться вперед, почему "движение-это жизнь?"Думаю ответ кроется где-то в глубине наших возможностей.

dinoZ
6 Июня 2016
— 02:21
#

Информативно ведь?

dinoZ
6 Июня 2016
— 02:21
#

@Кто-То-Там,

> а как на счёт Псионики?

Пока по этому поводу ничего не могу сказать так как есть более важные задачи по геймплею сейчас которые необходимо решать. Но, вообще мне идея нравится, мне бы хотелось продвинуться в этом направлении. Единственное НО в этом вопросе: как подобные возможности лягут на геймплей — для этого нужно что-то реализовать и погонять в игре и только тогда можно будет уже говорить о внедрении или об отказе подобных возможностей.

То есть, проще говоря: когда появится уже какой-то полноценный геймплей, тогда я обязательно по экспериментирую с этим и расскажу более подробно что и как :)

Ant.Karlov
6 Июня 2016
— 11:07
#

@Олег,

> В предыдущих частях был такой косяк - я нажимаю на кнопку активирующую например лифт, и включается видео, точнее экран переносится и показывает что активировалось при нажатии кнопки. В это время если был не убитый монстр, он меня спокойно убивает, т.к. я его не вижу и не могу влиять на игру, я в это время смотрю что активировалось

Да, в новой версии обязательно уделю этому моменту особое внимание! Спасибо!

Ant.Karlov
6 Июня 2016
— 11:08
#

@олдфаг зомботрона,

> Сколько вы тратите часов в день за компьютером?

Если вопрос ко мне, то у меня 8 часовой рабочий день, но за компьютером провожу в среднем 9 часов. Естественно с перерывами и прогулками на улице между комп-сессиями.

Ant.Karlov
6 Июня 2016
— 11:10
#

@gg,

> У меня к тебе предложение Антон. Введи регистрацию на своём сайте пожалуйста.

Да, развели вы тут на выходных! Постараюсь в этом месяце прикрутить комментарии с обязательной регистрацией от Disqus. Анонимные комментарии тоже можно будет оставлять но с премодерацией.

Ant.Karlov
6 Июня 2016
— 11:12
#

@Rasp,

> Антон, будете продолжать работать на Юнити?

Да, с текущей игрой я буду продолжать работать на Unity т.к. это один из обязательных пунктов к выполнению в соглашении с издателем. В целом, я не вижу повода переходить на другой движок, так как последние события в ценовой политике Unity больно бьют по независимым разработчикам которые пытаются войти в геймдев и не имеют достаточных средств для ежемесячной оплаты движка. Учитывая, что есть бесплатные или более дешевые и доступные движки не уступающие по возможностям и мощностям Unity, сейчас бы я рекомендовал их к рассмотрению в первую очередь для одиночек и маленьких команд.

Ant.Karlov
6 Июня 2016
— 11:17
#

@Roman,

> Траты на 3д, когда применяется лишь 2д (А траты производительности наверняка есть, ежели программная поддержка 3д остаётся) - не понимаю этого...

Что вы не понимаете? Почему используется Unity для 2D игры или что-то еще?

Ant.Karlov
6 Июня 2016
— 11:19
#

Псионику можно использовать для редких(частые никто не любит) головоломок, единственный способ уничтожения некоторых врагов(бестелых существ) , ну или просто как очередную весёлую фишку(необязательную в геймплее, возможность пропускать задания с головоломками)

Кто-То-Там
6 Июня 2016
— 15:21
#

Кстати , вы знаете, что как минимум отец Фины - не человек? Присмотритесь - кровь в конце - синяя. А у кого она синяя? Правильно, у БиоРоботов.

Левый Чевак
6 Июня 2016
— 15:24
#

Привет Антон.
Вопрос вообще не в тему статьи.
Вспоминаю твои старе видео о том как нарисовать дерево или как ты собираешь уровень, в каждом из них была крутая расслабляющая музыка.
Собственно, посоветуй, пожалуйста, какую-нибудь музыку)

Меломан
6 Июня 2016
— 23:06
#

Ееееееееее революция)

gg
7 Июня 2016
— 04:29
#

Я сейчас много делаю не на AIR (он же Flash).

На Unity3D делаем последних парочку и небольших проектов на аутсорс. В нем не устраивает много чего, связанного с контролем над проектом. Но Unity3D это всё равно очень даже крутой движок и советовать отказываться от него я даже не смею. Думаю, что переключим наши аутсорсные поделки на UE4 или будем что-то новое искать. Благо движков как муравьев в муравейнике.

Но в защиту отмирающего скажу, что фраза

Но использование столь требовательного эффекта во Flash версии игры, конечно же, было настоящим самоубийством,

Не относится к флешу, как бы Антон того не хотел :) Это относится лишь к softwareному Ant Hill. На Stage3D (как он только появился) было сразу же реализовано кучу примеров 2Д теней, которые не просаживали фпс даже на iPhone4. Если бы Unity3D умел software рендеринг - любое слово из массива "тормозит", "не так быстр" и "нагревает проц" - было бы и про Unity3D :)

Я к чему ... Сравнивать мягкое в контексте "оно лучше мокрого" - ну совсем не правильно.

TheRabbitFlash
7 Июня 2016
— 15:34
#

Не будет ли быстрее разбить алгоритм на две фазы широкую и узкую: в широкой, допустим, найти все полигоны с потенциальной коллизией исходя из радиуса источника света и, например, заранее подготовленного bsp дерева пространства или простого разбития по сетке, а в узкой фазе делать рейкасты только к точкам вершин найденных потенциальных препятствий? Тогда рейкастов будет в разы меньше, а найденные пересечения будут сразу итоговыми. Да и по bsp дереву такой каст в отсутствии препятствий почти бесплатно пробежит. Если ещё и геометрию препятствий ограничить, то полторы сотни источников света можно считать со скоростью пули даже при убогом, софтверном, флэшовом рендере. =)
Правда тогда останется один вопрос: когда при этом делать игру? =)

Denis
8 Июня 2016
— 04:23
#

@Кто-То-Там,

> Псионику можно использовать для редких(частые никто не любит) головоломок, единственный способ уничтожения некоторых врагов(бестелых существ)

Пока еще не понятно как будет использоваться альтернатива магии. Но как только базовый геймплей будет более менее готов, сразу же приступлю к поиску интересных решений для псионики. Спасибо за идеи к размышлению!

Ant.Karlov
8 Июня 2016
— 11:15
#

@Левый Чевак,

> Кстати , вы знаете, что как минимум отец Фины - не человек? Присмотритесь - кровь в конце - синяя. А у кого она синяя? Правильно, у БиоРоботов.

Очень интересное наблюдение! Уже думаем не включить ли это как-нибудь в сюжет. Спасибо :)

Ant.Karlov
8 Июня 2016
— 11:16
#

@Меломан,

> Вопрос вообще не в тему статьи.
Вспоминаю твои старе видео о том как нарисовать дерево или как ты собираешь уровень, в каждом из них была крутая расслабляющая музыка.
Собственно, посоветуй, пожалуйста, какую-нибудь музыку)


Очень приятно, что вам приглянулось мое музыкальное предпочтение. Рекомендую заглянуть на сайт di.fm — там множество станций (потоков) в разных стилях и направлениях с довольно разнообразными плей-листами. Почти постоянно слушаю их за работой. Без аккаунта можно слушать час, а потом требуется бесплатная регистрация, с бесплатным аккаунтом иногда бывает реклама на англ.языке между треками, но совершенно не напрягает.

Если вас интересует, что можно поискать и скачать, то дайте знать, сделаю небольшой список того, что слушаю в offline. В любом случае медиатека моя на другом рабочем компьютере и прямо сейчас у меня нет к ней доступа.

Ant.Karlov
8 Июня 2016
— 11:22
#

@TheRabbitFlash,

> Но Unity3D это всё равно очень даже крутой движок и советовать отказываться от него я даже не смею.

С текущей ценовой политикой Unity перешел в лигу премиум движков особенно для независимых разработчиков. Поэтому если тут есть независимые разработчики которые не планируют строить большой бизнес на разработке игр, а просто хотят реализовать какие-то свои мечты и как бонус, чуть-чуть что-то заработать на этом — то Unity им уже не подходит, т.к. это получается достаточно дорогим удовольствием.

Конечно, можно использовать бесплатную версию. Если разработчика не смущает сплеш скрин, то можно использовать и Unity. Но учитывая наличие не менее сильных и более доступных (дешевых) движков — следует все хорошенько взвесить прежде чем приступать к работе. Лично я считаю, что $125 в месяц для начинающего или среднего инди за отключение сплеш скрина — это весьма и весьма приличная плата.

> Не относится к флешу, как бы Антон того не хотел :) Это относится лишь к softwareному Ant Hill. На Stage3D (как он только появился) было сразу же реализовано кучу примеров 2Д теней, которые не просаживали фпс даже на iPhone4.

Обычно о мертвых говорят либо хорошее, либо ничего. Но все же, я вставлю свои пять плохих копеек: когда Starling только появился, он на iPhone 4 ели шевелился. А в вебе его все и вовсе боялись по разным причинам. Поэтому, конечно же, в контексте данной записи речь идет об обычном софтварном Flash который существовал большую часть времени.

> Я к чему ... Сравнивать мягкое в контексте "оно лучше мокрого" - ну совсем не правильно.

Не было сравнения! Речь в записи шла исключительно о том, что я просто не мог позволить себе использовать такие эффекты в web-играх по понятным причинам. Как собственно и все остальные разработчики. Если бы это было иначе, то мы бы видели много технологичных Flash игр, но их практически нет.

Ant.Karlov
8 Июня 2016
— 11:36
#

@Denis,

> Не будет ли быстрее разбить алгоритм на две фазы широкую и узкую: в широкой, допустим, найти все полигоны с потенциальной коллизией исходя из радиуса источника света и, например, заранее подготовленного bsp дерева пространства или простого разбития по сетке, а в узкой фазе делать рейкасты только к точкам вершин найденных потенциальных препятствий?

Да, это очень хорошая и верная мысль. По хорошему так и нужно делать. В записи, я решил не трогать вопросы оптимизации и ускорения, при наличии большого количества уже готовых примеров. То есть тема достаточно распространенная и информации много.

> Правда тогда останется один вопрос: когда при этом делать игру? =)

Ну, bsp дерево не сложно реализовать. Но полноценное создание движка освещения конечно скушает кучу времени в целом. Почитав несколько форумов про свет (в частности про создание отдельных платных световых ассетов для Unity) — я и решил воспользоваться уже готовым платным решением, так как все технические моменты более-менее уже решены и готовы к использованию :)

Ant.Karlov
8 Июня 2016
— 11:41
#

И ещё. Я вот заметил, что все ваши работы(Зомботрон в особенности) основаны на советской фантастике. Сложно передать где, но это чувствуется. Робомашина - по моему лучший пример.

Левый Чевак
8 Июня 2016
— 13:18
#

Я вот сейчас подумал... вы что-то говорили об энергетическом оружии... зря, очень зря... Теперь я с идеями ТОЧНО не заткнусь(крайний случай - бан) ;p

Кто-То-Там
8 Июня 2016
— 13:21
#

[i]Рекомендую заглянуть на сайт di.fm — там множество станций (потоков) в разных стилях и направлениях с довольно разнообразными плей-листами.[i]

Спасибо, отличный сайт. Уже слушаю)

[i]Если вас интересует, что можно поискать и скачать, то дайте знать, сделаю небольшой список того, что слушаю в offline.[i]

Если это вас не затруднит, то было бы просто великолепно!

Меломан
8 Июня 2016
— 14:45
#

[i]Если вас интересует, что можно поискать и скачать, то дайте знать, сделаю небольшой список того, что слушаю в offline.[i]

Присоединяюсь к Меломану! Много хорошей музыки не бывает))

Pandorin
8 Июня 2016
— 21:53
#

Прототип персонажа похож на Командора из Эволюции. Только щас заметил! :p
Опять код - 6666

Кто-То-Там
10 Июня 2016
— 11:34
#

пускай тут будет эта ссылка

https://www.shadertoy.com/view/4dfXDn

Good
12 Июня 2016
— 15:34
#

Антон, а как на счёт мистики в Зомботроне 3? Может пусть концентрация позволяет использовать шаманскую магию (Про которую можно будет узнать у инопланетного шамана), или что-то типа того. Также это можно будет ещё и как-то увязать с сюжетом новой части... И это заодно и объяснило бы следующее:

"И почему на вашей планете скелеты расхаживают как живые!?"
-- Главный герой Zombotron 2.

Marauder
14 Июня 2016
— 06:55
#

В принципе я мог бы помочь тебе с сюжетом игры и прислать какие-нибудь сюжетные наброски, если не ты заинтересован.

Marauder
14 Июня 2016
— 06:57
#

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

Ronin
14 Июня 2016
— 11:25
#

Есть идея, где можно применить магию(концентрацию)-например, воскрешение убитых врагов, как союзников, при условии если есть необходимые части тела у врага(голова например)и, если сверху нет никаких твердых препятствий, чтоб в текстуры не влез, пока вставал. Или еще разрушение/поджог/отброс предметов на расстоянии силой мысли.
Насчет биоботов,конечно, можно сделать умнее, биоботы-кооперативы: один пытается лечиться, другие окружают его и прикрывают, смена оружий, улучшить рукопашный бой(выбивание огнестрельного оружия из рук, блокирование ударов, отталкивание),какие-нибудь засады,прятки за ящиками, смена оружий)...

dinoZ
16 Июня 2016
— 01:32
#

dinoZ , да на биороботов можно навесить ВСЁ , что может навесить игрок. Их собственную экипировку тоже естественн. Кстати, кроме игрока прагать умели только биоботы и Фина. Совпадение? Возможно.

Кто-То-Там
16 Июня 2016
— 16:55
#

А перемотка времени будет? Я надеялся на ее появление еще в Time machine, но на флеше наверное сложно было сделать полноценную, зато на Юнити даже готовые ассеты на эту тему есть.
В оригинальных Зомботронах бесконечный респавн игрока рядом с местом смерти выглядит неестественно, и жизнь персонажа утрачивает ценность - любого босса можно закидать шапками, не подбирая тактику. Понятно, что это было сделано для того, чтобы игра понравилась казуальной аудитории флеш-порталов. Но с неограниченной перемоткой времени можно сделать такое же бессмертие с одной жизнью. Зато хп врагов тоже будут восстанавливаться при обратной перемотке, и боссов не получится убить "в перемяс".

От новой платформы хотелось бы больше нововведений в плане геймплея, а не только в плане улучшенной графики.

Vik
16 Июня 2016
— 17:52
#

Vik, а какже пауки?

dinoZ
17 Июня 2016
— 00:54
#

dinoZ, а что с ними?

Vik
17 Июня 2016
— 02:01
#

Они тоже умели прыгать.

dinoZ
17 Июня 2016
— 02:09
#

Антон, поправь ошибку: Индикатор: "Новост".

Хожу
17 Июня 2016
— 11:38
#

Почитав что то из блога разработки я ни чего не понял и пропустил большой кусок. Но по крайней мере ясно что игра будет выглядеть клево, хоть и стиль персов сменился. Было бы круто добавить в игру какую ни будь систему экипировки (Как во втором Зомботроне но ещё и с возможностью её где ни будь покупать) выглядело бы по моему отлично.

Rusguy1337
18 Июня 2016
— 13:40
#

@Good, интересная ссылка. Спасибо что поделились.

Ant.Karlov
19 Июня 2016
— 08:13
#

@Marauder,

> Антон, а как на счёт мистики в Зомботроне 3?

Про мистику в игре пока ничего не могу сказать. Непосредственно над сюжетом пока никакой работы не ведется вообще. А как может и будет использоваться магия (её аналог) в игре — тоже пока сложно сказать. На данном этапе работаю над базовым геймплеем, и чуть позже буду преходить к новым фичам — тогда начну расписывать свои идеи и пути их развития, вот тогда можно будет присоединится к обсуждению и предлагать свои идеи! :)

Ant.Karlov
19 Июня 2016
— 08:16
#

@dinoZ,

> Насчет биоботов,конечно, можно сделать умнее, биоботы-кооперативы: один пытается лечиться, другие окружают его и прикрывают, смена оружий, улучшить рукопашный бой...

Да, это интересное направление, мне бы хотелось сделать что-то подобное. Но пока затрудняюсь ответить что-то конкретное по этому поводу, так как сосредоточен над базовым геймплеем и его улучшением.

Ant.Karlov
19 Июня 2016
— 08:18
#

@Vik,

> А перемотка времени будет? Я надеялся на ее появление еще в Time machine..

Да, во флеше многие интересные вещи достаточно сложно сделать. Но перемотку времени вроде вполне реально сделать. Я только не очень понимаю как можно полезно задействовать подобную фичу в игре типа Зомботрон и думал только о реализации замедления времени, чтобы подчеркивать (показывать) какие-то определенные геймплейные моменты.

> В оригинальных Зомботронах бесконечный респавн игрока рядом с местом смерти выглядит неестественно, и жизнь персонажа утрачивает ценность.

Да, эта проблема действительно имеет место быть. Мои предыдущие игры получались весьма хардкорными для Flash аудитории и я тогда думал над тем чтобы максимально оказуалить и сделать игру более веселой и простой. С респавнами и смертями экспериментировал и итоговый вариант оказался самый оптимальный для большинства игроков :) В новой игре я думаю эту систему в целом сохранить, но немного переработать усложнив этот процесс за счет того, что построение и связи между локациями немного изменятся. В общем, больше информации по этому поводу будет немного позже.

Да, в целом в новой игре будет множество нововведений в плане геймплея — чего только будет стоить новая система характеристик и экипировки, не считая всего остального что еще предстоит сделать.

Ant.Karlov
19 Июня 2016
— 08:27
#

@Rusguy1337,

> Почитав что то из блога разработки я ни чего не понял и пропустил большой кусок.

Да, на начальных этапах разработки дневники больше интересны непосредственно другим разработчикам чем игрокам ожидающим игру. Это совершенно естественный процесс, поскольку в начале разработки я больше ковыряюсь с технологиями и мало работаю непосредственно над игрой. Позже, разработка перейдет в другое русло и я начну много писать о новых возможностях и об игре в целом.

> Было бы круто добавить в игру какую ни будь систему экипировки...

Да, в новой игре будет новая система экипировки и полноценный инвентарь. В ближайшие дни покажу картинки своих наработок в этом плане ;) Спасибо!

Ant.Karlov
19 Июня 2016
— 08:30
#

Антоон! Дай кукуумбеер! Пожаалуйста)
Тоже наткнулся на корявую систему компонент в юнити, потом на Entitas и та же проблема с редактором. Сил нет переписывать Unity-Ash

mailtofuture2@ya***

Сергей
21 Июня 2016
— 10:44
#

Хорошая выйдет игра. Прям не терпится увидеть что получится.

ps. Простите меня я с рождения идиот :D

gg
21 Июня 2016
— 15:08
#

Антон ты самый лучший российский разработчик

фанат
22 Июня 2016
— 10:08
#

@gg

> Хорошая выйдет игра.Прям не терпится увидеть
что получится.

p.s. Да ты прав

фанат
22 Июня 2016
— 10:14
#

upd: кукумбер оказался не нужен. Чтобы юнити-Ash подхватывал объекты из сцены, нужно просто задать скрипту Ash.Core.Entity время выполнения попозже (execution time)

Сергей
22 Июня 2016
— 22:38
#