среда, 25 февраля 2015 г.

Казуальные игры



Юрий "yurembo" Язев
независимый игродел


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

Поскольку, дизайн-документы надо писать творческим людям, не обремененным техническими деталями, т.е.: писателям-фантастам, историкам и др.

Написано множество книг по гейм-дизайну, я пытался прочесть немалую часть из них, однако, обычно, сил на них не хватает, поэтому чаще всего я их забрасываю. Так как, все подобные книги страдают одним и тем же недугом: в них описывается одно и тоже. Поэтому, в частности, я выбрал такую неординарную книгу этого жанра - о казуальных играх. В ее начале, так же написан бред гейм-дизайнера, находящегося под кокаином, или, наоборот, попытка написать без него. Гейм-дизайнеры, такие гейм-дизайнеры. Но после нескольких глав введения в тему, книга явно удалась.

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

Итак, после скучного и однообразного введения, автор пишет об особенностях казуальных игр, сам, при этом, являясь их дизайнером, чем все же отличаются хардкорные и казуальные игры и люди, играющие в эти типы игр. Рассказывает о механизмах, которые являются основой казуальных игр, и, которые развлекают игроков. На примерах рассматривает, как реализован тот или иной механизм. Вот, эти разделы показались мне наиболее ценными в книге. Книга заканчивается рассмотрением социальных игр, то есть игр в соц. сетях. Так как, книга написана и издана давно - в 2010-м году, а тогда соц. игры только стали появляться, при этом, бума мобильных девайсов, кроме немногочисленных айфонов, еще не было, мобильные игры в книге почти не рассматриваются. Однако, что случилось в реальности? Буквально год спустя после выхода книги, после распространения Андройда (мать его), казуальные игры для мобилок стали самым распространенным видом игрового ПО. Но эта уже реальность, не затронутая в рассматриваемой книге...

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

Однако, в инди-команде, любой ее участник выполняет несколько ролей, и не исключено, что программист будет гейм-дизайнером. Это тема отдельного разговора; инди-команда - это, вообще, клёво.

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

Но, при этом, адское пекло, да, я же хардкорный металист, буду до усрачки отстаивать, чтобы из ближайшего граммофона доносился хэви метал: “Cum on feel the noize, girlz rock u boyz”, как-то так, короче.

суббота, 14 февраля 2015 г.

Огонёк 98


Now we’re gonna come back for a long-long time...

 О содержимом видеоматериала. Когда-то очень давно (для точности, это произошло в 1998-м году) тренер СДЮСШОР «Огонек» по санному спорту Язев Евгений Юрьевич (ну, я уже тогда был с ним знаком, потому что занимался санным спортом) снял несколько тренировок своих воспитанников на видеокамеру. Это тренировки зимней (специальной – ледовой) и летней (общей) подготовки.
За прошедшие годы до сего момента я не думал, что мой интерес к этому видео возрастет настолько, что я, отбросив все дела, решу сделать его монтаж и, в результате, попробую получить смотрибельную версию. Для стороннего человека смотреть на тренировки не очень-то интересно. Чтобы это изменить, надо оставить лишь динамику, смена действий, перемены активностей. Чтобы сделать видео еще лучше, надо добавить музыку. Оставаясь в рамках своих музыкальных предпочтений, я добавил рок-композиции, которые у всех на слуху. Это: “Its my life” Джона Бон Джови, “Blackout” – хит Scorpions, песня “Moscow Calling” группы Gorky Park, вновь ставшая популярна после включения в саундтрек популярного российского сериала (общение с людьми приносит новую информацию), и мною горячо любимая “Return to Fantasyby Uriah Heep, не так известна широкой общественности, как предыдущие, но при этом бесподобна.

В ролях: я сам (версия ‘98) и мои лучшие друзья из 90-х. 

вторник, 30 декабря 2014 г.

Туториал – Вращение объекта с помощью мыши в UE4




Юрий “yurembo” Язев

независимый игродел


Во многих играх (особенно в MMORPG) в главном меню есть экран «Создания персонажа», где игрок создает (настраивает) своего персонажа. Обычно (особенно в симуляторах техники) персонаж вращается по оси Y. Вдобавок, зажав над персонажем курсор, игрок может поворачивать персонажа в любую сторону.
Сегодня я расскажу о том, как сделать вращающийся в трехмерной сцене объект. Хотя в рассматриваемом примере объект вращается по оси Y, на основе полученных сведений вы легко можете организовать вращение по X или Z.
Следующее изображение показывает полную программу, служащую для вращения:



Постепенно начнем вгрызаться в программу. В отличие от предыдущих версий движка, Unreal Engine 4 вместо привычного скриптового языка содержит графический язык программирования, в котором программные конструкции строятся путем размещения и настройки взаимодействия блоков – функций. Я не буду здесь подробно рассматривать этот механизм визуального программирования, ибо туториал посвящен другой теме.
Во-первых, нам нужно событие щелчка мыши. Как вы знаете, в UE4 каждый объект имеет событие OnPressed. Однако мы программируем Level Blueprint. В нашем случае это удобно, поскольку, таким образом, мы можем получить доступ к любому объекту уровня с глобальной позиции. Тем не менее, в этом случае мы лишены события OnPressed мыши. Но мы легко можем его добавить. Для этого откроем настройки проект (Edit -> Project Settings), и в открывшемся окне щелчком по пункту Input (с левой стороны) откроем меню настройки управления (справа). Далее, щелчком по кнопке с плюсом рядом с пунктом Action Mapping добавим новое событие. Развернем образовавшийся список. Появится поле ввода для задания имени нового события. Введем MouseClick. Ниже текстового поля находится ниспадающий список, содержащий список всевозможных событий от устройств ввода.                 Нам необходимо развернуть список Mouse и выбрать в нем событие Left Mouse Button. В моем случае это выглядит так (следующее изображение):



Теперь мы можем вернуться в Level Blueprint и создать это новое событие, выбрав его из контекстного меню.



