Красивые и пустые

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

Вот так я себя чувствую когда играю в любую игру от Blizzard. Я вижу много людей которые не могут играть в игры старой школы, не могут играть во что-то действительно оригинальное, не шаблонное (Deadly Premonition или Papers Please) зато все любят игры Blizzard.

Знакомство с их играми на PC я начал со Starcraft. После диких и аркадных Command & Conquer, геймплей мне показался очень размеренным, успокаивающим. Ограничение на количество юнитов, копание в микро-нано операциях меня лично очень усыпляют. Дальше была красивая, но пустая кликер игра – Diablo 2. Хорошая графика, генерируемые уровни, и ноль геймплея, абсолютно медитативное и пустое времяпрепровождение. Однако мои друзья крепко засели в старкрафте и диабле. В начале нулевых вышел крышесносный Warcraft 3. Одиночная компания мне тогда очень понравилась. Однако мультиплеер очень похож на Starcraft и потому очень уныл. Далее был не менее красивый, пустой Starcraft 2. Некоторое время я играл в f2p Hearthstone – эта игра похожа на игральный автомат, первое время ты выигрываешь, появляется вера в себя, но потом к тебе приходят разработчики с предложение купить несколько колод по цене 500 ₽. Твой скилл ничего не зарешает, решает только количество денег потраченных на виртуальные колоды.

Недавно я купил Overwatch, шутер от Blizzard. Мне понравилась героиня Mei, артом, косплеем на которую засыпаны все соцсети, в итоге общая волна рекламы в гик сообществах выбросила меня на берег игроков Overwatch.

Мои опасения оправдались – отличная графика, разные герои со своими голосами, способностями. Ни одного крэша во время игры, все на уровне Blizzard. И вот, я хочу сказать, что игра опять настолько вылизана даже в геймплее, что в нее просто неинтересно играть. Очень не хватает интересных – неожиданных моментов, рискованных идей, компания как всегда взяла только лучшее из прошлых лет и отшлифовав, отправила захватывать на рынок, не скупившись на хорошую раскрутку.

Единственная игра Blizzard которая мне по настоящему понравилась – Rock’n’Roll Racing. Там действительно есть геймплей, но у меня подозрение что в этом заслуга не разработчика, а издателя – Interplay, скорее всего Interplay помогли Blizzard сделать из игры что-то по настоящему играбельное.

Games Vision #2

Непостоянная рубрика Games Vision.
Пишу краткие обзоры на игры в которые играл в последнее время

wsunhd
SIM
aka Sara is Missing (Android, Monsoon Lab) – ты находишь телефон девушки по имени Сара. Внутри телефона есть встроенный помощник IRIS, она хочет найти свою хозяйку и просит тебя ей в этом помочь. Задача понять что творилось в голове Сары из ее переписки, фоточек и видео, найти где она находится. Игра очень оригинальная и достаточно пугающая. Минус в том что нет локализации на русский и другие языки, нет версии для iOS, хотя очевидно что интерфейс игры копирует продукцию Apple (IRIS – SIRI) Также игра очень короткая.
Оценка 7/10

unnamed
The End of The World
(Android, Sean Wenham) – игра про расставание – парня бросила девушка, теперь он бродит в поисках вина и спит под мостом, вспоминая моменты когда они были вместе. Умилительные моменты воспоминаний, грустная музыка, переход в белое, в принципе отличная игра для женской аудитории и некоторых пацанов. Мне не понравилась бюджетная графика с претензией на оригинальность (напоминает Another World Эрика Шайи), нулевой геймплей, попытки выбить из игрока слезки, предсказуемость, десять минут прохождения. Любителям ванили рекомендую.
Оценка: 5/10

unnamed

Werewolf Tycoon (Android, Joe Williamson) – игра про оборотня который ест людей в городском парке. Графика и геймплей здесь веселые – детские, цвета светлые без мрачных тонов, отсутствие крови и люди похожие на круглые кексики со смешными анимациями. Раунды короткие и простые, из врагов только журналисты с фотоаппаратами. Звучит, выглядит и играется очень весело. Из минусов – низкая сложность, просмотр рекламы за отмену Game Over, не работает механизм вывода набранных очков в социальные сети.
Оценка: 6/10

Games Vision #1

Непостоянная рубрика Games Vision.
В этой статье я напишу краткие обзоры на игры в которые играл в последнее время.

