суббота, 29 октября 2016 г.

История развития игровых движков

О разработке игр и становлении игровой индустрии

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

logo.jpg

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

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

Начало

Ситуация начала меняться в 1993-м году после выхода игры Doom от компании id Software. В то время видеопроцессоры были не способны работать с трехмерной графикой, поэтому Джон Кармак (ведущий программист движка, кто не в курсе и с отдаленной планеты) выполнял все необходимые математические вычисления, служащие для манипуляции с трехмерными объектами, светом, затенением, наложением текстур и прочего самостоятельно. В результате, изображение выглядело трехмерным, на самом деле таковым не являясь. Поэтому Doom engine (первая версия id Tech) был не истинно трехмерным, а псевдотрехмерным. Но важно то, что техническая составляющая этой игры задала стандарт для того, что могло называться игровым движком. А именно, движок Doom был модульным, представлял из себя набор подсистем, в нем каждый четко отделенный программный слой отвечал за обработку своей порции данных. Поэтому появление игровых движков относят к середине 90-х годов 20-го века, то есть тогда окончательно сформировалось определение игрового движка.

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

Цели

Игровой движок в первую очередь создается в целях упрощения и ускорения разработки. Поэтому включает средства для создания игрового мира – level-моделинга, импорта объектов, текстурирования, загрузки и анимации персонажей, создания визуальных эффектов, настройки физики и прочего.

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

Развитие игровых движков происходит вместе или под влиянием развития аппаратных и программных платформ, вместе с появлением новых игровых жанров и изменениями вкусов пользователей. Коротко говоря, развитием игровой индустрии в целом.

Генезис графических систем

В середине 90-х после появления видеопроцессоров, способных обрабатывать трехмерную графику стали появляться программные интерфейсы, упрощающие ее разработку. Вслед за кроссплатформенным OpenGL на сцену в составе DirectX вышел Direct3D для Windows. Эти 2 визуализатора на много лет вперед определили способы графического вывода в играх.

В 1996-м году вышла игра Quake на Quake Engine. Этот движок оказал колоссальное влияние на игровую индустрию.

дерево движков, основанных на Quake Engine

Почти до конца десятилетия на рынке промежуточного программного обеспечения для игр (другими словами, игровых движков) практически единолично ритм задавала id Software. Однако в 1998-м году компания Epic Games выпустила успешную игру Unreal на одноименном движке. Ведущим программистом движка стал основатель Epic Тим Суини. Тим наравне с Кармаком является наиболее значимой фигурой в игровой индустрии. Год спустя от Epic вышла ставшая еще более популярной игра Unreal Tournament.

UT.jpg

В это же самое время конкурирующая компания-разработчик – id Software выпустила мультиплеерную игру Quake 3 Arena (на движке id Tech 3), ровно как Unreal Tournament включающую сетевые баталии.

Quake3.jpg

Эти две игры стали флагманами индустрии, определив ее развитие на годы вперед.

На рынке было не много игроков. Поэтому их продукция была очень дорога, и движки лицензировались единицами.
Ситуация начала коренным образом меняться примерно в середине первого десятилетия 21-го века. Тогда на рынке и в свободном доступе стало появляться большое количество средств для разработки игр. Бизнес промежуточного ПО (middleware) стал набирать обороты. Сначала рынок заполнился графическими фреймворками: Ogre, DarkGDK и др., предоставляющие программисту высокоуровневую прослойку над графическим API. В то же время отличающиеся от игровых движков полным отсутствием внутриигровых редакторов.
Затем на рынок пришли полноценные игровые движки по ценам, уместным для небольшой инди-команды разработчиков, среди них: Torque 3D, Unity 3D, Cryengine, etc.

T3d.jpg
Torque 3D

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

tgb-editor.jpg
Torque Game Builder

В это же время, благодаря World of Warcraft, в игровой индустрии стали очень популярны MMORPG. Многие универсальные движки не смогли предоставить пользователям новую функциональность, поэтому ушли в небытие. Другие движки были адаптированы для мультиплеерного мира путем разработки для них серверных решений, так для Unity 3D были разработаны Photon и SmartFox. Третий тип универсальных движков, изначально являясь клиент-серверным, не почувствовал изменений. К нему относится Torque 3D. Также на рынке появились новые движки, предназначенные для глобальных многопользовательских игр: HeroEngine, BigWorld.