Как видно, этот блок содержит 2 вывода: один реагирует на нажатие (Pressed), а второй – на отпускание (Released) левой кнопки мыши. В данном случае нам нужен второй - Released. При таком развитие событий, где будет обрабатываться нажатие (Pressed)? Это событие должно происходить при нажатии на вращающемся объекте, а не на пустом месте сцены. Поэтому, после импортирования 3D-модели в движок, нам необходимо создать для нее Blueprint-класс. Однако, сперва надо просто создать Blueprint-класс – наследник от Actor. После его создания, двойным щелчком по объекту Blueprint откроем окно редактора объекта. Перейдем на вкладку Components, затем из Content Browser перетащим импортированную трехмерную модель в окно редактора на панель Components. Теперь, можно переименовать, как саму модель, так и Blueprint-класс. Также, в редакторе можно наложить на модель любые материалы. Далее перейдем на вкладку Graph, где, собственно, происходит весь процесс кодирования. Сначала нам надо добавить переменную булева типа. Назовем ее  canRotate, так как она разрешает или запрещает вращать объект. Эта переменная станет членом нашего нового класса. Далее, щелкните правой кнопкой мыши по свободному пространству графа и из контекстного меню выберите Event Actor on Clicked. Данное событие произойдет, когда пользователь нажмет кнопку мыши над нашим объектом. Теперь, перетащите переменную canRotate с панели на пространство графа. В результате, появится контекстное меню. Выберем из него пункт Set. Образуется новый блок, который позволяет установить переменной нужное значение. Галочкой отметим переменную canRotate и соединим этот блок с блоком события Event Actor on Clicked.



Обратите внимание, чтобы сделать переменную открытой (т.е. доступной для других Blueprint – классов) надо щелкнуть на закрытом глазе рядом с переменной на панели. В результате, он откроется, что будет означать доступность переменной. Теперь, мы снова можем вернуться в Level Blueprint. Добавим 2 переменные: delta типа float и tank – ссылка на только что созданный класс 3d объекта.



На этом графе у нас уже имеется один блок – событие InputAction MouseClick. Далее, от выхода Released перенесем нить для создания блока set canRotate. В этом блоке необходимо сбросить значение булевой переменной.



Взгляните, этот блок имеет свойство Target для того, чтобы указать движку переменную-член какого объекта мы хотим модифицировать. Помните, мы создали переменную, которая указывает на трехмерный объект из другого класса? Она называется tank. Перетащим ее с панели на граф. В появившемся меню выберем пункт Get. Свяжем Tank с Target. Теперь, нам надо узнать координаты позиции курсора мыши. Чтобы их получить сначала создадим Get Player Controller блок, он возвращает текущее пользовательское устройство ввода. Из выходного значения создадим блок Get Input Mouse Delta. Эта функция возвращает разность между последней и текущей позициями мыши. Это, как раз то, что нам нужно!



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



Сейчас, мы можем создать объект-вращатель (Rotator). Чтобы это сделать, нам надо воспользоваться функцией Make Rot, найдите его в контекстном меню. Свяжите результат умножения с входящим значением Yaw данной функции. После этого, свяжем выходной результат функции Make Rot с входом A функции Combine Rotators. Значением для второго входного параметра операции объединения (combine) должна быть текущая позиция объекта в 3d сцене. Чтобы ее получить, создайте функцию Get Actor Rotation из контекстного меню. Как и в прошлый раз, параметром target этой функции должен служить tank. Возвращаемое значение функции Combine Rotators является сформированный объект – вращатель, который может использоваться для вращения трехмерного объекта в 3d сцене. Таким образом, из контекстного меню нам надо создать новую функцию “Set Relative Rotation”. Ей нужен параметр target, которым, как вы знаете служит tank, если перетащить нить от tank к данному блоку, Blueprint автоматически добавит необходимое преобразование типов.



Сейчас, нам необходимо немного вернуться назад. Как видно “Set Relative Rotation” не получает управления. В таком случае, нам надо создать новое событие: Event Tick, оно срабатывает каждый тик. После возникновения события, контроль передается на условное выражение, в котором определяется значение переменной canRotate. Ели она равна true, тогда управление передается в функцию Set Relative Rotation. И, она поворачивает наш объект. Мы рассмотрели один путь выполнения нашей программы, когда объект поворачивается следом за курсором мыши.



Во втором пути выполнения программы, объект поворачивается, благодаря своей инерции. Когда пользователь отпускает кнопку мыши, скорость мыши (delta) сохраняется в переменной. И, объект поворачивается с этой скоростью. Но когда программа сохраняет скорость мыши (delta)? После выполнения функции Set Relative Rotation управление передается в условный оператор, где снова проверяется значение переменной canRotate, если оно равно истине, тогда программа изменяет значение переменной delta, которую мы объявили ранее.
Если условие после возникновения события Event tick ложно, тогда программа выполняет другую функцию Set Relative Rotation, которая получает другие параметры. В данном случае дельта берется из переменной delta.  Другие операции такие же: Make Rot, Combine Rotators, Get Actor Rotation и, в качестве, параметра target так же выступает tank.


Заметьте, переменная delta имеет начальное значение, что позволяет вращаться объекту сразу после запуска программы. Затем, пользователь может изменить скорость и направление вращения объекта.
Теперь, мы полностью рассмотрели программу вращения 3d объектов в 3d пространстве.

Если у вас возникли какие-то вопросы, задавайте их в комментариях.

воскресенье, 27 апреля 2014 г.

Чусовой -> Чернобыль 

(март 2011)