jansen

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

Deus Ex Mankind Divided (PC, Square Enix) – игра про полу-человека Адама Дженсена который отдыхает в Праге и попутно спасает мир.
Хорошая графика, высокие системные требования, предсказуемый сюжет, нестандартная работа художников – все здесь. Игра предлагает множество вариантов прохождения, например мне удалось получить ачивмент “пацифист”, за то что я никого не убил за все прохождение, в том числе и боссов.
Мне понравились отсылки к поп культуре “The Void Which Binds“, “IRON MADE in China” и др. Не понравилось огромное количество текста – воды, всякие email хранящие пароли от дверей и переписка персонажей, текст абсолютно пустой и не интересный. На момент прохождения игра постоянно вылетала в режиме DirectX 12, автосейвы ломались, патчи похоже выпускаются до сих пор. В DLC я решил не играть т.к. уже основную игру проходил около 2х недель, выбившись из своей привычной пустой жизни.
Оценка 8/10

slayin

Slayin (Android, FDG) – незаурядная аркада в пиксельном стиле для мобилок. Нужно бегать и убивать монстров, покупая экипировку в магазине. В этой игре мне понравился арт, очень понравилась чиптюн музыка, похоже на аркады для NES, удобное управление. Сама же игра расстроила тем что геймплей происходит не дальше одной сцены на экране, невозможностью перемещаться по большому уровню.
Оценка 5/10

swordxolan

Sword of Xolan (Android, Alper Sarıkaya) – аркадный платформер в пиксельном стиле для мобилок. Рыцарь или самурай бегает по уровню и спасает людей из железных клеток. Достаточно интересный геймплей, удобное управление, большие уровни. Расстраивает общая бюджетность игры, дешевый арт, дешевый звук, зацикленная музыка.
Оценка 6/10

bardstale

The Bard’s Tale (Android, inXile entertainment) – ремастер экшн рпг для мобилок. Нестандартная рпг со смешными сценами и диалогами. На диске с игрой было написано “переверните диск чтобы увидеть что-то ужасное”, на обратной стороне была зеркальная сторона диска. В свое время я пропустил эту игру на PC из-за Neverwinter Nights, но теперь могу играть в нее на мобилке в автобусе. Для современного геймера явно не хватает точек куда идти и что делать, но за это я и люблю игры старой школы, в них действительно нужно играть. Также отсутствует возможность сохраняться в любой точке, что для мобильной игры критично. Музыка, арт, мне нравится все, однако текущее управление на экране телефона я считаю неудобным. И конечно же это не новая игра, а просто переиздание на мобильные платформы, что лично я считаю большим минусом.
Оценка 7/10

Разбавляя ECS


Commission: Mad Scientist by Culpeo-Fox on DeviantArt

В этой статье я примерно опишу паттерн ECS, и свою реализацию  в Flame Steel Engine Game Toolkit. Паттерн Entity Component System (Сущность, Компонент, Система) используется в играх, в т.ч. на движке Unity. Каждый объект в игре представляет из себя Сущность, которая заполнена Компонентами.  Зачем это нужно если есть ООП?
Затем чтобы менять свойства, поведение, отображение объектов прямо во время выполнения игры. Такие вещи не встречаются в прикладных приложениях реального мира, динамика изменения параметров, свойств объектов, отображения, звучания, присущи больше играм, чем бухгалтерскому ПО.


Бананы мы не проходили

Допустим у нас в игре есть класс банан. И геймдизайнер захотел чтобы бананы можно было использовать как оружие. Допустим в текущей архитектуре бананы никак не связаны с оружием. Делать банан оружием? Делать все предметы оружием?
ECS предлагает решение данной насущной проблемы – все объекты в игре должны состоять из компонентов. Раньше банан был классом Banana, теперь мы сделаем его, и все остальные объекты, классом Entity (Сущность), добавим им компоненты. Допустим банан теперь состоит из компонентов:

  1. Компонент позиции (координаты в игровом мире – x, y, z)
  2. Компонент поворота (координаты x, y, z)
  3. Компонент калорийности банана (главному герою нельзя сильно толстеть)
  4. Компонент картинки банана