HeroEngine.jpg
HeroEngine

Далее появились социальные сети, от чего у пользователей проснулся интерес к web-играм, которые стали называться социальными. Разработчики универсальных движков: Torque 2D/3D, Unity 3D отреагировали на это довольно оперативно, выпустив плагины для браузеров, которые позволили отображать графику прямо в окне последних. Сначала популярность завоевал визуализатор на основе технологии Flash, которая впоследствии сошла на нет. Поэтому сейчас для  визуализации в вебе используется библиотека для языка JavaScript - WebGL, которая позволяет создавать интерактивную 3D-графику. Однако, из-за недостатков языка, таких как: отсутствие многопоточности, библиотека не может удовлетворить потребности игроделов. Поэтому ее популярность увядает. Ей на смену консорциумом W3C (куда входят: Microsoft, Google, Mozilla и др.) разрабатывается новый низкоуровневый бинарный компилируемый формат WebAssembly. У него не будет недостатков JavaScript, поэтому он будет работать гораздо быстрее него.

webassembly-fastest-browser.jpg
WebAssembly

Под конец первого десятилетия 21-го века случились мобильные технологии. Как гром среди ясного неба появились мобильные устройства по мощности сопоставимые с ПК средней ценовой категории и способные запускать мощные игровые приложения со всеми спецэффектами, которыми обладали низкоуровневые графические интерфейсы. На что разработчики игровых движков ответили в некоторых случаях созданием специализированных конверторов, создающих нативный для конкретного оборудования код (как, например, Unity 3D), а в других — модернизировали свои продукты для кроссплатформенности (к примеру, Torque 2D(http://t2d-dev.ru), Cocos 2DX). Также, на рынке появились новые игроки, предлагающие кроссплатформенные движки для всего парка мобильных устройств, выполняющиеся со скоростью нативного кода. Среди подобных средств: Corona SDK, Marmalade SDK, AGK (App Game Kit).
Corona-SDK-Banner.jpg
Corona SDK

В результате образования и высокой популярности мультиплеерных, онлайновых и мобильных игр, широкое распространение получила модель оплаты FreeToPlay. Которая предусматривает отдачу продукта (в данном случае игры) бесплатно, но предполагает покупку пользователем внутриигровых предметов для прокачки персонажа и/или улучшения других игровых характеристик.

Новинки игровой индустрии

Низкоуровневые программные интерфейсы: OpenGL, DirectX развиваются в соответствии с видеоадаптерами. Раз в 1 - 2 года появляются новые версии, которые поддерживают и дают прикладным программистам (разработчикам движков) реализовать всю функциональность железа. DirectX уже достиг 12-й версии. С другой стороны на смену OpenGL пришел Vulkan - новый кроссплатформенный графический api, разрабатываемый консорциумом Khronos Group, куда входят производители железа и софта.

vr.jpg
VR

Последний на текущий момент тренд игровой индустрии - виртуальная/дополненная реальность. Подавляющее большинство современных игровых движков уже обзавелись поддержкой данной технологии, среди них: Torque 3D, Unity 3D, Unreal Engine 4. Чтобы реализовать поддержку очков VR разработчикам движков надо не только добавить визуализацию на второй экран (для второго глаза) с отличным от первого содержимым (так как, первый и второй глаза могут видеть отличающиеся сцены), но и так же добавить поддержку управления с новых устройств ввода, которые различны для разных гарнитур VR и пока не стандартизированы.

Итоги

За годы существования игровой индустрии в ней образовались 5 больших типов игр:

1) Однопользовательские игры
2) Многопользовательские онлайн игры
3) Игры для социальных сетей
4) Мобильные игры
5) Игры для VR

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

понедельник, 24 октября 2016 г.

Проблема компиляции Torsion

Torsion - это интерактивный редактор кода для языка Torque Script, используемый в движках семейства Torque. Раньше Torsion был коммерческим продуктом и продавался фирмой разработчиком Sickhead Games.

Но сейчас Torsion стал бесплатным и открытым, его исходные коды доступны для скачивания на Github. И это хорошо.

