Crest Breakout 2 - работа продолжается



Пока игра еще далеко не окончена и работа ведется, решил рассказать каких трансформаций претерпела игра и что добавлено в последнее время.



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

Решил убрать тот элемент геймплея, где игрок передвигает и настраивает вентиляторы, чтобы направлять ГГ. Эта фишка перекочевала из 1 части игры, но уже никак не вписывалась в обновленную версию. Таким образом, управление игроком стало заключаться в прыжках и атаках. Чтобы это все удобно работало, решил прикрутить атаку/прыжок на лкм/пкм, но сначала сомневался, потому что думал правая мышь не работает во флеше, а оказывается уже давно есть и весь мир пользуется и только один я слоупок не знал. В общем — сделал, стало удобно и приятно.

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



В тот момент я собирал левелы во Flash IDE, и вроде как обычно все было круто, пока я понял что не могу нормально реализовать некоторые вещи, например:

1. Создавая задники (обычно в скроллерах у меня 3-4 слоя бекграундов), я не мог контролировать параллакс. Это ничего, если игра постоянно скроллится только по 1 оси, как в большинстве раннеров, и так у меня было в AcornStory, Joops и HowDareYou. Но, если требуется чтобы задник скроллился и по вертикали — тут возникают трудности.

Если левел имеет ограниченные размеры, то размер первого задника будет (1,1) и скорость = -скорость игрока. Другие слои скролятся с меньше или большей скоростью, и имеют размер, в пропорции соответствующий скорости. Например, 2й задник имеет размер 0,75 от первого, третий 0,5 от первого и тд.

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

2. Я не мог настраивать параметры объектов. Когда мне надо было указать, с какой разной силой каждая подушка будет пружинить персонажа — я не мог это сделать. Ну или мог — назвать объект в IDE как-то по особому, типа: PILLOW_NUMBER2_POWER_1000, и из стринга выдергивать значение, но это какие-то полу-меры, так что отказался.

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

4,5,6,7… что-то еще, я уже не помню.

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



Что он умеет делать? В основном примитивные функции которые от него и требуются — расстановка объектов, скейл/ротейт. Но, теперь я мог контролировать свои паралаксные бекграунды!

Едитор — всего-лишь геймплей, который добавляет объекты по нажатию кнопочки. Теперь, просто двигая персонажа мышкой (за ним всегда следит камера) я могу перемещаться по левелу и смотреть, туда ли я поставил тот или иной спрайт задника. Это офигенно удобно! Потом данные о спрайтах сохраняются в джсон и когда создается левел они добавляются в спрайт, рисуются в битмапдаты (сейчас 640х480) и удаляются.



Решилась и проблема с уникальными параметрами объекта. На этом этапе я неожиданно для себя обнаружил открытие — оказывается, к переменной экземпляра Object можно обратиться с помощью []. Именно так у меня реализованы настраиваемые поля объекта в эдиторе. Например, подушка — у нее настраиваемые параметры это сила пружины и скейл (ниже — псевдокод):

class Pillow
{
public var bouncePower:Number;
public var scale:Numer;

public var objParams:Array = [«bouncePower», «scale»];
}

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

gameObject.objParams[i] = value;

Что является следующим:

pillow.bouncePower = 1000;

Это оказалось очень полезным свойством Обжекта, о котором я не знал ранее, хотя всегда пользовался obj.paramName = value; — например для сохранок, но мне и в голову не приходило, что можно так обращаться к свойству объекта.

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

Левелы сохраняются и загружаются с помощью стандартной библиотеки JSON, поэтому в любой момент времени я могу загрузить и поправить любой левел. Это очень удобно, потому что мне не нужно паблишить SWC во Flash IDE, потом билдить проект в FlashDevelop — я просто загружаю и редактирую левел в одном окне, а в другом тестирую его.

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

Теперь расскажу немного про арт.

Раньше я записал один speed paint, где нарисовал кое какие объекты для игры в векторе, и мне их в принципе хватало, пока я работал с кодом. Но насмотревшись всяких красивых артов, да еще после своих успехов с эдитором — решил улучшить арт и сделать его более профессионально.

Дело в том, что «круто» рисовал я очень давно, да и то, в прошлом я — 3д художник, а с 2д знаком на уровне всех моих предыдущих игр. Какие-то крутые рисунки в фотошопе я вообще никогда не рисовал, но в этот раз решил — раз учиться, то учиться до конца. Пока я не очень преуспел, но покажу что есть.

Попробовав поработать в 3dmax под виртуалкой на маке — забросил это дело далеко подальше — 10 фпс потолок. Установил SketchUp от Google — помоему, просто жуть какой тупой софт. Тут я могу себе позволить его поругать — в максе у меня опыт работы наверное лет 6, но даже этот опыт не позволил мне нормально работать в новой программе. Там вроде как все ок, но и нет — элементарные функции перемещения, вращения и скейла объекта релализованы чтобы уничтожать вашу нервную систему. Ну ладно, мне надо было только выставить перспективу, так что сгодилось. Хотя на данный момент я уже вообще отказался от него и рисую полностью в 2д, ибо на деле все просто.


Скетч для перспективы и формы


Арт после ФШ

Это была 2 итерация арта, но снова не подошло. Кстати, весь арт который я показываю — либо не подошел, либо просто скетчи — поэтому он местами весьма коряв и в разном стиле. Я имею такое свойство — не дорисовывать объект и возвращаться к нему спустя долгое время. Поэтому уверен, что финальный арт будет выглядеть по другому, так что не относитесь к этому серьезно.

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



И вернулся снова к задникам:





И вот последняя итерация на сегодня:


Работы по арту еще много. Я учусь в процессе, но чувствую, что потихоньку получается.

ОЧЕНЬ помогают спидпеинты крутых художников, вот например Aymeric Kevin, который работал над Rayman Legends:
www.youtube.com/watch?v=QldLPF9xFTg

Еще один невероятный художник: www.youtube.com/watch?v=nImc75t8gWk

Посмотрев даже пару таких видео, я много чего для себя почерпнул.

Ну, вот наверное и все. Писал долго, поэтому полюбому что-то забыл. Может напишу в следующий раз. Спасибо за внимание :)
  • +9

Комментарии (5)

0
«Я не мог настраивать параметры объектов. Когда мне надо было указать, с какой разной силой каждая подушка будет пружинить персонажа — я не мог это сделать. Ну или мог — назвать объект в IDE как-то по особому, типа: PILLOW_NUMBER2_POWER_1000, и из стринга выдергивать значение, но это какие-то полу-меры, так что отказался.»
Просто ты не знаешь что существуют компоненты во flash ide.
0
Чувак ты крут! Я так и не собрался написать свой редактор. Меня конечно посещала эта сумасбродная мысль, но я все равно стал использовать стандартные средства и все такое. Но ты силен! Уважаю, когда волю человека не сломить. Я уверен, что путь твой увенчает успех. Может быть тихий, для себя и близких друзей. А может и оглушительный. Но он там есть, в конце пути )))
Среди прочего могу отметить в игре хороший арт. Геймплей тоже неплох.
Успехов!
0
Спасибо! Надеюсь мне еще рано задумываться о конце пути, хочется пожить все-таки...))
0
Благодарю за ссылки на видео. Удачи.
0
Сегодня в Турции заблокировали Twitter и YouTube, так что быстрых новостей об игре пока не будет)) Но такое уже было раньше и возможно это временно
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.