Теперь мы добавляем для всех бананов новый компонент, который является флагом того что его можно использовать как оружие – Компонент оружия. Теперь когда игровая Система видит что игрок подошел к банану, она проверяет наличие компонента оружия у банана, и если он есть, то вооружает игрока бананом.
В моей игре Flame Steel Call Of The Death Mask, паттерн ECS используется везде. Объекты состоят из компонентов, компоненты сами могут содержать компоненты. Вообще разделение объект < – > компонент в моей реализации отсутствует, но это даже плюс.

screenshot_2016-09-24_14-33-43

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

Ссылки по теме:
https://habrahabr.ru/post/197920/
https://www.youtube.com/watch?v=NTWSeQtHZ9M

Теряя себя

“Нельзя стать мастером всего” – меня всегда смешили подобные фразы. В эту ловушку специализации попадают все – пользователи, программисты, начальники, заказчики. “Хочу как у Microsoft/Apple/Google”, “Почему нам просто не сделать русский айфон?”, “Почему здесь не как в ворде/убере/фотошопе?” – эти фразы слышал любой, причастный хоть как-то к ИТ. Эти фразы, повторенные из уст разных людей, звучат еще смешнее.

Я спрошу тебя читатель – зачем тебе еще один Ворд? Зачем тебе еще один убер? Зачем тебе еще один фотошоп? Зачем тебе нужно чтобы “было как в айфоне”?
Почему ты привязываешь себя к интерфейсам и подходу только одной компании? Почему ты навешиваешь на себя ярлык любителя только продуктов Apple/Google/Microsoft? Почему ты не можешь открыть свой разум альтернативным подходам к решению задач, почему не хочешь быть более продуктивным?

Очень многим пользователям Microsoft не понравилось как компания решила что всем необходимо обновиться до Windows 10. Люди ругают неудобные интерфейсы айфона, крэши системы при обновлении, изменения в дизайне которые им не нужны, но все равно продолжают пользоваться ими, потому что так привыкли, и иметь “айфон” это статусно в современном обществе.

Иногда создается впечатление, что если Microsoft/Apple/Google попросят отдать собственных детей в обмен на продолжение работы с их продуктами, то из-за высокой привязанности к этим продуктам, люди запросто отдадут своих чад.

Не будь ими, не привязывайся к одному продукту, посмотри альтернативные варианты. Однажды мне предложили разработать систему для риелторов, с интерфейсом на Microsoft Excel, также были предложения разработать систему “интерактивной доски на Microsoft PowerPoint”. На вопрос почему именно Microsoft мне ответили что “так привыкли”, на вопрос есть ли лицензионное ПО от Microsoft в данных компаниях мне ответили уклончиво, что мол если нужно будет – то купят.

Читатель, я призываю тебя изучить грани ИТ мира, хотя-бы обзорно. Если ты пользуешься всю жизнь только Microsoft Windows, попробуй Apple OS X, или Linux. Если ты пользуешься только iPhone, попробуй хотя-бы неделю попользоваться Android последней версии. В момент когда ты переходишь на сторону только одной компании, закрываясь от продуктов других, в этот момент ты теряешь себя. Себя, как человека который может сам решать чего хочет, как человека который может выбирать наиболее удобный и продуктивный инструмент для решения конкретной задачи.

Программисты только одной платформы – еще одна головная боль лично для меня, как я считаю, для ИТ-индустрии в целом. Разработчики которые делают приложения с экспортом только в *.doc или только в *.pdf, разработчики которые привязываются к только одной устаревшей коммерческой БД (например IBM Informix, или боже упаси Firebird), только к одному типу железа (все эти нерабочие программы для x86 на андроид), я конечно понимаю что вы “привыкли”, но ребята пора меняться.

В своей работе очень часто пользуюсь не популярными, но очень удобными инструментами. Один из примеров – необходимо было уменьшить разрешение и сжать около 100 фотографий, для быстрой загрузки по 3G и выводе на iPad. В тот день я услышал одну из наиболее типичных фраз  – “Нам придется все фотографии вручную в *фотошопе* переводить к нужному виду”. Смешной она мне показалась т.к. я представил себе человека который будет вручную, как раб божий, все эти 100 фотографий переделывать в фотошопе, или пытаться автоматизировать через встроенный механизм. Дело здесь именно в том что человек настолько привязан к фотошопу, что даже не подозревал о наличии бесплатного, открытого набора инструментов как ImageMagick. ImageMagick позволяет делать с векторными и растровыми изображениями очень много вещей, в том числе идеально подошел для 5-минутного решения задачи со 100 картинками.