Однако, Torsion старый проект, для своей компиляции требует Visual Studio 2003. Хорошо, это проблем не вызывает. Для построения пользовательского интерфейса Torsion использует библиотеку wxWidgets. Это тоже хорошо, поскольку нужная версия распространяется вместе с исходниками редактора, предварительно ее надо только скомпилировать.

Для парсинга XML-файлов программисты из Sickhead Games использовали платную либу MarkupSTL от ныне несуществующей компании First Object Software. Том Спиллман по каким-то религиозным (лицензионным) соображениям зажал коды этой либы. А без них скомпилировать Torsion не удается.

Имеющиеся в сети реализации MarkupSTL не подходят к реализации в Torsion.

Том Спиллман призывает программистов на GitHub заменить MarkupSTL на открытую TinyXML 2. Это хорошо, но сначала надо понять, как работает MarkupSTL, чтобы заменить ее на другую либу.

Кстати, я использовал TinyXML для разработки загрузчика уровней в одной своей игре типа Hidden Objects.

воскресенье, 23 октября 2016 г.

Сейчас играю в ферму на планшете с Анроедом. Наблюдаю, как игра легко переживает отключение устройства, уход системы в режим экономии энергии, после чего тут же восстанавливается в рабочее состояние.

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

Но я по привычке наблюдаю за этим с замиранием сердца. Я помню то время, когда программисту игры надо было самому восстанавливать контекст воспроизведения. 

Это я о том, что еще 15 лет назад при программировании игр на DirectDraw (компонент DirectX уже давно изъятый из библиотеки) прикладному программисту необходимо было заботиться о восстановлении поверхностей рисования. Но все равно игры на ПК тех времен не переживали уход и возвращения компьютера в ждущий режим.

На андроеде игры визуализируют с помощью OpenGL. С ней даже в Windows было попроще: восстановление контекста воспроизведения не требовало затрат. Но, кстати, кроме, как в Windows я не программировал графику на столь низком уровне, ибо уже появились движки.

суббота, 22 октября 2016 г.

Nintendo -это какая-то религия, сравнимая с Apple. 

По мощности выпускаемых технологий Nintendo совсем не собирается укладываться в поколения консолей. Это касается как их прошлых приставок Wii, Wii U, всех портативных консолей, так и недавно анонсированной Switch. По мощности они не могут конкурировать ни с Microsoft, ни с Sony. 

Но приставки от Nintendo расходятся, как горячие пирожки. Японская компания обыгрывает всех, привнося новый игровой опыт. Это касается необычных контроллеров-нунчак, которые были с приставкой Wii. А сейчас, консоль Switch представляет собой некий трансформер, который можно использовать дома и на улице, не прекращая игру.

Список лицензированных компаний-разработчиков для новой консоли от Nintendo дает предположить, что большая N снова продаст все свое морально устаревшее железо и заработает на этом кучу бабла.
Вы когда-нибудь видели уравновешенного пользователя Windows-PC, который бы унижал или хотя бы сравнивал macOS с Windows? 
Вот, то то же! Таких нет.

А "довольные" мак-юзеры постоянно превозносят свой комп с операционкой по сравнению с Windows-PC.

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

Не будет мак работать с такой же производительность, как PC в два раза мощнее, никогда!

Пресловутая оптимизация софта от Apple. Брехня!

Microsoft делает софт ни чуть не хуже.

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

вторник, 11 октября 2016 г.

Редактирование Торковских скриптов под macOS

Юрий "yurembo" Язев

Для редактирования скриптов из-под Windows существует прекрасный редактор Torsion, специально заточенный под это дело. Его можно купить на сайте GarageGames.

Между тем, сейчас его необязательно покупать, поскольку компания-разработчик SickHead Games выложила его исходники в открытый доступ на GitHub. Теперь, любой торковский игродел может скачать исходники и воссоздать из них редактор для скриптинга.


Читай продолжение на сайте t2d-dev.ru...>>>

понедельник, 10 октября 2016 г.

Gaming Weekend

Юрий Язев

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

Итак, все началось с DOOM 4. Игра издана еще 13-го мая этого года. Ее разработкой занималась id Software вместе с Certain Affinity. Как-то не получалось у меня поиграть в эту игру ранее. Но тут свершилось. Я не буду перечислять все то, что уже сказано до меня про DOOM в профильных изданиях.