Юрий "yurembo" Язев
 
     В конце первого весеннего месяца, преодолев пол страны на всех видах транспорта, и, заглянув за рубеж, я совершил поездку в чернобыльскую зону отчуждения. Название этой заметки произошло не от созвучности слов, его составляющих, а от городов, представляющих крайние точки маршрута. Об этом увлекательнейшем путешествии я и хочу рассказать.
     Чернобыльская зона отчуждения – это 30-ти километровая зона, охраняемая по всему периметру. Зона появилась в результате аварии, взрыва и, впоследствии, выброса радионуклидов  на Чернобыльской атомной электростанции в городе Припяти, произошедших 26-го апреля 1986 года. Это самая масштабная техногенная катастрофа в истории человечества. Зона - место, окутанное тайнами и мифами, место, где я хотел побывать с самого раннего возраста.

      Сборы

     Начитавшись за свою долгую жизнь множества книг о Зоне, наигравшись в компьютерные игры, повествующие о Зоне и, насмотревшись документальных фильмов, я таки решил туда съездить, чтобы собственными глазами увидеть последствия произошедшего и состояние текущего. Особенно мое желание было подстегнуто после прочтения книги «Чернобыль, Припять, далее Нигде» Артура Шигапова. В своей книги автор на собственных примерах рассказывает о поездках в Зону отчуждения. Воспользовавшись его рекомендацией, я заказал экскурсию через сайт общественной организации pripyat.com.  Для заказа поездки надо заранее зарегистрироваться на сайте с предоставлением паспортных данных. Экскурсии в Зону планируются заранее и осуществляются довольно редко: раз-два в месяц. Стоимость экскурсии составляет $100.
     Я спланировал мартовскую экскурсию еще в январе, купив на нее билет, оплатил через Web Money,  поскольку посчитал этот способ оплаты наилучшим для покупки зарубежной услуги. Дальше встал вопрос по сложнее – как добраться до Киева к 8 часам утра 26-го марта. Немного поразмыслив, и прикинув время, которое я могу потратить на поездку с учетом своего напряженного графика в GenomeGames, за полтора месяца до экскурсии я купил такие билеты: от Перми до Москвы – на самолете (в обе стороны), от Москвы до Киева – на поезде (в обе стороны). Для меня такой способ добраться в указанное время до Киева показался самым предпочтительным. Если добираться до Киева только самолетами (с пересадкой в Москве – без нее рейсов нет), то, самолеты от Перми до Москвы летают только по утрам, а от Москвы до Киева - только днем и вечером. Мне не хотелось снимать номер в киевской гостинице. Поэтому нужен был вариант прибытия в Киев рано утром. Если рассматривать вариант – добраться до Киева только на поезде (снова с пересадкой в Москве), то это слишком долго (26 часов от Чусового до Москвы, 13 часов от Москвы до Киева, плюс время между поездами). А выбранный вариант позволил сократить 26 часов до 2-х (плюс дорога от Чусового до Перми) и приехать в Киев близко к нужному времени. При этом появилось время для дел в Москве в перерыве между прибытием и отправлением. Обратный путь в избранном способе тоже предполагал удобное время отчаливания из Киева – после небольшого перерыва после возвращения с экскурсии, и вылет из Москвы через несколько часов после прибытия поезда. В итоге, мной были куплены следующие билеты:
     25 марта в 8:00  вылет из Перми – 25 марта в 8:10 прилет в Москву в аэропорт Внуково;
     27 марта в 20:10 вылет из Москвы аэропорт Внуково - прилет в Пермь в 0:10;
     В обоих случаях авиакомпания UTair. Время указано местное того пункта откуда вылетает и куда прилетает самолет.
     Общая стоимость 7990 руб., при этом 400 руб за услуги турфирмы «Спутник». А то, что написано на сайте той же компании UTair – стоимость полета от Перми до Москвы и обратно – 5990 руб, предполагает «чистую» цену без всевозможных сборов и налогов, без которых вылететь не удастся.
     25 марта в 16:46 оправление от киевского вокзала города Москвы на поезде Москва – Киев - прибытие в Киев 26 марта в 5:19  на ж/д вокзал, стоимость 1295,2 руб.,  время в пути 13 часов 33 минуты;
     27 марта в 0:22 отправление из Киева на поезде Хмельницкий – Москва – прибытие в Москву на киевский вокзал 27 марта в 14:08, стоимость 1295,2 руб., время в пути 12 часов 46 минут;
     Время указано местное того пункта откуда отправляется и куда прибывает поезд. В Киеве с Москвой час разница.
     Итого: за ж/д услуги: 2590,4 руб. Компания – монополист - РЖД. И, да, места в поезде - плацкартные.
     После покупки билетов миновали недели, прежде чем настал час отправления. Советую купить все билеты заранее, путь не близкий, необходимо все предусмотреть: сначала надо купить билеты на поезд, в том случае, если вы выбрали способ добраться до Киева подобный моему, а уже затем приобрести билеты на самолет, опираясь на время отправления поезда.

     Дорога в Киев

     Ночью 25-го марта была ужасная погода. Если еще в предыдущий день было по весеннему тепло, светило солнце, то ночью 25-го (и в последующие дни) погода резко испортилась, в ту ночь шоссе было обледеневшее, снег валил сплошной стеной, из-за чего дорогу практически не было видно. Двигаясь на автомобиле по пути от Чусового до аэропорта Большое Савино, не раз посещала мысль о невозможности вылета самолета из-за погодных условий. По причине скользкой дороги, ехать надо было осторожно, поэтому путь занял больше времени, чем ожидалось, тем не менее, я успел к началу регистрации на рейс.
     Прибыв в Москву, я обнаружил, что там нисколько не теплее, чем в Перми, даже наоборот. Самолет совершил посадку в аэропорту Внуково, откуда ходит аэроэкспресс прямиком до нужного мне вокзала – Киевского. Дорога занимает около получаса.
     До отправления поезда в Киев у меня оставалось еще порядочно времени, которое надо было с пользой занять. В обменном пункте валюты (два из них находятся в одном здании с вокзалом, вход с улицы) надо обменять рубли на гривны, чтобы использовать последние в Украине в операциях купли-продажи. Одна гривна стоит примерно 4 рубля. Если вы едите в Киев на один день, как я, и не собираетесь шиковать, то 500 гривен хватит с избытком, при этом еще останется на сувениры. Если прировнять гривны к рублям, то цены в Украине несколько ниже, чем в России, сравнивая Киев с Москвой.
     Встретившись с руководителем проекта нашей компании, мы обсудили то, что имеется к настоящему моменту и планы развития проекта на будущее. Через дорогу от киевского вокзала есть «Европейский» торговый центр, где можно перекусить. На улице рядом с торговым центром красуется огромная буква «e», которая сразу же вызвала у меня ассоциации с «самым лучшим в мире веб-браузером» (по словам Гайдара Магданурова) Internet Explorer. Поэтому останавливаться на этом месте я не стал по религиозным убеждениям.
     В 16:46 по московскому времени я сел в поезд и отправился за границу. До этого успел промерзнуть до костей, поскольку поднялась неистовая пурга, что было странно для Москвы в это время года.
     В поезде было, как в поезде – это вам не бизнес-класс самолета, и контингент очень разный. Однако, контингент, как и все остальное были «по барабану», ибо после суток бодрствования, как  не удивительно, очень хотелось спать. Проснувшись ночью, я перевел часы на Киевское время (час назад по сравнению с московским) и стал собираться к увлекательнейшей экскурсии.

     На вокзале

     Сойдя с поезда на пирон ж/д вокзала в Киеве, я прошел по надземному переходу в Южный терминал. Внутреннее убранство этого вокзала выглядело солиднее, чем того, с которого я отправлялся, это единственный вокзал в Киеве, его держат в приличном состоянии – других нет. Подобно другим общественным местам, здесь находится много кафе и ресторанов. Перед поездкой в зону с повышенной радиационной обстановкой, надо хорошо подкрепиться, поскольку, как, впоследствии, сказал экскурсовод: радиация отрицательнее влияет на голодных людей. Что ж, с этим можно с уверенностью согласиться! Поскольку на голодного всё воздействует отрицательно!
     26-го марта (за месяц до 25-тилетия катастрофы на ЧАЭС) погода в Киеве была пасмурная и довольно прохладная. На улице уже совсем рассвело, когда я вышел из здания Южного вокзала, на часах было около 7 утра. Как я и предполагал, изучая дома гугловские карты, прямо передо мной через дорогу стоял храм Георгия Победоносца. Это вселило уверенность, что я не ошибся выходом и направлением. Автобусная остановка находится еще через одну дорогу от храма. По подземному переходу я благополучно добрался до нужного мне места. Удивило, что подземный переход очень немноголюден, в нем нет ни одного магазинчика, тогда, как в Москве в любом подземном переходе некуда камню упасть. Очевидно, этот переход не пользуется популярностью среди киевлян. Выйдя на улицу, я стал изучать близлежащую территорию в целях найти логотип сайта pripyat.com, знаменующий о месте сбора на экскурсию.

     Экскурсия

     Около 8 часов утра к остановке, на которой уже виднелся логотип pripyat.com, подошел вместительный автобус. В него загрузились 43 человека, включая автора. Поскольку этот год юбилейный для катастрофы, то кроме россиян и украинцев, являющимися постоянными участниками экскурсии, в этот раз на нее отправились иностранные СМИ, такие, как: «Голос Америки» и нидерландское телевидение. В составе групп были переводчики, поэтому у них не было проблем с общением. По другой версии интерес иностранных СМИ к чернобыльской зоне связан с острыми событиями, происходящими вокруг японской АЭС «Фукусима-1». Возможно, они хотят показать общественности, чем это может закончиться и что может произойти. На входе в автобус, по компьютеру сверялись имена и фамилии входивших с теми, кто зарегистрировался на сайте и оплатил экскурсию. Недосчитавших еще двух человек, мы безрезультатно подождали 10 минут и двинулись в путь. Все-таки, кому надо, тот пришел на остановку еще за час до отправления автобуса.
     От Киева до Чернобыля примерно 70 км по шоссе. Из города выехали без проблем, не застряв ни в одной пробке. Вдоль шоссе попадалось много вполне жилых поселков и деревень. Дорога довольно хорошая, поездка проходила приятно. В автобусе имеется телевизор с DVD-проигрывателем, с помощью чего транслировали документальные фильмы соответствующей тематики.
     Доехав до КПП Дитятки, нас попросили выйти из автобуса для прохождения паспортного контроля. Этот КПП получил свое название от близлежащей деревни, которая является последним населенным пунктом перед 30-километровой зоной обязательного отселения. После того, как все успешно прошли контроль, мы сели в автобус и поехали. Далее путь пролегал по зоне отчуждения. Экскурсовод, которым во время нашей поездки был Александр Сирота, призвал внимательно смотреть в окна, поскольку в этих местах можно увидеть диких животных, заселивших зону. На пути в Чернобыль попадалось много заброшенных домов – целые села, были деревни с названиями, определившими их судьбу. 25 лет минуло, и село с названием Залесье на самом деле все заросло лесом, если бы мы ехали летом, то возможно из-за листвы и не увидели бы домов этого села, находящихся возле дороги.

