
Постмортем игры “The Pirates Time”
«Когда корабль за окном, то не грех и серёжку в ухо вставить»
Петросянское описание игры с нашего сайта.
Мы – творческая артель New Art Games – продолжаем делать флеш-игры. Очередным выпущенным проектом стала игра про пушку и разрушаемый рельеф “The Pirates Time”. Под катом – история разработки и продажи игры.

Ну и сразу чтоб не томить ожиданием – поиграть можно тут:
www.kongregate.com/games/NewArtGames/the-pirates-time
www.newgrounds.com/portal/view/564823
Всё началось ещё в августе 2010 года, когда я мучил интернеты на предмет физических движков для Flash. Я тогда начинал учить box2d, но клепать очередной клон Peggle не хотелось. И вот я наткнулся на пару уроков известного итальянского программиста Эмануэля Феронато, посвящённых разрушаемым рельефам. Эта механика и была взята за основу.
И тут же перед нами встала серьёзная проблема – надо было либо делать эти самые рельефы и обходится простой самописной физикой, либо отказываться от разрушаемости и с помощью стороннего физического движка делать крутую физику. Насколько я знаю, сейчас с помощью движка nape можно совместить две эти ипостаси, но nape – это ещё не изученный вдоль и поперёк box2d, так что могут возникнуть проблемы. Поскольку, как я уже сказал, делать клон не хотелось, был выбран первый вариант. Конечно, это не уберегло игру от внешнего сходства с десятками canon-игр, зато возможность разломать весь уровень «как в «Червячках»» придала некоторую свежесть геймплею.
На самом деле, мы не сразу решили сделать игру такой, какая она есть. Откомментировав пару строк кода, можно вдохнуть жизнь в капитана корабля, который будет бегать по палубе по мановению ваших WSAD и прыгать по нажатию пробела. Мы убрали это, так как совершенно не знали, куда применить. Наш художник предлагал заставить игрока перед каждым выстрелом бегать в трюм за новым снарядом и обратно к пушке. Ещё одно подтверждение того, что нельзя доверять художникам гейм-дизайн)
Наш мега-художник решил рисовать пиратов. Забавное существо в треуголке, большая пушка на корабле – всё как полагается. Скромные попытки программиста сделать взрывы частицами были безапелляционно пресечены созданием мультяшных. Наверное, сам художник может рассказать что-нибудь ещё интересное о создании графики, но сейчас он прикован к батарее и рисует для следующего проекта.
Изначально вся графика в игре была больше. Но в ходе игровых тестов мы заметили, что скроллинг по двум измерениям совершенно не даёт нормально целиться, и потому вся игровая часть была подвергнута суровому scale = 0.7;
Хозяйке на заметку: галочка allow smoothing, выставленная в библиотеке Flash IDE для растровой графики, в большинстве случаев предотвращает её искажение при поворотах и изменении масштаба. Как показывает практика, многие этого не знают.
Картинка большая, потому ссылкой:
lh3.googleusercontent.com/-Dq4eMhiDUm8/TYCVlV1xqcI/AAAAAAAAACY/NYuRP8Rsokc/s1600/scaling.png
Эта игра стала моим первым законченным проектом на actionscript 3. За время работы я успел возненавидеть и полюбить ООП. И, самое главное, приучиться комментировать код так, чтоб после длительного перерыва можно было бы легко вернуться к работе над проектом. В общем, я считаю этот проект левел-апом для себя. А теперь немножко о конкретных проблемах…
Самой нетривиальной с точки зрения программирования задачей для меня стала отрисовка траектории полёта снаряда. Понятно, что это должна быть кривая Безье, понятно, что мы можем получить две крайние точки… А вот попытки высчитать вспомогательную точку ни к чему ни приводили. Знакомые с программированием бакалавры математики тоже не особо помогли. А спас, как и всегда, гугл и сайт какого-то нашего флешера (к сожалению, имя и линк потерялись, но я выражаю искреннюю благодарность этому человеку). Кривая в итоге строится по точкам, сохраняемым в каждый момент полёта снаряда:
Ещё одной проблемой стало быстродействие. Мешанина классов со ссылками друг на друга приводила к тому, что после нескольких уровней сборщик мусора переставал справляться со своей работой (вернее, просто не делал её – ссылки на объекты-то остались, значит удалять нельзя). Вдумчивое переписывание кода и последовательное удаление всех слушателей событий и всего, что может помешать сборщику мусора, очень помогло. Мораль: продумывайте архитектуру! Ну а ещё используйте растровую графику – она всё-таки быстрее вектора.
Весь функционал игры был готов к Новому году. Однако январская сессия несколько помешала работе, и игра ушла на аукцион 10 февраля. За несколько дней до этого мы по совету Стефана поменяли управление на более казуальное и добавили недоачивки (озвученные надписи, появляющиеся вверху экрана при определённых событиях). Ачивки – это модно, но нашпиговывать такую, в общем-то, простую игру кучей наград мы не стали. По причине простоты и ненапряжённости игры также не стали вводить магазин. Хотя разные виды снарядов можно было бы попробовать…
Продажа началась с 1000$ за праймари и закончилась на 1750$ праймари + 500$ за каждый миллион геймплеев в течение трёх месяцев. Игра ушла голландцам из FunnyGames. По их просьбе была добавлена система подсчёта очков, их API и записан walkthrough. Спонсор также позволил нам самим добавить игру на Kongregate и Newgrounds (кстати, API Конга очень прост и удобен, всем советую не брезговать им). На другие порталы спонсор обещал проталкивать игру сам – посмотрим, что получится. Деньги, после долгих попыток найти удобный всем вариант, мы получили через Western Union. С Эриком весьма приятно работать, я даже удивился, когда нашёл о них пару негативных отзывов о задержках с платежами. Собственно, деньги он отправил даже раньше, чем получил инвойс.
“The Pirates Time” – это только начало работы в данном направлении. Несмотря на то, что сейчас в разработке у нас находятся кардинально иные проекты, мы также вынашиваем планы сиквела и, возможно, набора уровней для оригинальной игры.
Петросянское описание игры с нашего сайта.
Мы – творческая артель New Art Games – продолжаем делать флеш-игры. Очередным выпущенным проектом стала игра про пушку и разрушаемый рельеф “The Pirates Time”. Под катом – история разработки и продажи игры.

