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

Архитектура Flame Steel Engine Game Toolkit

Сегодня я расскажу об архитектуре тулкита для разработки игр Flame Steel Engine Game Toolkit.
Flame Steel Engine Game Toolkit позволяет создавать игры на базе движка Flame Steel Engine:
flamesteelgametoolkitschematics

Все классы движка Flame Steel Engine начинаются с префикса FSE (Flame Steel Engine), и FSEGT (Flame Steel Engine Game Toolkit) для тулкита.
Игровая сцена, объекты, кнопки, все это подклассы FSEObject и должны находиться внутри класса FSEGTGameData. Каждый FSEObject должен реализовывать интерфейс FSESerialize, это позволит сохранять/загружать данные игры, обеспечивать механизм сохранений.
FSEController класс работает с объектами класса FSEObject. Тулкит имеет базовый класс контроллера игровой сцены – FSEGTGameSceneController, вы можете наследовать данный класс для реализации своей игровой логики.
IOSystem это объект интерфейса FSEGTIOSystem, этот интерфейс содержит FSEGTRenderer, FSEGTInputController, FSEGTUIRenderer.
FSEGTIOSystem должен реализовывать отрисовщик (рендерер), получение данных от клавиатуры, джойстиков (устройств ввода) и обеспечивать отрисовку элементов интерфейса, для доступной системы ввода-вывода данной платформы.
На данный момент реализован отрисовщик, контроллер клавиатуры на основе библиотеки SDL, он доступен в классе FSEGTIOSDLSystem.

Flame Steel Engine Raycaster Demo
Flame Steel Engine Raycaster Demo

Планы на будущее создать IOSystem на основе OpenGL, класс будет называться FSEGTIOGLSystem. Если вы хотите создать IOSystem на основе какой-либо платформы, то вам необходимо использовать интерфейс FSEGTIOSystem и реализовать отрисовщик FSEGTRenderer, контроллер ввода FSEGTInputController для данной платформы.

Исходный код Flame Steel Engine, тулкита, игры:
https://github.com/demensdeum/FlameSteelCallOfTheDeathMask

Юнити, почему Wasteland 2 не работает на моей убунте?

Я горжусь тем что являюсь бакером игры Wasteland 2. Сегодня захотел запустить ее на убунте, но мне это не удалось. Однако после часа гугления все получилось. Оказывается у юнити нехилые проблемы с линуксом, но с помощью использования определенных костылей игру можно запустить:

ulimit -Sn 65536
~/.local/share/Steam/steamapps/common/Wasteland\ 2\ Director\'s\ Cut/Linux/WL2

Рецепт отсюда:
https://forums.inxile-entertainment.com/viewtopic.php?t=15505

Flame Steel: Курьер Шустрые Глазки

Имя его Ревил, а прозвище было Шустрые Глазки. Знакомые кореша звали его Шустряк. Вырощенный улицей проворный пацан, он всегда знает что интересное и у кого можно достать. За это его он заработал уважение криминальной  среды Альтерры – 14.
Сейчас он находился внутри складского помещения Нейтив -Фарм-Юнитед. Вокруг стояли огромные контейнеры, запах фармацевтики.
– Че встал? Забирай и иди.
Огрызаясь сказал клерк, он выглядел взвинченным, переступал с ноги на ногу, было ясно что он очень боится. Рубашенка намокла от пота.
– Я из службы безопасности.
Лицо клерка побледнело, он зашатался еще сильнее.
– И что теперь?
– На пол – руки за голову!
Клерк нахмурился, сделав глубокий вдох, потянул руку вниз. Шустрые Глазки учуяли неладное – похоже он потянулся за пистолетом. Ревил оглушил его ударом в наглую морду, тельце с хлопком упало перед ним.
– Просил же по хорошему…
Обыскав клерка, Ревил обнаружил на месте пистолета обычный ингалятор, которым пользуются астматики. Также он нашел карту доступа к лабораторным секторам компании. Это была очень удачная находка.
Банда Токсичных Братьев направила его забрать партию запрещенного вещества – эндофомила. Но Ревилу было плевать на Братьев, и на их токсичность, здесь он был по другой причине – намеревался вытянуть свой счастливый билет.
Двери лифта распахнулись, Шустряк выбрал этаж указанный на карте – сорок второй. Лифт потихоньку поехал. Ревил обдумывал что будет делать в лабораторном секторе. Он был осведомлен об изощренных системах безопасности, интеллектуальных системах проверки личности, анализе мозговых волн и подобном.

Revil by Inc
Revil by Inc

Здесь он был не один, сотрудник компании Лориан согласился помочь ему вызвать сбой в работе систем, в результате чего у Ревила появится десять минут для осуществления намеченного.
На тридцать третьем этаже лифт остановился, над головой Ревила раздался громкий удар – что-то с грохотом приземлилось на крышу лифта.
Шустряк потянулся за пистолетом, но в этот момент через крышу лифта пробились металически шупальца. Они опутали его, раздался скрежет и крышу лифта вывернуло наружу. Сквозь дыру на него смотрело лицо девушки, – холодные пустые глаза, на пол лица металическая пластина с мигающими красными индикаторами, специально не скрытая под кожей.
– Перед смертью ответь, зачем ты пришел сюда?
Шустряк не мог пошевелиться, стальные шупальца сжимали его все сильнее, скоро он и вдохнуть не сможет.
– Я пришел за тем что по праву принадлежит мне!
На лице девушки появлился довольный оскал. Индикаторы мигали попеременно зеленым и красным…

Flame Steel: Call of The Death Mask

Сегодня я анонсирую три проекта сразу! Ухты!
Первый проект – базовая платформа для кроссплатформенной разработки приложений Flame Steel Engine. Второй проект – набор библиотек для базовой платформы Flame Steel Game Toolkit, предназначенный для разработки игр. И третий проект – игра с генерируемыми уровнями в сеттинге киберфентези Flame Steel: Call of The Death Mask.
Исходный доступен по лицензии MIT, игровые ресурсы будут доступны под разными лицензиями (проверяйте каждый файл отдельно)

Ссылка на Github (C++, Eclipse):
https://github.com/demensdeum/FlameSteelCallOfTheDeathMask

Теряя себя

“Нельзя стать мастером всего” – меня всегда смешили подобные фразы. В эту ловушку специализации попадают все – пользователи, программисты, начальники, заказчики. “Хочу как у 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