экскурсовод  Александр Сирота, бывший житель г. Припяти

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


г. Чернобыль

Это был очень трогательный и волнительный момент. Здесь мы увидели котов, и особые их любители принялись фотографироваться с ними. Участник экскурсии, захвативший с собой дозиметр, измерил радиационный фон: через несколько секунд на дисплее высветилось значение равное 140 микрорентген. Внутри, как и снаружи здание ЧернобыльИнтерИнформа ничем особенным не отличалось. Пройдя по коридору, мы свернули в небольшой офис, где нам надо было расписаться о том, что мы в трезвом уме и снимаем с организаторов поездки ответственность за наши жизни и за возможные увечья, полученные во время экскурсии.
     Погода была пасмурная и прохладная, но это не могло испортить настроение. Загрузившись в автобус, мы двинулись к следующей остановке – автовокзал г. Чернобыля.

 на автовокзале Чернобыля

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

     ЧАЭС

     Купив в магазине все необходимое, ядерные туристы, разместившись в автобусе, двинулись к следующей остановке, которой была ЧАЭС. Я с нетерпением ее ждал. Уже в автобусе любопытство взяло верх, и я спросил Александра: «Как же так, ведь Чернобыль подлежал обязательно эвакуации, а там столько народу?» Он ответил, что это рабочие, трудящиеся вахтовым методом, и их постоянное число около  4-х тысяч. Выезжая из города, я увидел еще много поразительного, может быть ни сколько не удивительного в повседневной жизни обычного города, в котором живем я и ты, дорогой читатель, но являющимся особенным для такого места, как Чернобыль. Так, мы добрались до 10-километрового КПП Лелев, так же получившим свое название от близлежащей деревни, жители которой после аварии были в обязательном порядке эвакуированы.
    На пути к ЧАЭС, не доезжая несколько сотен метров до станции, наш автобус сделал остановку, и экскурсовод объявил, что это последняя точка, где можно фотографировать в любом направлении, так как на станции такая роскошь не позволительна. Наша стоянка имела место на повороте рядом с отводным каналом охладительного пруда, с этого места открывалась прекрасная панорама на ЧАЭС. Отсюда хорошо было видно недостроенные 5-ый и 6-ой энергоблоки, которые были почти готовы для пуска в эксплуатацию, но из-за аварии это стало невозможным.

 недостроенные 5-ый и 6-ой энергоблоки Чернобыльской АЭС

 пруд – охладитель Чернобыльской АЭС

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

 скульптура «Прометей»

Вообще, эта статуя была перенесена из Припяти в связи с тем, что там ее просто на просто распилили бы мародеры. Проезжая по территории ЧАЭС, в глубь станции, меня поразил ее масштаб! Ни один документальный фильм не смог передать ее реальные размеры! Разве, что компьютерная игра S.T.A.L.K.E.R. показала в виртуальности грандиозный масштаб станции, но там, в хаосе перестрелки, на это не успеваешь обратить внимание. На территории ЧАЭС находится множество всяческих служебных строений: всевозможные трубы, маленькие, большие, огромные здания, мосты и мостики, энергоблоки, сарко… Стоп! Очередная остановка. На этот раз у смотровой площадки, откуда до печально известного 4-го энергоблока 200 м! Кроме того на этой площадке установлен памятник в честь тех, кто рискуя своими жизнями воздвиг саркофаг – объект «Укрытие».

 Объект «Укрытие» - саркофаг

В спешке, покинув автобус, мы с любопытством оглядывались по сторонам, в особенности на махину – саркофаг. Первый и второй энергоблоки построены отдельными зданиями и находятся раздельно, тогда, как третий и четвертый объединены «под одной крышей», и часть, под которой находится четвертый реактор дополнительно «окутана» железобетонным «покрывалом» саркофага. Это было захватывающее зрелище! Туристы в спешке перемещались по площадке, поскольку долго находиться здесь нельзя, фон во много раз превышает допустимый, одновременно фотографируясь на фоне саркофага. Под конец «особенной» остановки была сделана общая фотография – на память о посещении ЧАЭС.  Затем, сев в автобус, мы отправились в город – спутник станции – Припять.

     Прогулка по Припяти

     Наверное, Припять не лучшее место для прогулок, однако, для участников экскурсии это очень любопытное место, потому что ими движет заинтересованность в истине. И, прогулка по этому мертвому городу есть момент истины, как не удивительно, для каждого свой.
     От ЧАЭС до Припяти два километра. Выехав с территории станции, гид объявил, что мы проезжаем «рыжий» лес, который уже совсем не рыжий, поскольку после аварии был захоронен, а на его месте за 25 лет выросли вполне нормального цвета деревья. Через пару сотен метров была сделана остановка у стелы «Припять – 1970». Проезжая по «мосту смерти», Александр опроверг его страшный миф, «подаривший» ему название, о том, что все, пришедшие на него в ночь аварии, чтобы посмотреть на «зарево», умерли. Поскольку, сам Александр и многие его друзья были в ту ночь на этом мосту и все, если и не совсем здоровы, то вполне живы. На самом въезде в город нас ожидала встреча с последним КПП. Далее, после нескольких поворотов, наш автобус медленно поехал по улице Ленина, как и следовало ожидать, главной улице города. Доехав до центра города, гид сделал объявление о том, что это конечная остановка. Взяв необходимые вещи – видео-съёмочные принадлежности, туристы вышли из автобуса. Очевидно, это была главная городская площадь. Здесь находятся дворец культуры «Энергетик», гостиница, универмаг и еще некоторые здания.


 на улицах Припяти

    Для прогулки по Припяти экскурсанты разбились на группы. Кроме Александра Сироты с нами были еще три гида, два из которых, кстати, тоже Александры. Я пошел с группой Александра Сироты, поскольку читал о нем, и экскурсия с ним ожидалась крайне интересная, так как Александр, являясь бывшим жителем Припяти, мог рассказать что-то особенное из жизни города до аварии. Также, в нашу группу вошли зарубежные СМИ. Из-за этого она получилась большой, поэтому с нами пошел еще один Александр с дозиметром, он замыкал отряд, следя за тем, чтобы никто не отстал.
     Первое здание, куда мы зашли, был рядом стоящий универмаг. Описывать, что там было увидено, и какие ощущения при этом были испытаны, неуместно – словами не передать, лучше съездить и посмотреть воочию. Затем, дворами мы прошли к столовой. Путь пролегал, как мимо когда-то жилых домов, так и мимо детских садов и игровых площадок. Кругом все заросло деревьями и кустарниками, поэтому ранняя весна (или поздняя осень) наилучшее время для прогулки по Припяти, когда жизнь еще только просыпается от зимней спячки; летом, бушующая растительность, будет вселять совсем другое настроение, нежели присущее этому месту. Вдобавок, летом из-за листвы ничего не будет видно. Это была столовая советского типа, с надписью из кирпича на стене: «Приятного аппетита». Рядом со столовой находятся общежития. В одно из них мы вошли. Поднявшись по лестнице и пройдя по коридору, мы столпились в комнатушке. Как оказалось, в этой комнате, будучи маленьким пацанёнком, вместе с мамой жил Александр Сирота. После того, как он рассказал истории о появления денег на подоконнике, о заначках вино водочных изделий, находящихся в кладовке, я «пополнил банк» несколькими гривнами и мы пошли в другое помещение этого общежития – в агитационный (ленинский, красный – у него много названий) уголок. Здесь была кромешная тьма, тем не менее, удалось разглядеть некоторые весьма интересные предметы советской истории, в том числе, фотографии строительства четвертого энергоблока. На улицу мы вышли с другой стороны общежития.
     Выглянуло солнце; к моменту своего появления уже начинался закат, отдавая вечерний оттенок желтого. Далее мы прошли несколько памятных мест и последовали по улице Дружбы, являющейся второй по значимости в Припяти. Свернув во двор, мы направились к первой школе. Зайдя по пути в пятиэтажку, и обойдя там все квартиры. Отличительной особенностью первой школы от еще пока многих припятских строений является обрушение части здания школы, где раньше располагались начальные классы. Обрушение произошло весной 2005-го года. Заходить в школу мы не стали по причине аварийности здания.

 обрушившаяся школа № 1 г. Припяти

Рядом со школой находится стадион, который трудно заметен, и без указания экскурсовода, на него никто бы не обратил внимания. На этом месте много мха, на который наступать категорически не рекомендуется, иначе можно потом не пройти дозиметрический контроль, ибо мох, как губка, прекрасно впитывает радиацию.
     Следующим пунктом нашей прогулки стала припятская пристань, откуда открывался изумительный вид. Не задерживаясь на этом месте, мы побрели дальше. Задерживаться было нельзя, потому что в 16:00 отправление автобуса. Хотя время еще было, при этом хотелось  увидеть другие достопримечательности города, и мы начали поторапливаться. Вернувшись в центр города, мы пошли в гостиницу «Припять», где нашей целью было подняться на самый верхний - восьмой этаж. Оттуда перед нами открылся потрясающий вид Припяти: безлюдный город, в котором во царила природа, в лучах заката выглядел по своему прекрасно. С этого места было видно весь город. Не делая остановок, по лестнице спустившись вниз, мы отправились в парк, где стоит хорошо известное чертово колесо. С годами оно немного накренилось и выглядит устрашающе.