Будьте мастером всего, изучайте, пробуйте, не становитесь рабом конкретной корпорации.

16-битные помощники Санты

Мне пришло на почту сообщение:
“Эй мы тут открываем ретро гейм-джем – bibitjam3!!! Ты должен сделать игру на ретро платформу 8-16 бит!!!”
Ба! Это же мечта моего детства – сделать игру для Сеги Меги Драйв Два.
Что-ж я попробовал сделать игрушку, и у меня что-то даже получилось:
rqr
Игру я назвал “Замес Красной Королевы”. История такова – “Красная Королева была брошена в смертельный лабиринт, теперь она убьет всех на своем пути к свободе.”
Можно ходить, можно атаковать зеленую штучку с красными глазами, открывать сундуки с сокровищами, и переходить из сцены в сцену.
Это конечно уровень “на попробовать” хоть что-нибудь сделать для сеги и для конкурса.
Я использовать SGDK тулкит – компилятор для моторолы 68к на базе GCC, библиотеки для работы с железом сеги меги.
Теперь я понимаю что это реально было сложно – делать игры 20-30 лет назад. Например каждый тайл – должен быть поделен на кусочки 8х8 пикселей и отрисован кусками по очереди. Также палитра для каждого тайла должна не превышать 16 цветов! Сейчас конечно гораздо проще.
Конечно же нужно создать игровой, звуковой, графический движок для игры, как и сейчас.
Вы можете поиграть в Красную Королеву с помощью эмулятора Sega Genesis и РОМа игры:
http://demensdeum.com/games/redQueenRampageSegaGenesis/RedQueenRampage.zip
Если вы хотите посмотреть исходники:
http://demensdeum.com/games/redQueenRampageSegaGenesis/RedQueenRampageSource.zip

Как мы делали Mad Racer

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

Hewl-Tanky

Да простят меня Jamie Hewlett и Alan Martin, публикую отличный арт Tank Girl без их разрешения

Иногда впадаешь в такое состояние, в котором хочется создать что-то эдакое, чтобы все ахнули и разинув рты говорили “Ну ты крут“. Такая история случилась со мной в 2011 году, когда я посмотрев отрывок фильма “Tank Girl” загорелся идеей создать аркадную игру в комиксном стиле.
Почему для Андроид, а не iOS? Причина проста – у меня не было макинтоша и айфона, зато было огромное желание поддержать Линукс на мобильниках. В то время мне нравилась идеология FSF, а Ричард Метью Столлман был моим божеством.


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

На момент разработки последней версией андроид был 2.0, также необходимо было оставить поддержку для старых версий, так как пользователей 1.6 было очень много. Многие производители телефонов даже не выпускали обновлений до версии 2.0.

Я сразу поставил временные рамки для реализации данного проекта – один месяц. За это время предстояло подтянуть знания по Java, изучить Android SDK, Eclipse, встретиться с монстром в лице OpenGL ES и положить его на обе лопатки. Со стороны графики предстояло создать около шести 3d моделей, оптимизированных для мобильников. Также необходимо было выпустить проект на золото в Android Market, в то время Google Play назывался так)

jpct_logo
jPCT-AE бесплатный 3д движок для Андроида

Так как времени было мало, необходимо было выбрать готовый 3d движок. Создать свой движок с нуля можно, но не очень продуктивно, так как на тестирование и совместимость со всеми устройствами уйдет большая часть времени. До прихода Unreal Engine, Unity, ThreeJS (HTML5), лидирующим движком был JPCT-AE. Движок поставлялся в виде готовой java библиотеки, поддерживал старые версии андроида. Также его создатель EgonOlsen оперативно занимается поддержкой и исправлением ошибок по запросу разработчиков.

antonHooligan

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

Столько всего, с чего же начать? Начать надо с установки Android SDK. Сейчас она поставляется со встроенным IDE – Android Studio. Но на тот момент IDE и SDK поставлялись отдельно. По документации на сайте Google произвел установку Android SDK, Eclipse. Также были установлены необходимые пакеты для Eclipse обеспечивающие сборку и запуск эмулятора Андроид. Через час я собрал тестовый проект jpct-AE:

Это было ухты! Но в эмуляторе телефона все тормозило очень сильно. Поэтому было принято решение купить телефон на платформе Андроид. Для этих целей был приобретен LG Optimus One P500. С тех пор я не пользуюсь отличными кнопочными телефонами нокиа на платформе Симбиан) Были проблемы с подключением телефона к Линуксу, если кто-то с ними встречается до сих пор, то проверьте настройки udev.


Джобс цитирует Пабло Пикассо

Посмотрев на Alien Runner, я понял что инопланетянина можно заменить на мотоцикл и двух панков с базукой, поляну вокруг превратить в мегаполис, а туман заменить на ночь из баллад Iron Maiden.

Как делать 3д модели? Да очень просто, открываешь урок по созданию low-poly моделей на Youtube и делаешь. Весь процесс заключался в обводке проекций в 3д редакторе. Мною были найдены чертежи вертолета Apache, и была сделана модель вертолета. Текстуры были взяты из открытых источников армии сша.

McDONNELL_DOUGLAS_AH-64_APACHE

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

В мобильных приложениях и играх того времени остро выражена проблема нехватки памяти, как на самом телефоне, так и в оперативной памяти. Производительность была тоже на троечку. Один ARM процессор с частотой 300-500 мгц. В результате тестирования на телефонах друзей, оказалось что у HTC в два раза меньше видеопамяти чем в LG, 8мб и 4мб со-но, из-за чего игра выбивала лимиты памяти и не запускалась. Все ресурсы были ужаты до того состояния, чтобы получить фреймрейт 30 кадров в секунду, и возможность запускаться почти на всем.


Не повторять!

В Alien Runner управление осуществлялось с помощью нажатий на экран. Такой тип управления мне показался не удобным, я реализовал управление с помощью акселерометра. Тоесть поворачиваешь телефон – поворачивается мотоцикл. Мне так понравилось что я даже добавил вид от первого лица, для самых смелых.

Поддержка со стороны разработчика движка jpct-AE мне понадобилась когда я увидел что в игре исчезает затемнение впереди. Это происходило после сворачивания и разворачивания приложения. Я создал тему на форуме jpct-AE и уже через два дня проблема была решена. Я интегрировал исправленную версию движка в игру.

Также стоял вопрос как реализовать бесконечную подачу машин. Для мобильной игры необходимо было придумать способ обеспечивающий добавление машин на игровую сцену БЫСТРО. Вариант с загрузкой из медленной памяти или sd карты был сразу отвергнут. На помощь пришел паттерн проектирования под названием объектный пул. Когда машина выходила из области видимости или уничтожалась, то она отключалась и в момент когда требовалось подать новую машину в начало сцены – то она включалась и ставилась туда.

android-market

Чтож настал день релиза. Игра была оттестирована, предварительный показ друзьям проведен, теперь предстояло выйти в золото на Android Market. Регистрация в Android Market  стоила 20$, оплачена. Добавлено описание, скриншоты. И в этот момент я понял что нужно записать видео.

Как записать видео для мобильного  проекта? Неужели снимать мобильный телефон на камеру, а потом выкладывать? Решение было интересным, я использовал Андроид эмулятор, отыграл в игру с фреймрейтом  два кадра в секунду, записав все происходящее на экране с помощью  программы которая называется примерно так gtkDesktopRecorder. С помощью VirtualDub скорость видео была увеличена до 30 кадров в секунду. Потом в лучшей программе для редактирования видео – Windows Movie Maker я добавил все игровые звуки и музыку.

Теперь настал момент ошибок. В раскрутку проекта не было вложено ничего, ни усилий, ни денег. Я тогда считал что проект отобьет сам себя. Игра ушла на золото, я создал тему на форуме jpct-AE о Mad Racer. Я получил 12 установок по доллару за две недели. И обнаружил игру в бесплатном доступе на куче варезных сайтов на следующий же день.

Напевая песню FSF “Share the software” я решил сделать бесплатную версию, с рекламой. Игра была переведена в разряд AdWare, внизу появился рекламный баннер от сети AdMob. Интеграция с рекламной системой прошла гладко. За месяц игра была установлена на десять тысяч устройств. Из рекламной сети я получил 50$.

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

Из положительных сторон хочу отметить получение мной места iOS разработчика в одной из лучших компании нашего города. И конечно же бесценный опыт.

madracerLogoСсылка на Google Play

Если понравилась статья, сделай репост вконтакте, Facebook)