Ну и сразу чтоб не томить ожиданием – поиграть можно тут:
www.kongregate.com/games/NewArtGames/the-pirates-time
www.newgrounds.com/portal/view/564823
Начало
Всё началось ещё в августе 2010 года, когда я мучил интернеты на предмет физических движков для Flash. Я тогда начинал учить box2d, но клепать очередной клон Peggle не хотелось. И вот я наткнулся на пару уроков известного итальянского программиста Эмануэля Феронато, посвящённых разрушаемым рельефам. Эта механика и была взята за основу.
И тут же перед нами встала серьёзная проблема – надо было либо делать эти самые рельефы и обходится простой самописной физикой, либо отказываться от разрушаемости и с помощью стороннего физического движка делать крутую физику. Насколько я знаю, сейчас с помощью движка nape можно совместить две эти ипостаси, но nape – это ещё не изученный вдоль и поперёк box2d, так что могут возникнуть проблемы. Поскольку, как я уже сказал, делать клон не хотелось, был выбран первый вариант. Конечно, это не уберегло игру от внешнего сходства с десятками canon-игр, зато возможность разломать весь уровень «как в «Червячках»» придала некоторую свежесть геймплею.
…не всё так просто
На самом деле, мы не сразу решили сделать игру такой, какая она есть. Откомментировав пару строк кода, можно вдохнуть жизнь в капитана корабля, который будет бегать по палубе по мановению ваших WSAD и прыгать по нажатию пробела. Мы убрали это, так как совершенно не знали, куда применить. Наш художник предлагал заставить игрока перед каждым выстрелом бегать в трюм за новым снарядом и обратно к пушке. Ещё одно подтверждение того, что нельзя доверять художникам гейм-дизайн)
Визуальный стиль
Наш мега-художник решил рисовать пиратов. Забавное существо в треуголке, большая пушка на корабле – всё как полагается. Скромные попытки программиста сделать взрывы частицами были безапелляционно пресечены созданием мультяшных. Наверное, сам художник может рассказать что-нибудь ещё интересное о создании графики, но сейчас он прикован к батарее и рисует для следующего проекта.
Он такой большой…
Изначально вся графика в игре была больше. Но в ходе игровых тестов мы заметили, что скроллинг по двум измерениям совершенно не даёт нормально целиться, и потому вся игровая часть была подвергнута суровому scale = 0.7;
Хозяйке на заметку: галочка allow smoothing, выставленная в библиотеке Flash IDE для растровой графики, в большинстве случаев предотвращает её искажение при поворотах и изменении масштаба. Как показывает практика, многие этого не знают.
Картинка большая, потому ссылкой:
lh3.googleusercontent.com/-Dq4eMhiDUm8/TYCVlV1xqcI/AAAAAAAAACY/NYuRP8Rsokc/s1600/scaling.png
Проблемы кода
Эта игра стала моим первым законченным проектом на actionscript 3. За время работы я успел возненавидеть и полюбить ООП. И, самое главное, приучиться комментировать код так, чтоб после длительного перерыва можно было бы легко вернуться к работе над проектом. В общем, я считаю этот проект левел-апом для себя. А теперь немножко о конкретных проблемах…
Самой нетривиальной с точки зрения программирования задачей для меня стала отрисовка траектории полёта снаряда. Понятно, что это должна быть кривая Безье, понятно, что мы можем получить две крайние точки… А вот попытки высчитать вспомогательную точку ни к чему ни приводили. Знакомые с программированием бакалавры математики тоже не особо помогли. А спас, как и всегда, гугл и сайт какого-то нашего флешера (к сожалению, имя и линк потерялись, но я выражаю искреннюю благодарность этому человеку). Кривая в итоге строится по точкам, сохраняемым в каждый момент полёта снаряда:
public function draw_curve()
{
curve.graphics.lineStyle(2, 0xFFFFFF);
curve.graphics.moveTo(kontur[0][0], kontur[0][1]);
for (i = 1; i < kontur.length - 2; i ++)
{
var xc:Number = (kontur[i][0] + kontur[i + 1][0]) / 2;
var yc:Number = (kontur[i][1] + kontur[i + 1][1]) / 2;
curve.graphics.curveTo(kontur[i][0], kontur[i][1], xc, yc);
}
curve.graphics.curveTo(kontur[i][0], kontur[i][1], kontur[i + 1][0], kontur[i + 1][1]);
}
Ещё одной проблемой стало быстродействие. Мешанина классов со ссылками друг на друга приводила к тому, что после нескольких уровней сборщик мусора переставал справляться со своей работой (вернее, просто не делал её – ссылки на объекты-то остались, значит удалять нельзя). Вдумчивое переписывание кода и последовательное удаление всех слушателей событий и всего, что может помешать сборщику мусора, очень помогло. Мораль: продумывайте архитектуру! Ну а ещё используйте растровую графику – она всё-таки быстрее вектора.
Музыка и звуки
Как всегда — эксклюзивный саунд-трек. На этот раз мы не стали экспериментировать и просто заказали нашему композитору «что-нибудь пиратское». Были проблемы с подбором звуков, не выбивающихся из атмосферы, но и их мы всё же решили.Доделки
Весь функционал игры был готов к Новому году. Однако январская сессия несколько помешала работе, и игра ушла на аукцион 10 февраля. За несколько дней до этого мы по совету Стефана поменяли управление на более казуальное и добавили недоачивки (озвученные надписи, появляющиеся вверху экрана при определённых событиях). Ачивки – это модно, но нашпиговывать такую, в общем-то, простую игру кучей наград мы не стали. По причине простоты и ненапряжённости игры также не стали вводить магазин. Хотя разные виды снарядов можно было бы попробовать…
Торги, дистрибуция, бабло…
Продажа началась с 1000$ за праймари и закончилась на 1750$ праймари + 500$ за каждый миллион геймплеев в течение трёх месяцев. Игра ушла голландцам из FunnyGames. По их просьбе была добавлена система подсчёта очков, их API и записан walkthrough. Спонсор также позволил нам самим добавить игру на Kongregate и Newgrounds (кстати, API Конга очень прост и удобен, всем советую не брезговать им). На другие порталы спонсор обещал проталкивать игру сам – посмотрим, что получится. Деньги, после долгих попыток найти удобный всем вариант, мы получили через Western Union. С Эриком весьма приятно работать, я даже удивился, когда нашёл о них пару негативных отзывов о задержках с платежами. Собственно, деньги он отправил даже раньше, чем получил инвойс.
Что дальше?
“The Pirates Time” – это только начало работы в данном направлении. Несмотря на то, что сейчас в разработке у нас находятся кардинально иные проекты, мы также вынашиваем планы сиквела и, возможно, набора уровней для оригинальной игры.
- +13
- iLORd
Комментарии (39)
Через месяц можно Постмортем.
Удачи вам в начинаниях, графика хорошая, управление не особо.
А управление, да, не очень удобное, скроллинг во время оттягивания вектора выстрела это — зло, также после такого скроллинга отпускание кнопки не срабатывает.
Когда поиграл в игру — не удивился насчет такой низкой цены.
имхо, можно было продать в 1,5-2 раза дороже! Хотя, может быть из-за немного неудобного управления.
Игра «заочно» понравилась еще после просмотра геймплейного видео на youtube.
По кривым Безье
Ну и самое главное — никогда не скейлите графику в меньшую сторону — замыливаются абсолютно все детали. Я думаю ВСЕ знакомы с галочкой Allow smoothing — но пользуются ей единицы, потому что понимают к чему это может действительно привести… Allow smoothing хорош для анимации изображений — они плавнее перемещаются визуально, без рывков. Но детали частично мылятся даже без скейла.
Т.е. нужно было переделать весь арт. Пристегнуть художника к батарее и не выпускать пока он не согласится это сделать. Зато в следующий раз разработка начнется с выбора правильных масштабов. Поверь я знаю о чем говорю))
А в остальном классная игрушка. Сиквел со всеми изменениями + какими то новыми детальками думаю вполне порвёт интернеты. Пираты вообще отличная тема.
— лучше smoothing и замыливание чем крутить битмапу без сглаживания. В основном не ставят smoothing во избежании напряга рендера.
— скейл графики в меньшую сторону возможен и даже очь неплохо выглядит когда у объектов нет мелких деталей (но в вашем случаи скейл не на руку, так как много мелких деталей, корабль в оригинале супер).
Я правильно понимаю, вы делали игру с августа и до сих пор?
Ну да, правда работали с большими перерывами, так как у нас есть большой и амбициозный ММОРПГ-проект)