колесо обозрения

Гид попросил обратить внимание и не стоять рядом с трещинами на асфальте, поскольку над ними сильно фонит. Вообще, радиацию можно разделить на две составляющие: бета и гамма излучение. Если для преграды бета лучам достаточно простой одежды, то для остановки гамма лучей поможет только свинец. Затем, мы поспешили в ДК «Энергетик». Зайдя туда с черного выхода, поднялись на второй этаж, и, пройдя через спортивный зал, спустились к парадному входу. На расстоянии 50 метров от входа стоял автобус, на котором мы приехали в Припять. Три часа экскурсии – прогулки по Припяти пролетели не заметно. Через несколько минут, когда все были в сборе, счастливые ядерные туристы, полные незабываемых впечатлений, отправились на ужин в ЧАЭС.

 кафе «Припять»

     Дорога в Киев

     Перед входом в столовую следует обязательная проверка на «загрязнение» в специальном аппарате. Признаться, перед проверкой, было некоторое беспокойство о том, что могут изъять какую-нибудь часть одежды. Однако проверка для всех прошла благополучно. Ужин оплачивается заранее, деньги отдаются экскурсоводу. Стоимость ужина 78 гривен. Как написано на сайте pripyat.com: кормят вкусно и много, это утверждение полностью соответствует действительности. К тому же, после дня нахождения в зоне с повышенным радиационным фоном и нескольких часов ходьбы по мертвому городу (вообще-то, не важно по какому городу, если не учитывать, что в Припяти нет кафе и мест для отдыха), охота сильно есть. На пути в Чернобыль, мы сделали остановку возле таблички, своего рода мемориалом, селу Копачи, которое первым из населенных пунктов приняло радиационный удар аварии, находясь в трех километрах от станции. После катастрофы ее похоронили вместе с домами и со всем, что в них находилось, без жителей, конечно, которых эвакуировали. И, теперь, на этой табличке написано, что здесь захоронено село Копачи. С другой стороны дороги виднеется гигантская антенна стратегического объекта Чернобыль-2. В настоящее время это груда металлолома и никакой стратегической ценности не представляет. Охраняется одним сторожем, который за бутылочку красненького пропустит любого желающего. По некоторым данным на строительство объекта Чернобыль-2 было затрачено в два раза больше средств, чем на строительство ЧАЭС. Тем самым мы немного отвлеклись от темы повествования.

радиолокационная станция «Чернобыль-2»

     Быстро темнело, стало понятно, задержись мы в Припяти еще немного, и предстояло бы нам возвращаться в темноте. Приехав к административному центру зоны отчуждения, в здании ЧернобыльИнтерИнформа мы второй раз прошли дизконтроль. После этого, мы немедля поехали в Киев. В автобусе снова показывали документальные фильмы о Припяти и ЧАЭС, но, теперь, фильмы только создавали фон, у каждого участника поездки в голове были свои мысли. Сегодня было много увидено, услышано и узнано, поэтому материала для размышления было предостаточно. Доехав до КПП Дитятки, мы в третий и последний раз прошли дизконтроль. Для всех он оказался удачным. За окном автобуса уже совсем стемнело, а всматриваться в темноту не было желания.
     Вечерний Киев сверкал рекламными огнями; огнями витрин, жилых домов и фонарных столбов. Наш автобус быстро доехал до железнодорожного вокзала. Выйдя из автобуса, каждый участник экскурсии поблагодарил гидов за интереснейшую поездку. Все попрощались, пожелав друг другу удачи, и разошлись кто куда, обещая встретиться снова. На этом экскурсионная часть поездки завершилась, и мое пребывание в Киеве близилось к концу.

     Встреча

     На часах было 20:10, когда я вошел в здание Южного вокзала. Забрав из камеры хранения оставленные утром вещи, я прошел в зал ожидания. Там, как всегда было многолюдно. На сегодняшний вечер у меня была запланирована встреча, поэтому в зале задерживаться не стал. Пройдя мимо, очутился в главном здании вокзала. По сравнению с южным терминалом, это было здание старого образца, построенное во времена советского союза. Тем не менее, оно в хорошем состоянии. Возле вокзала расположена широкая площадь. В результате грамотного расположения множества фонарей, даже в темное время суток на ней достаточно светло. Позвонив ожидаемому человеку, мы договорились о встрече в кафе через дорогу.
     Беседа проходила в достаточно тихом и спокойном месте, моим собеседником был геймдизайнер, работающий в нашей компании так же, как и я удаленно. Точнее, это милая девушка, известная под псевдонимом Анорико Муросаки. В жизни она Анастасия Титаренко, пишет и редактирует сюжет для нашей игры “Project Genom”. Хотя я пишу технические статьи, при знакомстве с ее литературными трудами, они мне сразу понравились, выделившись из всего, что я читал в последнее время. Кроме сотрудничества с GenomeGames, Анастасия работает геймдизайнером в киевской компании. Индустрия компьютерных игр не единственный род ее занятий, также, она пишет прозу. В прошлом году Настя получила премию «Дебют» за роман «Ржавые цветы», который уже можно скачать из Интернета. Автор прочитал сие произведение и всем рекомендует: происходящие события держат в напряжении до конца романа, а концовка многих порадует.
    
         Возвращение

     Придя на вокзал, я встретил нескольких участников экскурсии, как оказалось, до Москвы мы едем одним поездом. Дорога до Москвы почти ничем не отличалась от дороги до Киева, разве что, более враждебно настроенными российскими пограничниками, которые «перевернули» весь мой багаж, состоящий из рюкзака. Также, было негде зарядить сотовый телефон. Имевшейся в вагоне единственной розетке, явно не понравился его блок питания. В ночь на 27-ое марта переводились часы на летнее время, следовательно, вместе с переходом на московское время прибавились 2 часа.
     Прибыв на Киевский вокзал г. Москвы и распрощавшись с друзьями, я не стал на нем задерживаться и на аэроэкспрессе отправился в аэропорт Внуково. Там мне удалось наконец-то зарядить телефон. Придерживаясь плана, вечерним самолетом я вылетел в Пермь.
     Самолет совершил приземление на западно-уральскую землю в 0:10. К счастью, мне не пришлось тусоваться до утра в аэропорту, так как меня на машине встретил папа. Ночь 28-го марта была ясная, но не морозная погода, поэтому дорога была в удовлетворительном состоянии, и через пару часов я был дома, привезя с собой 13 ГБ ценного фото и видеоматериала.
     Вещи, после нахождения в зоне с повышенным радиационным фоном, нельзя стирать в машине, необходимо постирать их в отдельном тазу.
     На следующий день продолжилась обыденная - каждодневная жизнь, но впечатления и воспоминания о Зоне отчуждения надолго остались в памяти каждого участника экскурсии.

общая фотография экскурсионной группы на фоне саркофага

Видео с экскурсии (video tour):

суббота, 22 февраля 2014 г.

Objective C

Статья №2


Юрий “yurembo” Язев


Написанная мною полгода назад заметка: “Game development and OS research” (http://yazevsoft.blogspot.ru/2013/08/game-development-and-os-research-26.html), признаю, была, в некоторой степени, поспешным выводом относительно языка Objective C, да, и с Apple-технологиями я подружился. Просто, в моем случае процесс “акклиматизации” к новым технологиям, как всегда затянулся. Ну, неспроста, десятилетиями использовать IBM PC + MicroSoft (подчеркиваю слово софт от Microsoft) и за месяц перейти во вражеский лагерь, задача не простая, чисто со стороны убеждений.
В общем-то, поэтому я решил высказать мысли по этому поводу в своем блоге, на хрен, он еще нужен, только, чтобы мысли постить.
Главная неприязнь у меня была к языку программированию Objective C. Но некоторое время спустя, разобравшись с ним, оказалось, что он не так уж плох. По большому счету:
-Нужен ли нам еще один язык программирования?
-Да, давайте 2!
Интересно ведь изучить, пускай не новое, но ранее не известное. Чисто для веселья, однажды, я изучал полу академический язык программирования SmallTalk. Почему полу-? Дак, ничего существенного на нем не разработано, зато его влияние на ООП, как на научную дисциплину и его практическое использование бесценно. Тем самым, SmallTalk повлиял на все современные языки программирования в последние 30 лет. И, Objective C не стал исключением, напротив, он еще ближе к SmallTalk, чем, скажем, C++. Так, например, в Objective C за место точечной нотации для вызова метода объекта используется подобная SmallTalk’у конструкция посылки объекту сообщения:
[car drive];
Но дело даже не в этом. А в растущем интересе заказчиков и, следовательно, программистов к этому языку. И, хотя, созданы разнообразные средства для разработки приложений под Аппловские платформы, позволяющие избежать использования Objective C (например, Java, Xamarin и др.), этот язык любят Mac-кодеры, потому, что в отличие от узкоспециализированных фреймворков, Obj C предоставляет доступ ко всему механизму операционных систем Mac OS X и iOS.
Разрабатывать игры на Objective C мне пока не доводилось, так как существуют прекрасные кроссплатформенные движки (довольно узкая специализация - см. выше) для разработки игр под Mac OS X, iOS на C++ (среди чего отмечу свой любимый движок Torque 2D). Однако, для Obj C есть порт движка Cocos 2D, исторически появившейся раньше, чем для C++. Но это другая история…
В заключении мысли, порекомендую почитать мои статьи о языке Objective C в журнале “Хакер” (в апрельском номере ожидается первая статья цикла).

воскресенье, 10 ноября 2013 г.

Портфолио 

Ниже представлена подборка некоторых моих игр.

1) YazevPacMan 3: Rebel’s Revenge (2005) – моя разработка классической игры, чтобы не придумывать геймплей, поскольку моя цель – техническая сторона вопроса. Движок разработан мною с нуля на Delphi и DirectX (DirectDraw, DirectInput).




2) YazevTeris 2 (2006) – снова в основу геймплея легла классика – моя разработка игры Алексея Пажитнова. Движок для игры я разработал на Delphi, графическую подсистему реализовал с помощью OpenGL. 



3) YazevBattleTank 2: Metaller’s Revenge (2006) – эту игру я разработал еще до того, как «танки» стали мейнстримом. Двумерные танки. Движок написан мною с нуля на Delphi, рендер организован посредством OpenGL, управление – через DirectInput.




4) YazevBomberMan (2007) – вновь классический геймплей, однако, в отличие от оригинала, действия в моей игре происходят в трехмерном пространстве. Следовательно, игровой и графический движок – мой, написан на Delphi + OpenGL (GLU, GLUT) + DirectInput (для управления).




5) YazevBomberManDev (2008) – по сути, это редактор уровней для игры YazevBomberMan. Запускается в оконном режиме и имеет набор элементов управления, присущих средам визуального программирования (компоненты для создания внутри игровых объектов). В редакторе используется движок от игры YazevBomberMan. Построенные уровни сохраняются в файлы, которые впоследствии можно загрузить в игру.


6) DarkRobot (2008) - игра, которую я разработал для журнала "Хакер", сопроводительный цикл статей "Темное искусство игродела" есть на сайте журнала. Игра разработана на C++ с использованием бесплатного графического движка DarkGDK. Кроме синглплеера игра включает клиент-серверный мультиплеер, где сервер представлен отдельным приложением.




7) myRiseOfAtlantis (2009) - двумерная казуальная игра типа match3 – тестовое от Playrix является клоном игры Rise of Atlantis, в ней используется оригинальный арт, программная сторона написана мной на C++ с использованием указанного в задании бесплатного движка HGE. При этом для парсинга xml-файлов и загрузки из них уровня используется свободная библиотека TinyXML.




8) XMLLevelWriter (2009) – редактор уровней для игры myRiseOfAtlantis. Оконное приложение, которое я написал на C++. Уровни сохраняются в xml формате для последующей загрузки в игру.


9) Project Genom (2009 – 2012) (не издан) – MMORPG, разрабатываемая совместно с компанией GenomeGames (http://www.pgenom.ru). В проекте я принимал участие, как ведущий программист. Исходя из того, что в качестве основы для разработки был выбран движок Torque 3D (по крайней мере, во время моего участия), то для доработки движка использовался C++, для написания игровой логики внутренний язык движка – Torque Script. Плюс к этому использовалась БД MS SQL Server.




10) Arcanoid (2013) – естественно, клон Арканойда – тестовое в компании DayTerium (плюс, в некоторых других компаниях было такое тестовое). Для разработки своей версии я использовал C++ и OpenGL.





11) ObjectFinder (2013) – игра типа Hidden Object – тестовое в компании GameInsight (подразделение мобильных разработок ILikeGames, г. Ростов-на-Дону). По сложившейся традиции для планируемой игры я разработал заточенный под HO игры движок. Он был написан на C++, для визуализации использованы OpenGL, GLUT. Для загрузки изображений из разных форматов воспользовался открытой библиотекой DevIL. Для загрузки уровней из xml файлов была использована библиотека TinyXML. Вдобавок, реализована поддержка хранения данных во встраиваемой БД SQLite.





12) Menu (2013) с взаимодействием, подобным WarCraft 3, разработано с использованием Unity 3D и NGUI. Арт используется присутствующий в NGUI, кроме фона.


13) MagicMancala (2014) – разработанная совместно с Paradise Development казуальная игра для iPad (видео демонстрация проводится на PC). Основу для цифровой версии составляет настольная игра Манкала (подробности: http://ru.wikipedia.org/wiki/Манкала). Цифровая версия следует правилам оригинала, плюс, имеются некоторые добавления, так в нашей игре используется магия (отсюда происходит название). Во время разработки проекта я занимался всем программированием. Игра построена на базе кроссплатформенного игрового open source движка Torque 2D. Следовательно, главным образом игра написана на C++ и скриптовом языке движка Torque Script.






14) Asteroids (2014) – клон классической игры 1979-го года от Atari - Asteroids. Собственно, этот клон я разработал в качестве тестового для студии «Кефир». Так как, в начале выполнения «мне развязали руки», другими словами: разрешили использовать для разработки любые технологии, то я воспользовался мною горячо любимым движком Torque 2D.
В клоне реализован весь функционал оригинала с некоторыми добавлениями и/или исключениями в соответствии с ТЗ. Управляемый космический корабль перемещается по всей плоскости окна приложения, движение корабля ограничено рамками окна. В арсенале корабля есть два вида оружия: пули и лазер. Если пули бесконечны, то лазер имеет ограничение на количество выстрелов, после чего ему надо «восполниться». В игре присутствуют два типа врагов: дрейфующие в космосе астероиды, имеющие разные размеры и скорости, и летающие тарелки, всегда преследующие космический корабль. Если пулей попасть в астероид, то последний расколется на два более мелких куска, которые продолжать дрейфовать. Следующим попаданием маленькие кусочки уничтожаются. С другой стороны, если по астероиду  попасть лазером, то первый будет уничтожен с одного выстрела. В игре реализованы частицы, возникающие при взрыве и отображающие присущий ему эффект; текстовые надписи, показывающие набранные очки, увеличение которых происходит в момент поражения астероидов и тарелок; и количество лазерных снарядов. Космический корабль терпит крушение в двух случаях: при столкновении с астероидом и тарелкой. В таком случае, появляется окно, в котором отображается набранные очки, и дается выбор между стартом новой игры и выходом.





15) Стрельба по воробьям из пушки или крестики-нолики на UE 4 - эта игра представляет собой тестовое в еще одной замечательной компании (не буду говорить в какой, пока я с ней сотрудничаю). По заданию: надо разработать трехмерные крестики-нолики с помощью движка Unreal Engine 4. Значит, в UE 4 присутствует заготовка, где имеется 9 кубов, так почему же ее не заюзать для старта разработки игры? Пусть эти кубы представляют собой игровое поле – таблицу 3 х 3. Затем я добавил трехмерные крестик и нолик, по-быстрому, смоделированные в Blender. В UE 4 игровую логику можно писать на C++ или с помощью графического языка Blueprint. Так как, первый мне намного ближе, я использовал его. Игрок ходит за крестики, ИИ – за нолики. Следовательно, мне понадобилось написать простенький ИИ, который может ходить на основе текущей ситуации. В случае победы одной из сторон или ничьи (бессмысленное продолжение игры – невозможность хода), игра выводит меню, имеющее 2 кнопки: New Game, Quit. Меню разработано средствами движка. Ниже представлены скриншоты и видео:




16) AsteroidExplosion (2015) – игра, типа, классической «Пузыри», разработанная в качестве тестового для компании Playrix. 
В целом «Пузыри» выглядят следующим образом. В двумерном пространстве имеется изначально заданное количество точек, каждая из которых движется по игровому полю хаотично (в любом направлении, с любой скоростью — в разумных пределах), при этом они не сталкиваются, но отскакивают от границ окна приложения. Когда игрок щелкает по игровому полю мышью, то место, где был сделан клик, становится центром растущего круга. Вырастая до заданного 
предела за условный период, круг определенное время остается с максимальным радиусом, а потом начинает быстро уменьшаться. Достигнув минимального размера, он исчезает. В течение всего времени, пока круг виден на экране, точки, соприкоснувшиеся с ним, удаляются, а на их местах появляются такие же раздувающиеся круги, которые живут по идентичному алгоритму. Игрок может создавать новые круги, пока на игровом поле присутствует хотя бы одна окружность. В момент, когда исчезает последний круг, игра завершается. И тогда должно появиться модальное окошко, в котором надо отобразить общее число точек, а также количество удаленных. Одновременно при появлении этого меню должна быть возможность перезапуска игры с начала.
Вместе с заданием компания выдает свой движок и редактор эффектов, которые надо использовать при разработке игры. В то же время, арт и визуальную составляющую нужно использовать свои. То есть, придумать свою игру на основе «Пузырей».. Движок написан на C++, следовательно, этот язык нужно использовать для разработки.



17) Pulse Online – (2020 – 2021) — MMORPG про исследование космоса, далеких галактик, про войны между кланами, захват космических станций, торговлю сырьем и оружием и обо всем таком. Проще говоря, аналог Eve Online. Разрабатывался компанией Pulse Online Game. В проекте я был главным разработчиком, занимался серверной частью и дополнительным программированием. Принимал участие в планирование и решении всех технических вопросов. Для разработки игры использовался Unreal Engine 4.