Графика, конечно, это то из-за чего я решил поиграть в DOOM 4.




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

И, да, дистрибутив игры занимает более 60 ГБ!

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

Внезапно мне под руку попалась игра The Uncertain Episode 1: The Last Quite Day от отечественной команды Comon Games. Эта игра ни шутер, ни РПГ, ни стратегия, а довольно забытого на сегодняшний день жанра адвенчура (Adventure). Я раньше очень тепло относился к этому жанру, правда, позже я стал меньше уделять ему внимания, переключившись на шутеры, РПГ, etc. Какой-то огонек зажегся в моей душе, и я решил поиграть в адвенчуру.

После установки и запуска игры я обнаружил, что она разработана на движке Unity, похвально. Графика очень детализирована, приятная глазу. После того, как я поиграл пару минут меня охватила ностальгия по старым добрым адвенчурам из 90-х: Neverhood, Сломанный меч 1-2, Братья пилоты, etc. В The Uncertain чувствуется дух этих игр, той школы разработки адвенчур и квестов.



– Ты не видел трусы моей жены? - иногда до абсурда доходящие диалоги.

Давненько я не играл в такие игры, может быть, просто, я давно не играл в адвенчуры?

Сюжет поглотил меня, свежая мысль, что-то новенькое, то чего мы уже давно ожидали. События разворачиваются в 22-м веке в мире без людей, которые по легенде уничтожили себя сами в результате очередного конфликта. Играть предстоит за «свободного» робота, не обремененного выполнять какую-то программу. Согласно предыстории этот робот часто находит созданные людьми вещи, они заинтересовывают его, из-за чего ему интересно узнать о человеческой расе больше информации. На этом основана игра. Оригинальный сюжет, прекрасная графическая составляющая, неспешная обстановка, присущая адвенчурам.




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



The Uncertain сделала мне выходные!


Примечание:
Игра занимает, по сегодняшним меркам, всего 2,5 ГБ. Отсюда вывод. Современные средства цифровой дистрибуции позволили уровнять шансы попасть на компьютер пользователя между играми разного размера. С физическими носителями было не так. В начале 2000-х, когда оптимальным способом доставки контента был компакт-диск, игры обязаны были быть размером 650 МБ. Позже, когда игры стали распространяться на DVD-дисках, контент записанный на последний должен был занимать все его пространство – 4,8 ГБ. Игры по размеру меньшие, чем предоставляли носители, автоматически считались второсортными.

суббота, 8 октября 2016 г.

Ближайшее будущее VR

Юрий Язев



Джон Кармак призывает игроделов, пробующих свои силы в VR, в первую очередь разрабатывать приложения и игры для гарнитур с мобильными телефонам. Это значит, что он не видит ближайшей перспективы в очках виртуальной реальной Oculus Rift от собственной компании. Это подтверждают его слова, что мощными смартфонами обладает большая часть населения, чем мощными ПК.

В июльском номере журнала "Хакер" я подробно рассказал обо всех имеющихся на рынке устройствах виртуальной реальности, разделив их на 3 типа. По словам Кармака: в ближайшее время самым популярным устройством для VR будет смартфон с "держателем" для последнего.



понедельник, 3 октября 2016 г.

Скриптинг: Torque и Unity


Юрий Язев




На днях, прогуливаясь по священному пути, меня посетила мысль о сравнении скриптинга в движках Torque и Unity. И, вот, я шел и размышлял, священный путь 5 км, я иду его час, время для спокойного размышления есть.

Скриптинг – классная вещь, касательно игровых движков, позволяет, не залезая «под капот», реализовать геймплей на высоком уровне с помощью удобного языка.

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

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

На следующем проходе движок Torque, являясь интерпретатором, читает dso-файлы и с минимальной обработкой передает их на выполнение центральному процессору (более подробно в моей книге «Волшебство момента вращения».


С Торком все более или менее понятно. А как у нас обстоят дела со скриптингом в Unity? В этом движке скриптовый код пишется на C# или JS. В бинарный код он переводится с помощью компиляторов среды Mono. JS ровно, как C# языки компилируемые средой Mono. Таким образом, получается, что все объекты Unity: примитивы, источники света, эффекты, etc. составляют всего лишь супер сет классов для Mono