Как сделать открытый мир в игре
Автор: Артём Клиновицкий. По диплому — специалист по защите информации, но в основном занимался AR, VR и интерактивными инсталляциями в разных странах мира. В Pixonic пришёл на должность ведущего VR-разработчика, а сейчас — Senior R&D Software Engineer. Работает над прототипами и другими экспериментальными проектами компании.
Вот мы и добрались до темы, которую наверняка ждали многие, — как сделать трёхмерную игру. В головах некоторых начинающих разработчиков при этом возникает картина шикарной RPG с открытым миром, полной свободой действий и грабежами корованов. Но попытка на чистом энтузиазме взяться за реализацию масштабного проекта часто приводит к разочарованию. Лишь спустя десяток-другой собранных прототипов приходит понимание, какой объём работы нужен для разработки каждого элемента игры.
Потом разработчик начинает выбрасывать из игры своей мечты всё больше деталей, чтобы закончить хоть что-то. Задуманная ролевая игра постепенно превращается в инди-хоррор, открытый мир сменяется коридорами, а механики сводятся к неторопливому сбору записок под скримеры.
Поэтому лучше начинать с малого и постепенно добавлять в игру новые возможности. Тогда полученный в процессе опыт окажется намного ценнее, а следующая попытка гарантированно будет лучше.
Минутка истории. Многие в качестве примеров первых 3D-игр обычно вспоминают Doom или Wolfenstein 3D, но настоящим прародителем трёхмерных шутеров (ещё и с мультиплеером) была игра, выпущенная в стенах NASA в 1973 году — называлась она Maze War.
В те времена не было движков, программисты с большим трудом добивались лицензий и исходников какой-то существующей игры, чтобы её доработать, или же просто писали всё с нуля. На это уходила львиная доля времени разработки самой игры. Сегодня всё намного проще — можно спокойно выбрать один из популярных движков.
Рекомендую начинать с Unity: его не так сложно освоить, у него очень активное комьюнити и есть много готовых компонентов. На ближайшие несколько лет возможностей движка вам точно хватит.
Если вкратце, все 3D-движки создают изображение по одному сценарию.
- Модели и виртуальная камера располагаются в трёхмерном пространстве, с учетом положения, вращения и масштаба. К анимированным моделям применяются соответствующая анимации, например, изгибается часть модели, которая привязана к суставу скелета.
- Все модели покрываются текстурами. Одни текстуры сообщают о цвете определенных частей модели, другие — о том, насколько сильно эти части отражают свет, третьи содержат информацию о рельефе поверхности и так далее. По сути, текстуры — это обычные картинки. За то, как именно они будут накладываться и отображаться отвечают шейдеры — своего рода инструкции для видеокарты.
- Рассчитывается освещение с учётом источников света, расположения моделей относительно друг друга, заранее подготовленных световых карт (специальных текстур, содержащих информацию об освещённости 3D-моделей).
- Применяются пост-эффекты для финальной обработки картинки. Например, стилизация под нуар или эффект миниатюры.
Сами модели для игр создаются в отдельных редакторах вроде 3ds Max или Maya. Ещё есть бесплатный Blender с кучей туториалов на YouTube. Как именно это делается — слишком большая тема для нашего цикла, тем более, что в прототипах можно обойтись готовыми моделями из онлайн-библиотек и каталогов самих игровых движков.
Всё, что требуется от начинающего разработчика в этой части — понять общие принципы работы с моделями, отбора их для прототипа и грамотного размещения на сцене.
Как уже говорили в прошлой статье, для создания прототипа добавлять какую-либо озвучку в принципе не обязательно. Можно сделать целую игру, обкатать геймплей, настроить всю графику и только в конце добавить озвучку. Но важно ведь ещё и не потерять интереса к процессу.
Я рекомендую потратить несколько часов на подбор минимально необходимых звуков из бесплатных библиотек. В игре появится стук шагов, выстрелы оружия, скрип открывающейся двери — ощущения от неё вырастут на порядок.
В этом разделе речь пойдёт о том, что делает статичный набор моделей, картинок и звуков собственно игрой.
Вам будет проще, если вы уже владеете программированием на одном из высокоуровневых языков. В целом, написание кода для игр происходит по тем же фундаментальным принципам, с использованием тех же паттернов и моделей проектирования. Программирование всё равно придётся изучать — рано или поздно.
Но кому хочется корпеть над учебниками по кодингу вместо того, чтобы делать игры. Тут есть два пути.
Первый: освоить самые азы, повторяя за туториалами (разницу между туториалами и курсами мы разобрали в прошлой статье цикла). Делая это, можно узнать, как писать код для самых базовых вещей, понять синтаксис языка и то, как код управляет происходящим в игре. Постепенно вы сможете делать аналогичные вещи самостоятельно, а затем выучите новые операторы, которые расширят ваши возможности.
Конечно, сделать действительно сложную логику с помощью только этих инструментов будет крайне трудно, а поддерживать и отлаживать — ещё труднее. Но для новичков они сильно снизят порог входа в геймдев.
Возможно, для первого раза лучше отложить собственные идеи для игр и выбрать один из готовых проектов, для которого есть хорошие туториалы. Так вы сможете шаг за шагом изучить интерфейс и возможности игрового движка и его редактора, понять основы построения игр. А также более трезво оцените свои собственные силы.
Следовать туториалам несложно, но я очень советую избегать слепого копирования. Экспериментируйте: что будет, если задать другое значение параметра в скрипте; а если сделать совсем другую форму коллайдера; и так далее.
Закончив урок, добавьте к проекту что-нибудь своё: новую возможность для персонажа, красивый уровень из найденных ассетов, озвучку или другой вариант управления.
Главное — выйти за рамки простого повторения. Только тогда можно по-настоящему усвоить материал и приобрести устойчивые навыки.
Движок Unity со всем необходимым можно получить совершенно бесплатно. Более того, сделанные в нём игры можно официально публиковать и продавать, пока они не начнут приносить прибыль больше $100 тысяч в год. Функции бесплатной версии фактически не ограничены — разве что придётся мириться с логотипом Unity на старте игры и светлой темой интерфейса редактора.
Советую сразу скачивать последнюю версию, несмотря на то, что большинство уроков сделаны до её выхода. Большая часть действий почти не будут отличаться, а если где-то возникнут расхождения, тем лучше — самостоятельно найдите, как выполнить в новой версии то, что описано в уроке. Так обучение будет намного эффективнее.
Важное исключение: если урок затрагивает создание интерфейса игры (UI) и он предназначен для Unity версии 4.5 или раньше — он устарел целиком и полностью. Потому что в версии 4.6 UI был полностью переработан — изучать устаревшую версию не имеет смысла.
Ещё в комплекте с Unity поставляется бесплатная некоммерческая версия редактора кода Visual Studio. Советую сразу его установить и привыкать работать в профессиональной среде.
Теперь к конкретным урокам, которые могут пригодиться для создания первого прототипа. Заодно можно на практике увидеть, как работают люди с большим опытом создания игр.
-
начального уровня от Unity по созданию адвенчуры про Элен, которая потерпела крушение на неизвестной планете. Весь урок можно выполнить без написания и строчки кода, на основе бесплатного 3D Game Kit. А после него можно изучить и весь раздел Tutorials на сайте Unity — там много полезных уроков. , официально рекомендуемый Unity. Он охватывает множество аспектов этого движка: программирование, физика, шейдеры, искусственный интеллект, звуки, частицы и так далее. Курс рассчитан примерно на 50 часов, и на него иногда действуют большие скидки. от YouTube-канала Brackeys по созданию игры в жанре Survival. Инди-игры в этом жанре довольно популярны, и многие наверняка хотели бы сделать что-то подобное. Этот туториал поможет начать. с отдельными роликами от того же автора. В нём могут быть уроки, которые пригодятся именно вам. от разработчиков Unity. Я советую первые две: прототипирование на UFPS и работа с Playmaker. от N3K по созданию мобильного раннера, по сути — клона Subway Surfer, но про пингвинов. Однозначно стоит взглянуть всем, кто интересуется разработкой мобильных игр. по созданию профессионально выглядящей лесной сцены в Unity из готовых ассетов (ссылки на них есть в описании к роликам). Подойдет тем, кто хочет самостоятельно собрать крутой уровень, не хуже, чем в коммерческих проектах.
Кто-то мечтает сделать классический ПК-шутер, кто-то мобильный раннер, кто-то возродить жанр стратегий в реальном времени. Поэтому задание будет общим.
- Выберите серию уроков, которая лучше всего вам подходит, — из списка выше или самостоятельно.
- Скачайте и установите Unity или любой другой движок. Начните следовать выбранным урокам, повторяя за автором. Но не забывайте экспериментировать, чтобы понять, как всё устроено.
- Закончив туториал или курс, попробуйте самостоятельно улучшить результат. Добавьте то, без чего прототип игры в выбранном жанре будет неполным. Это не обязательно должно быть чем-то сложным, главное — выйти за рамки обучающих материалов.
В следующий раз мы немного отойдем от Unity и более подробно разберем создание логики для прототипа без навыков программирования. Для этого мы используем Blueprints, о которых мы уже говорили, и которые входят в базовый комплект движка Unreal Engine.
Мы сейчас с друзьями создаем игру с большим открытым миром на Unity. Недавно провели такой эксперимент.
Взяли высокополигональных моделей цветов и расставили их в большом количестве на небольшой территории около здания.
Когда игрок находится на противоположной стороне здания, в том месте где не видно этих самых цветов, и поворачивается
к ним лицом, тогда игра начинает притормаживать. Получается, что в Unity даже те модели, которые в принципе не видны, происходит
их рисование? Это нас немного огорчило, потому что игра планируется с очень большим открытым миром с множеством
моделей. И, пока проект находится на начальной стадии разработки, задумались сменить игровой движок. Только не знаем как
обстоят дела в Unreal Engine и CryEngine. Там так же рисуются модели, которых не видно (которые закрыты другими строениями)?
Посоветуйте как поступить и какой игровой движок выбрать в данной ситуации?
UE и CE вроде могут.
pi-x-el
> Только не знаем как обстоят дела в Unreal Engine и CryEngine.
Примерно точно так же, может чуть-чуть получше.
> Посоветуйте как поступить и какой игровой движок выбрать в данной ситуации?
Конечно же NetWars Engine, только он идеально подходит для больших открытых миров, и особенно если будет ММО составляющая.
pi-x-el,
Dmitry10, скромно не объявил, что NetWars Engine - это его творение , с закрытым кодом, платное.
pi-x-el
> Там так же рисуются модели, которых не видно (которые закрыты другими
> строениями)?
Врубаешь куллинг, и не рисуются, так же как и на юнити можно сделать.
Спасибо. Про NetWars Engine впервые слышим. Попробуем посмотреть что это за чудо. А то, что платное не есть хорошо)
Dmitry10
> Конечно же NetWars Engine, только он идеально подходит для больших открытых
> миров, и особенно если будет ММО составляющая.
Есть примеры готовых игр или игр в разработке на данном движке?
pi-x-el
> Врубаешь куллинг, и не рисуются, так же как и на юнити можно сделать.
Получается куллинг по умолчанию выключен. Не знал про это. OK
pi-x-el
> А то, что платное не есть хорошо)
То что платное - это враньё, движок полностью бесплатный, в отличии от Unity, UE и CE.
> Есть примеры готовых игр или игр в разработке на данном движке?
Да, есть, и SDK есть, гугли, инфы много о движке.
Dmitry10
> Да, есть, и SDK есть, гугли, инфы много о движке.
Кроме шахмат и карт и простеньких примеров вывода текста и гуи ничего не нашел
pi-x-el
> Получается куллинг по умолчанию выключен. Не знал про это. OK
там довольно мудрёная система, но для качественного эффекта необходима такая мудрёность
предполагаю, проблему могут составить деревья и трава, которые от ветра колышатся (модифицируются в вершинном шейдере), да и прочие анимированные объекты с костной анимацией
а главное я бы на вашем месте подумал об определенных точках обзора. при которых куллинг будет скрывать минимум объектов и видно будет все равно дофига мелочевки
с одной стороны мелочевку можно батчить чтобы дравколы уменьшить, а с другой может этого и не хватить и нужен будет какой-то особый экстравагантный подход
или же вообще исключить такие случаи по левел дизайну
0xc0de
> Кроме шахмат и карт и простеньких примеров вывода текста и гуи ничего не нашел
шахматы хоть с открытым миром?
Chupakaber
> шахматы хоть с открытым миром?
На заднем плане какой-то мир виднеется :)
0xc0de
> На заднем плане какой-то мир виднеется :)
Ну, он открытый?
В конце 90-х все геймеры мечтали, что когда-то появятся игры, в которых можно будет бегать по огромному, открытому миру и делать все что угодно. Хотели? Получите! Уже в 2001 году выходит GTA 3, которая просто поражает своими масштабами и доступными для игрока возможностями. С этого момента игр с открытым миром становилось все больше, а вместе с ними и проблем, которые создают огромные масштабы проектов.
Сегодня поговорим о главных недостатках открытых миров в видеоиграх, которые зачастую все портят.
Естественно, в таких ситуациях сложно понять, о чем вообще идет речь в очередном квесте. Иногда сюжет постепенно вспоминается по ходу игры, но бывает и такое, что геймер не понимает, почему сейчас он решает те или иные задачи, потому что перед этим делал кучу ненужной чепухи. Такой проблемой грешат как не очень популярные игры, так и ААА-проекты вроде того же Red Dead Redemption 2, где можно потратить несколько часов на охоту или сбор каких-то ресурсов и забыть, на каком моменте остановился сюжет игры. Это очевидно проблема, потому что открытый мир не дает как следует погрузиться в историю.
ТОП 10: Лучшие кооперативные игры с открытым миром
Подборка игр с большим открытым миром, в которые можно поиграть с друзьями или знакомыми в кооперативном режиме.
Ужасные второстепенные задания
Скорей всего, игроделы еще долго не будут писать внятные сайд-квесты, потому что им это не нужно. В большинстве современных игр из всех побочных заданий встречается от силы 2-3, которые действительно увлекательные, а все остальное просто вызывает скуку. Это, опять же, серьезная проблема открытых миров, ведь разработчики начали заполнять их чем попало.
Лишние активности для игрока
Если затянутую основную кампанию и посредственные сайд-квесты еще можно простить, то вот что действительно делает проекты с открытым миром ужасными, так это куча ненужных активностей для галочки. Я говорю о зачистках аванпостов, захватах территорий, сборе каких-то предметов и подобных вещах, которые никак не двигают сюжет, а просто дают опыт, ачивки или в крайних случаях редкие предметы.
Все эти вещи созданы для того, чтобы заполнить пустой открытый мир в играх, но по сути, они никому не нужны и только вызывают раздражение. Наверняка со мной согласятся те, кто играл в Far Cry 5 или более поздние части франшизы. В них ненужные активности возвели в абсолют и вы больше времени убьете на зачистки деревень с сектантами и сбор всякого мусора, чем будете изучать открытый мир и погружаться в историю проекта.
Статичность виртуального мира
Я понимаю, что сделать открытый мир по-настоящему живым – задача не из простых, но ведь сегодня видеоигры уже находятся на каком-то невероятном уровне развития. Игроделы смогли реализовать реалистичную смену погоды и времени года, прописать внятный ИИ, чтобы виртуальные болванчики могли мыслить. Да что там говорить, уже даже живых актеров вставляют в игры, что добавляет им реализма. Тем не менее побороть проблему статичности разработчики не могут или не хотят, и это сильно бросается в глаза, когда находишься в виртуальном мире долгое время.
10 великих актеров, скрытых в ваших видеоиграх
Спрятанные актеры в видеоиграх. Бен Кингсли взошел на престол, Мишель Родригез снова сильная женщина, а Сэмюэл Л. Джексон устроил коррупцию в полиции.
Вынужденный гринд
Этот недостаток касается всех проектов с открытым миром, где присутствуют элементы RPG. Дело в том что в последнее время разработчики буквально грешат разделением открытого мира на области, которые доступны по достижению определенного уровня или после выполнения каких-то условий. То есть главный герой начинает свое путешествие в одной локации, чтобы попасть в следующую, ему нужно прокачаться. В противном случае новая локация либо вообще заблокирована, либо там его ждут настолько сильные враги, что лучше не терять время и вернуться в предыдущую для гринда.
В любой игре, где присутствует подобная механика, концепция открытого мира ломается. У игрока изначально появляются ограничения, хотя, казалось бы, в подобных условиях, где якобы вся виртуальная вселенная игры открыта, такого быть не должно. Мы же в реальной жизни можем ходить куда угодно, и нам не нужно, например, закончить школу, чтобы попасть в новый район в своем городе, а потом универ, чтобы путешествовать по разным городам, и только когда получим работу, откроем весь мир. Зачем это нужно в играх, я не пойму до сих пор.
Однообразные локации
С этой проблемой лучше всего справляется Ubisoft. Например, в The Division 2 можно найти массу запоминающихся мест, притом что события игры происходят в мегаполисах штата Вашингтон. Казалось бы, можно сделать от силы 5 спрайтов для зданий и просто чередовать их, но разработчики пошли дальше и отменно детализировали город. Вот такой подход идет открытому миру на пользу и заставляет любоваться им во время прохождения.
Я думаю, что все вышеперечисленные проблемы игровая индустрия сможет побороть еще ой как нескоро. Дело в том, что многим студиям это и не надо, они просто ставят свои удачные франшизы на конвейер и каждый год делают на них бабки. Им все равно, какие недостатки есть у их открытых миров, главное, что в игре присутствуют все самые хайповые штуки, которые ее продают.
Играть в Майнкрафт можно не только в одиночном мире, взаимодействуя исключительно с жителями деревни – существуют разные методы, позволяющие создать локальный или сетевой сервер, чтобы сгенерировать новый мир и начать исследовать его вместе с друзьями.
Предлагаю ознакомиться с разными способами создать сервер Minecraft для игры с друзьями по сети.
Вариант 1: Открытие одиночного мира для игры по LAN
Если ваши с другом компьютеры объединены в одну локальную сеть или хотя бы соединены с одной беспроводной точкой доступа, можно воспользоваться самым простым вариантом – открыть одиночный мир для игры по LAN. Для этого нужно выполнить пару простых действий.
Недостаток этого метода заключается в том, что он не всегда корректно работает из-за неправильных сетевых настроек или проблем в организации локальной сети. Если вы не знаете, как самостоятельно решать появившиеся ошибки, лучше перейдите к реализации одного из следующих вариантов.
Мощные игровые серверы для Minecraft от 3 руб./час
От 4 Гб ОЗУ, от 80 Гб на скоростном NVMe и стабильные 200 Мбит/сек
Вариант 2: Создание выделенного локального сервера Minecraft
Этот вариант тоже подойдет в том случае, когда вы с другом находитесь в пределах одной квартиры и подключены к локальной сети при помощи LAN-кабеля или Wi-Fi. Если вы еще не организовали подобное подключение, обязательно выполните его, а затем на всех компьютерах приступайте к общей настройке операционной системы, необходимой для присоединения к будущему серверу.
В качестве IP задайте 192.168.0.X , где вместо последней цифры вставьте любое число до 64. Маска подсети указывается как 255.255.255.255 . В завершение отправьте компьютер на перезагрузку. На других ПК сделайте то же самое, но последнюю цифру IP-адреса меняйте на неиспользованную ранее, чтобы при подключении не появились конфликтные ситуации.
Следующий этап – создание сервера для игры по локальной сети. В этом случае у пользователя появляется два разных варианта. Первый более оптимальный, поскольку позволяет создать полноценный сервер и далее модернизировать его модами или изменять настройки по желанию. Файлы пустого сервера Майнкрафт понадобится скачать с любого удобного сайта в интернете, задав соответствующий запрос поисковику. После этого войдите в директорию и откройте файл с настройками через любой текстовый редактор (файл server.properties).
Далее отредактируйте несколько строк для обеспечения нормального соединения. В первую очередь найдите server-ip=X и после знака равно впишите IP того компьютера, который выступает в качестве основного (тот IP-адрес, что создавался в предыдущем шаге). В строке server-port=N вписывается порт, обычно это 25565 . Осталось запустить сервер через присутствующий в директории файл start.bat .
Вариант 3: Организация сетевого подключения через Hamachi
Hamachi – самая популярная программа для организации виртуальных сетей. Она может использоваться геймерами для того, чтобы создавать одну сеть для совместной игры с друзьями, которые находятся за пределами локальной сети или не могут подключиться к ней по другим причинам. Каждый пользователь должен скачать Хамачи с официального сайта и создать учетную запись.
Вариант 4: Использование общедоступных серверов или Realms
Существуют общедоступные серверы Майнкрафт, на которых может играть огромное количество людей одновременно. Ничего не помешает вам с другом найти одинаковый сервер, подключиться к нему, пройти регистрацию и найти друг друга для дальнейшей игры. Учитывайте, что некоторые серверы доступны только для лицензионных версий Minecraft, а другие работают и с пиратскими.
Еще один вариант – покупка Realms на официальном сай те . В счет ежемесячной подписки у вас появляется возможность организовать сервер и подключить к нему до десяти игроков. Кликните по выделенной ссылке, чтобы ознакомиться с преимуществами этой подписки и решить, нужна ли она вам с друзьями.
Это были все возможные варианты организации совместной игры с друзьями в Minecraft по сети. Приятной игры вам и вашим друзьям!
Читайте также: