
Постмортем XenoSquad
Делал, делал и доделал.
Под катом небольшой постмортем XenoSquad.
Поиграть можно тут, если кто еще не:
www.kongregate.com/games/ryzed/xenosquad
www.newgrounds.com/portal/view/582662
Ну, во первых, я это сделал!!!
Помню, еще в прошлом году, я писал в комментариях к посту Алекса ( flashgameblogs.ru/blog/200.html#comment3543 ), что хочу и буду делать пошаговую стратежку.
Потрачено много времени и какое-то просто нереальное количество усилий, но это живое, работает и я счастлив!
Статистика по коду:
AS3: 229 файлов, 739kB, 30892 loc.
Haxe: 18 файлов, 315kB, 10671 loc.
Кода, особенно на haxe, на самом деле меньше, потому что там по несколько копий процедур, развернутые циклы и прочие «low-level» оптимизации.
Если вдруг кто не в курсе, быстренько про технологии:
Расскажу немного о том, что было плохо:
0. Будь проклят тот день, когда я задумал писать свой графический движок! :)
1. Не было никакого препродакшена. Игра придумывалась по ходу дела. Первые 3-4 месяца ушли исключительно на графический движок и только потом я начал задумываться о том, для чего он, собственно, мне нужен. Менять оружие у пацанов придумал в феврале, а скилл-поинты добавил в середине лета, если не ошибаюсь.
2. Много времени ушло на баловство с теком. Вода, туман, окклюдеры, какие-то оптимизации, сжатие данных. Весь этот рисёч, который на данный момент не используется. «Окупилось» только сжатие данных, и то, используется самый первый вариант, после которого я сделал еще 3 и выбросил.
3. Не совсем плохо, но такой, короче, pain in the ass.
Чтобы сделать уровень надо:
Это, кстати, основная причина, почему я делал уровни сам.
Тут задача не в том, чтобы сделать красиво, а в том, чтобы это хоть как-то заработало :)
4. GUI. На отрисовку ГУИ художника так и не нашёл, пришлось делать самому. Ушло довольно много времени на ковыряния, но оглядываясь назад, я об этом не жалею. Получилось «скромненько, но чистенько».
Спасибо фотошопу за предоставленные фильтры.
5. Модельки. Модельки я заказывал на 3drt.com, качеством и ценой доволен.
Единственное, что было плохо, это когда я задумал добавить оружие к пацанам. Моделеры оказались заняты и пришлось ждать 2 месяца, пока они освободятся и приделают к пацанам пару новых пушек.
Так, что еще.
Перед выкладыванием на FGL поменял тайлы. Раньше использовались тайлы из оригинального Q2, но в последний момент поменял на тайлы из «свободных» модов.
С тайлами сделал еще одну интересную штуку.
Изначально, использовались тайлы 64*64, и выглядело это, как сейчас понятно, довольно страшно. В первую очередь в связи с тем, что никакой интерполяции на текстурах нет. Просто берем ближайший пиксел и пихаем его на экран.
Добавлять билинейную интерполяцию очень дорого, поэтому пошел другим путем.
Растянул тайлы до 128*128 и немного разблурил. Поскольку на экране тайлы примерно в 2 раза меньше, получается такое псевдо-сглаживание.
Про всякое.
Вся логика основана на "очереди действий". То есть определены несколько классов, представляющих собой действия. «Повернуться», «идти в точку», «проиграть анимацию» и т.д. Все, что делает игрок и ИИ, так это добавляет действия в эту очередь.
То есть, когда игрок тыкает на кружочек на дверью, в очередь добавляются несколько действий: «подойти к двери», «повернуться к двери», «проиграть анимацию действия», «проиграть анимацию открывания двери».
Получилось очень удобно.
Поиск пути — волновой.
ИИ тупой у всех, кроме стреляющих пацанов.
Стреляющие тоже тупые, но пытаются что-то там мозговать. Прячутся за углами, не лезут под пули, рассчитывают ходы и степень опасности. Но все равно тупые.
Кодить ГУИ и туториал сильно сложно, особенно когда делаешь это после всего. У меня, кстати, так до сих пор и нет нормальной системы ГУИ, которую можно было бы таскать из одного проекта в другой. Каждый раз переписываю и каждый раз оно мне не нравится.
Вода в «сеточку» не потому, что мне так захотелось, а потому, что это самый быстрый путь заполнить уровень чем-нибудь. Она рисуется примерно в 2 раза быстрее, чем обычный пол. Я там приглушил яркие пикселы, подводные полигоны рисуются отдельной палитрой. Вроде стало немного лучше.
Чтобы поддержать накал одскула хотел использовать трекерную музыку. Даже конвертнул плеер с явы на haxe. Получилось, в принципе, вполне нормально, но жрет 15% процентов производительности, а времени на оптимизацию не оставалось.
Поэтому в этой игре используются обычные mp3.
В следующей, надеюсь, будет .xm-музыка.
Последние несколько недель вообще были ужасными, хотел успеть до октября, до официального релиза 11 плеера. Думал, будет там какой-то резкий массовый выпуск 3д-игр прямо через 5 минут после релиза. Ошибался.
Аукцион.
Выложил на ФГЛ, две недели ждал pre-review.
Видео-рецензии понравились, сразу видно что читает, куда тыкает и где какие затыки.
По отзывам на форуме, на ФГЛ, по рецензиям сделал изменения.
Точно помню что авто-завершение хода и возможность подойти к двери/ящику одним кликом.
Что-то еще пробовал менять, но не получилось. Из-за тормозов или из-за того, что нарисовать не вышло.
Оценки поставили 8.0 и 9.0, вполне нормально.
Сразу запихали в рассылку и всякие списки.
Ну, в общем, как обычно.
Трейлер не делал, комп тормозит.
Сел ждать.
Сразу получил 3 ставки в 2000, 2500 и 3500.
Потом подтянулись конг, арморы и arcadebomb, сделали ставки в 6500, 6750, 7000 примари + реклама.
После этого все затихло на 2 недели.
В начале октября арморы поставили 9000 примари, а arcadebomb 12000 эксклюзив. Все без рекламы.
Конг ставку не возобновил. Уже после торгов я с ним поболтал и он сказал, что был не уверен, насколько игра хорошо пойдет.
Через неделю устал ждать, включил ласткол и тут появился Мартин из bigdino.
Поставил 12500 примари + реклама и выиграл торги.
Тут надо сказать, что ФГЛ не делает ничего! И следующие игры я постараюсь продавать без них.
Перед ластколом я написал Стиву, «типа давай там продвигай», получил стандартный ответ в стиле «Поспамь спонсоров, сделай трейлер и т.д.». Спасибо, капитан.
Все бы ничего, но он же, сука, даже игру не посмотрел!
То есть с таким же успехом я мог бы общаться с ботом.
Дистрибуция.
После продажи интегрировал АПИ, засайтлочил, заслал Мартину для теста.
Он выложил на сайт и игру буквально через 6 часов ломанули китайцы и кто-то там еще.
Первая версия была «плохо» брендирована и именно ее и уперли.
Ломаная версия начала распространяться по порталам, кто-то даже успел зарегать xenosquad.com :)
Пришлось срочно доделывать брендинг, менять все планы (сначала хотели подержать недельку только на bigdino) и рассылать письма по порталам с новой версией.
JayIsGames написали рецензию, правда трафик они гонят небольшой, так что это больше «статусная» вещь.
Выложил на Конг и НГ.
Получил 4.25 на конге и «дэйли 1» на НГ. Спасибо всем, кто поддержал!
На конге дали бейджи и зафичили, но по результатам недели оказался вторым.
Почему-то на конге игра пошла на удивление хорошо, все начали комментировать в стиле «Больше! Хардкорней! Даешь мультиплеер!», что не может не радовать.
На сегодняшний момент набрал больше миллиона геймплеев.
Продал два сайтлока, арморам за 1000 и АндКону за 700.
На Конге заработал 400, на CPMStar 600.
Суммарно получилось: 12500 (примари) + 1700 (сайтлоки) + 1000 (реклама) = 15200
Если честно, я ожидал большего от аукциона.
Мартин даже сам удивился, что он выиграл и никто не перебил его ставку.
Что дальше?
Дальше пока непонятно.
Молехил вышел, но использовать его особо никто не спешит.
Во-первых, 11 плеер пока еще не распространен и хороший инсталл-бэйс наберет только к весне, а может и дольше.
Во-вторых, молехил ввел ограничение на дату драйверов. Если дрова старше 2009 года — не видать вам ускорения, как своих ушей.
Плеер-то портальные игроки рано или поздно обновят, а вот драйвера вряд ли.
То есть сейчас передо мной дилемма. Продолжать использовать старый подход или делать новый движок под молехил. А можно сделать гибридный движок.
Так что пока думаю по теку.
Вторая проблема это арт.
Арт, лично для меня, это всегда проблема. Его никогда нет и где его заказывать — непонятно.
Хочется сделать сиквел, конечно.
Игра получила «хорошую прессу :)» и можно смело делать продолжение или хотя-бы левелпак.
Но арта нет.
Так что продолжения может и не получиться.
Вроде все. Если что интересно — спрашивайте в комментариях.
Под катом небольшой постмортем XenoSquad.
Поиграть можно тут, если кто еще не:
www.kongregate.com/games/ryzed/xenosquad
www.newgrounds.com/portal/view/582662
Ну, во первых, я это сделал!!!
Помню, еще в прошлом году, я писал в комментариях к посту Алекса ( flashgameblogs.ru/blog/200.html#comment3543 ), что хочу и буду делать пошаговую стратежку.
Потрачено много времени и какое-то просто нереальное количество усилий, но это живое, работает и я счастлив!
Статистика по коду:
AS3: 229 файлов, 739kB, 30892 loc.
Haxe: 18 файлов, 315kB, 10671 loc.
Кода, особенно на haxe, на самом деле меньше, потому что там по несколько копий процедур, развернутые циклы и прочие «low-level» оптимизации.
Если вдруг кто не в курсе, быстренько про технологии:
- Софтварный рендер в стиле первого Quake. Все рисуется «попиксельно» в память, а потом перебрасывается на экран.
- Статика с перспективно-корректными лайтмапами, сортированная через BSP.
- Динамические модельки с z-буфером, Gouraud-освещением, glow-картами и какой-то жуткой самопальной лайт-сеткой, которой даже нет названия :)
- Тени, частицы, прозрачные полигоны, subpixel, subtexel в наличии.
- Все это работает довольно шустро.
Расскажу немного о том, что было плохо:
1. Не было никакого препродакшена. Игра придумывалась по ходу дела. Первые 3-4 месяца ушли исключительно на графический движок и только потом я начал задумываться о том, для чего он, собственно, мне нужен. Менять оружие у пацанов придумал в феврале, а скилл-поинты добавил в середине лета, если не ошибаюсь.
2. Много времени ушло на баловство с теком. Вода, туман, окклюдеры, какие-то оптимизации, сжатие данных. Весь этот рисёч, который на данный момент не используется. «Окупилось» только сжатие данных, и то, используется самый первый вариант, после которого я сделал еще 3 и выбросил.
3. Не совсем плохо, но такой, короче, pain in the ass.
Чтобы сделать уровень надо:
- экпортировать геометрию скриптом из 3dsmax
- запечь лайтмапы
- задизерить лайтмапы в 256 цветов
- просчитать лайт-грид
- запаковать все это в свои форматы
- проверить, что БСП не сглючило
Это, кстати, основная причина, почему я делал уровни сам.
Тут задача не в том, чтобы сделать красиво, а в том, чтобы это хоть как-то заработало :)
4. GUI. На отрисовку ГУИ художника так и не нашёл, пришлось делать самому. Ушло довольно много времени на ковыряния, но оглядываясь назад, я об этом не жалею. Получилось «скромненько, но чистенько».
Спасибо фотошопу за предоставленные фильтры.
5. Модельки. Модельки я заказывал на 3drt.com, качеством и ценой доволен.
Единственное, что было плохо, это когда я задумал добавить оружие к пацанам. Моделеры оказались заняты и пришлось ждать 2 месяца, пока они освободятся и приделают к пацанам пару новых пушек.
Так, что еще.
Перед выкладыванием на FGL поменял тайлы. Раньше использовались тайлы из оригинального Q2, но в последний момент поменял на тайлы из «свободных» модов.
С тайлами сделал еще одну интересную штуку.
Изначально, использовались тайлы 64*64, и выглядело это, как сейчас понятно, довольно страшно. В первую очередь в связи с тем, что никакой интерполяции на текстурах нет. Просто берем ближайший пиксел и пихаем его на экран.
Добавлять билинейную интерполяцию очень дорого, поэтому пошел другим путем.
Растянул тайлы до 128*128 и немного разблурил. Поскольку на экране тайлы примерно в 2 раза меньше, получается такое псевдо-сглаживание.
Про всякое.
Вся логика основана на "очереди действий". То есть определены несколько классов, представляющих собой действия. «Повернуться», «идти в точку», «проиграть анимацию» и т.д. Все, что делает игрок и ИИ, так это добавляет действия в эту очередь.
То есть, когда игрок тыкает на кружочек на дверью, в очередь добавляются несколько действий: «подойти к двери», «повернуться к двери», «проиграть анимацию действия», «проиграть анимацию открывания двери».
Получилось очень удобно.
Поиск пути — волновой.
ИИ тупой у всех, кроме стреляющих пацанов.
Стреляющие тоже тупые, но пытаются что-то там мозговать. Прячутся за углами, не лезут под пули, рассчитывают ходы и степень опасности. Но все равно тупые.
Кодить ГУИ и туториал сильно сложно, особенно когда делаешь это после всего. У меня, кстати, так до сих пор и нет нормальной системы ГУИ, которую можно было бы таскать из одного проекта в другой. Каждый раз переписываю и каждый раз оно мне не нравится.
Вода в «сеточку» не потому, что мне так захотелось, а потому, что это самый быстрый путь заполнить уровень чем-нибудь. Она рисуется примерно в 2 раза быстрее, чем обычный пол. Я там приглушил яркие пикселы, подводные полигоны рисуются отдельной палитрой. Вроде стало немного лучше.
Чтобы поддержать накал одскула хотел использовать трекерную музыку. Даже конвертнул плеер с явы на haxe. Получилось, в принципе, вполне нормально, но жрет 15% процентов производительности, а времени на оптимизацию не оставалось.
Поэтому в этой игре используются обычные mp3.
В следующей, надеюсь, будет .xm-музыка.
Последние несколько недель вообще были ужасными, хотел успеть до октября, до официального релиза 11 плеера. Думал, будет там какой-то резкий массовый выпуск 3д-игр прямо через 5 минут после релиза. Ошибался.
Аукцион.
Выложил на ФГЛ, две недели ждал pre-review.
Видео-рецензии понравились, сразу видно что читает, куда тыкает и где какие затыки.
По отзывам на форуме, на ФГЛ, по рецензиям сделал изменения.
Точно помню что авто-завершение хода и возможность подойти к двери/ящику одним кликом.
Что-то еще пробовал менять, но не получилось. Из-за тормозов или из-за того, что нарисовать не вышло.
Оценки поставили 8.0 и 9.0, вполне нормально.
Сразу запихали в рассылку и всякие списки.
Ну, в общем, как обычно.
Трейлер не делал, комп тормозит.
Сел ждать.
Сразу получил 3 ставки в 2000, 2500 и 3500.
Потом подтянулись конг, арморы и arcadebomb, сделали ставки в 6500, 6750, 7000 примари + реклама.
После этого все затихло на 2 недели.
В начале октября арморы поставили 9000 примари, а arcadebomb 12000 эксклюзив. Все без рекламы.
Конг ставку не возобновил. Уже после торгов я с ним поболтал и он сказал, что был не уверен, насколько игра хорошо пойдет.
Через неделю устал ждать, включил ласткол и тут появился Мартин из bigdino.
Поставил 12500 примари + реклама и выиграл торги.
Тут надо сказать, что ФГЛ не делает ничего! И следующие игры я постараюсь продавать без них.
Перед ластколом я написал Стиву, «типа давай там продвигай», получил стандартный ответ в стиле «Поспамь спонсоров, сделай трейлер и т.д.». Спасибо, капитан.
Все бы ничего, но он же, сука, даже игру не посмотрел!
То есть с таким же успехом я мог бы общаться с ботом.
Дистрибуция.
После продажи интегрировал АПИ, засайтлочил, заслал Мартину для теста.
Он выложил на сайт и игру буквально через 6 часов ломанули китайцы и кто-то там еще.
Первая версия была «плохо» брендирована и именно ее и уперли.
Ломаная версия начала распространяться по порталам, кто-то даже успел зарегать xenosquad.com :)
Пришлось срочно доделывать брендинг, менять все планы (сначала хотели подержать недельку только на bigdino) и рассылать письма по порталам с новой версией.
JayIsGames написали рецензию, правда трафик они гонят небольшой, так что это больше «статусная» вещь.
Выложил на Конг и НГ.
Получил 4.25 на конге и «дэйли 1» на НГ. Спасибо всем, кто поддержал!
На конге дали бейджи и зафичили, но по результатам недели оказался вторым.
Почему-то на конге игра пошла на удивление хорошо, все начали комментировать в стиле «Больше! Хардкорней! Даешь мультиплеер!», что не может не радовать.
На сегодняшний момент набрал больше миллиона геймплеев.
Продал два сайтлока, арморам за 1000 и АндКону за 700.
На Конге заработал 400, на CPMStar 600.
Суммарно получилось: 12500 (примари) + 1700 (сайтлоки) + 1000 (реклама) = 15200
Если честно, я ожидал большего от аукциона.
Мартин даже сам удивился, что он выиграл и никто не перебил его ставку.
Что дальше?
Дальше пока непонятно.
Молехил вышел, но использовать его особо никто не спешит.
Во-первых, 11 плеер пока еще не распространен и хороший инсталл-бэйс наберет только к весне, а может и дольше.
Во-вторых, молехил ввел ограничение на дату драйверов. Если дрова старше 2009 года — не видать вам ускорения, как своих ушей.
Плеер-то портальные игроки рано или поздно обновят, а вот драйвера вряд ли.
То есть сейчас передо мной дилемма. Продолжать использовать старый подход или делать новый движок под молехил. А можно сделать гибридный движок.
Так что пока думаю по теку.
Вторая проблема это арт.
Арт, лично для меня, это всегда проблема. Его никогда нет и где его заказывать — непонятно.
Хочется сделать сиквел, конечно.
Игра получила «хорошую прессу :)» и можно смело делать продолжение или хотя-бы левелпак.
Но арта нет.
Так что продолжения может и не получиться.
Вроде все. Если что интересно — спрашивайте в комментариях.
- +65
- ryzed
Комментарии (97)
Доходы тоже мотивируют.
Вот в цене я очень удивился, времени затрачено просто уйма и так мало получилось, но я думаю ты отыграешся на левелпаке или продолжении игры
100% согласен насчет продвижения от FGL, продавались в этот же период — помощи 0.
Что-то цена меня расстроила и насторожила :(
Я думал, будет в несколько раз выше.
Сугубо ИМХО ;)
Непонятно было как пойдет.
Сейчас уже понятно, что как минимум аудитория конга такие игры любит.
А игра клевая. Похожа на Уфо, фанатом которой я был.
Крутой перец!!!
Делай из нее обязательно мультиплеерную игру и на одной ней поднимешься. Даже не надо больше игр делать будет :)
По словам Бадима, эта игра делает «всего» в 10-15 раз меньше денег, чем Танки-онлайн.
На базе твоей игры можно запросто сделать крутую мультиплеерную игру. Просто уверен.
Но буду об этом думать, конечно.
По поводу дров для Молехила, сам обломался на них, и новее дров нет, хз чем они думали.
Просто не думал, что они сразу сграбят игру.
В следующий раз буду делать нормальную защиту, наверное.
мой тебе совет. Я тут уже писал давно как-то. мне просто лень писать, я люблю читать )))
Вот совет. Возьми в арт прямо в игре в раскраску робота к примеру включи hex цвета. к примеру в hex строка site.com это 736974652E636F6D, разбросай это по игре. Скажем так 73 69 74 65 2E 63 6F 6D в 8ми разных функциях. Сравнивай каждый символ имени сайта с тем что вшито. Имя сайта узнавай не через тупой stage.loaderInfo.url, а через external.callback и вызывай js функцию которая сама вернет в твою же флешку location адрес ))) парсь это дело
и тупорылые китайцы твою защиту будут ломать неделю как минимум. Я тут уже писал как работает хакер. Ломануть можно все. Вопрос во времени. Если ушло больше Х часов на ломание то уже не выгодно, переходишь ломать что-то иное )
Сломать-то сломают. Но вопрос — когда. Сейчас или завтра. Если сейчас — ты потерял бабки. Если завтра — не так много, если бы «сейчас»
js функция должна быть на сайте? Думаешь спонсор разрешит?
Или все внутри флэшки? Если да, то где об этом почитать?
А вообще, я с защитой особо не заморачиваюсь.
У меня довольно редки заказы на такие штуки и заказчики в основном это клиенты баннерных сетей, пытающиеся понять дурят их или нет :)
Имя озвученные суммы денег выше и не заморачиваться — это как-то не правильно :)
в интернете почитать. сходу линки не дам ибо искать надо самому. методом тыка изучал запуск функции из строки браузера. потом через eval создание функции и через ExternalInterface запуск функции и считывание ответа обратно ) там вообще много чего можно добраться до DOM html страницы. Если раздуплю (если не засну) я пример накатаю базовый сюда
чтобы почитали все
Если возврат значений не нужен можно прямо через navigateToURL выполнять:
Да, и за постмортем тоже спасибо. Очень увлекательно и главное — с деталями и цифрами! Надеюсь, игра принесет еще не одну тысячу зеленых на рекламе!
Ты очень крут.
По поводу ФГЛ согласен с тобой, ребята автоматизировали свою систему и стабильно получают процент, даже не парясь. Никакого персонального сервиса от них не видать, но для новичка самое то, опыта набрать, контактами обзавестись
Всё уже сказали)))
Единственное, если бы была возможность выбора языка, а так всё Мего круто)
Просто Мегабыбл!
Так что лишних 400 килобайт погоды не сделали.
Насчёт цифры конечно негусто, но думаю двиг и игру ещё можно будет хорошо поэксплуатировать и заработать недостающее...:)
Меня лично, больше всего заинтересовали исп технологии ))
Напиши пожалуйста более подробную статью про технологии (с чего можно начать например если хочешь написать подобный движок), что откуда и зачем )) Я лично с удовольствие почитаю, это пока недоступный уровень для меня ))
А почему не использовал существующие 3D движки?
Если по «кубику» тыкнуть, там будет список.
Как будет настроение, напишу «введение в софтварные рендеры» :)
Сейчас делать такой движок смысла особого не имеет (год назад я это тоже писал к комментариях, бггг), молехил скоро. Только если для общего развития.
Существующие движки не обладают нужными возможностями (z-буфер, освещение) и тормозят.
OMFG, AWESOME GAME!
игра 2д, но могу делать и лоу поли. Анимация, текстурирование.
Буду иметь ввиду.
Ведь вполне очевидно, что если б не ФГЛ, рыночная стоимость игры была бы не определена, и вполне вероятно что ее не удалось бы продать за 12,5к?
Постараюсь больше не пользоваться.
Гадать, что было бы, если бы не ФГЛ, смысла нет.
Вопрос возник — зачем проект частично на Haxe, а частично на as3? Почему не на чём-то одном?
Поэтому использую его для непосредственного рендера.
А as3 удобный и привычный, поэтому на нем написано все остальное.
Поздравляю с завершением!
PS: Smrdis дело говорит, приз за «технологичность» (и немного пиара) — твой.
Вот сделаю КсеноММО, тогда можно :)
Видимо не надумал, а я не настаивал.
У самого уверенности не было.
Приятно :)
стоимость оч. занижена
да, нужен малтиплеер
респект!
Кстати багов не заметил.
Иногда в защитном режиме марины стреляют через двери и еще всякие.
Если получится — буду портировать на мобилы.
Аудиторию уже подготавливают: dtf.ru/forum/flat.php?id=25842&page=1&page_size=20 :)
Теже пушки от Джонни К, мандарины(60+mln), гибетсы (100+mln), home sheep home(100+mln), use boxmen (50+ mln) ну и множество других игр. А по времени делать их месяц-два плюс минус.
Да и продать дороже можно :)
Это так материал к размышлению
«мандарины» — физпазл…
«гибетсы» — физпазл…
«home sheep home» — физпазл…
«use boxmen» — пазл…
грусняво :(
Вот тебе Экшен: Achilles — www.mochibot.com/shared/shared_swfdetail.html?key=10b9eb8cd01e9d03dd54a07d0bb15631