Как стать автором
Обновить
4
0

программист

Отправить сообщение

От int main() до BeginPlay: как происходит инициализация Unreal Engine под капотом

Время на прочтение16 мин
Количество просмотров18K

Одна из самых простых и базовых концепций в программировании игр — это идея игрового цикла. При запуске вашего проекта происходит его инициализация, после чего игровой цикл действует до тех пор, пока игрок хочет продолжать игру: каждый кадр вы обрабатываете ввод, обновляете состояние игрового мира и выводите результат на экран. Когда игрок закрывает игру, происходит очистка данных, и на этом все заканчивается. 

Но когда вы пишете игровой код на Unreal Engine, вы не имеете дело с игровым циклом напрямую. Вы не начинаете работать сразу с основной функцией — сначала вы определяете подкласс GameMode и переопределяете функцию под названием InitGame. Или пишете одноразовые классы Actor и Component и переопределяете их функции BeginPlay или Tick для добавления собственной логики. Это самый минимум того, что вам нужно сделать: обо всем остальном движок позаботится за вас.

Unreal Engine также предлагает вам как программисту мощный и гибкий инструментарий: конечно, он имеет открытый исходный код, но также возможно и расширение несколькими другими способами. Даже если вы только начинаете работать с этим движком, было бы не лишним получить представление о его GameFramework: о таких классах, как GameMode, GameState, PlayerController, Pawn и PlayerState.

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

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии2

Онлайн шутер на Unreal Engine 4 за 90 часов (видео создания + исходники)

Время на прочтение5 мин
Количество просмотров62K
Привет, харб! Примерно год назад я выкладывал статью о том, как я в прямом эфире создал выживалку за 150 часов. На этот раз хочу представить вам сетевой шутер, который я создал за 25 заходов по 3 — 4 часа. Всего вышло около 90 часов и в итоге мы создали онлайн шутер, в который сыграли вместе со зрителями.

image

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

Несмотря на чистое время, данный проект занял примерно 10 месяцев. Я делал большие перерывы в стримах, но тем не менее, закончил разработку и теперь он доступен всем бесплатно и без смс.
Если вас интересуют подробности, записи стримов, исходники или билд игры с сервером в комплекте, предлагаю прочитать дальше под катом!
Всего голосов 64: ↑63 и ↓1+62
Комментарии27

Unreal Engine 5 задает новую планку игровой реалистичности

Время на прочтение3 мин
Количество просмотров89K


Компания Epic Games впервые продемонстрировала возможности игрового движка Unreal Engine 5. Одной из главных целей его создания было достижение исключительной фотореалистичности, сравнимой только с AAA-блокбастерами и самой жизнью.

Unreal Engine 5 поддерживает ПК, Mac, консоли текущего и нового поколения, iOS и Android. Полноценный релиз движка ожидается в следующем году.

В новом движке выделяются две ключевые области:

  • Первая ― полностью динамическое глобальное освещение, мгновенно реагирующее на изменение сцены. Теперь нет необходимости ограничиваться игрой со статичным миром ― можно проводить итерации над ним чрезвычайно быстро. Новая система освещения носит название Lumen.
  • Вторая ― виртуализированная геометрия. С UE5 художникам не обязательно задумываться о подсчете полигонов или о том, сколько места в памяти системы они займут. Можно использовать ассеты кинематографичного качества в движке напрямую, загружать модели из ZBrush и данные фотограмметрии, не тратя время на оптимизацию уровней детализации или понижение качества для того, чтобы вписаться в нужную частоту кадров. Эта технология получила название Nanite.

Теперь рассмотрим все нововведения на примере игрового демо для PlayStation 5.
Всего голосов 91: ↑90 и ↓1+89
Комментарии250

Туториал по Unreal Engine. Часть 1: знакомство с движком

Время на прочтение12 мин
Количество просмотров665K
image

Unreal Engine 4 — это набор инструментов для разработки игр, имеющий широкие возможности: от создания двухмерных игр на мобильные до AAA-проектов для консолей. Этот движок использовался при разработке таких игр, как ARK: Survival Evolved, Tekken 7 и Kingdom Hearts III.

Разработка в Unreal Engine 4 очень проста для начинающих. С помощью системы визуального создания скриптов Blueprints Visual Scripting можно создавать готовые игры, не написав ни строчки кода! В сочетании с удобным интерфейсом это позволяет быстро изготавливать рабочие прототипы.

В этой части туториала по Unreal Engine 4 мы ознакомимся с основными возможностями программы. Вот основные темы, которые будут в нём рассмотрены:

  • Установка движка
  • Импорт ассетов
  • Создание материалов
  • Использование Blueprints для создания объектов с простейшими функциями
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии10

Подкаст «Хочу в геймдев» #24 — текстовая версия

Время на прочтение4 мин
Количество просмотров4K

Двадцать четвертый выпуск - мы говорим о профессии Трафик-менеджер в игровой индустрии. Что это за профессия, насколько она востребована? Чем занимается Трафик-менеджер? Что нужно, чтобы устроиться на такую работу? Об этом и не только вы узнаете в 24-м выпуске! Гости подкаста: Алексей Смолдырев - руководит маркетинговым направлением 101XP и Максим Воробьёв - Digital Director CityAds Media.          

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии1

Релиз CLion 2021.1: глобальный анализ потоков данных, улучшения для удаленной работы, постфиксное автодополнение

Время на прочтение8 мин
Количество просмотров4.5K

Привет, Хабр!

В JetBrains стартовал новый релизный год: все наши десктопные продукты обновились или обновятся в самое ближайшее время. Сегодня мы хотим поговорить о CLion 2021.1 — новейшей версии нашей кроссплатформенной IDE для разработки на C и C++.

В этом обновлении много яркого и интересно
Всего голосов 12: ↑10 и ↓2+8
Комментарии73

Пишем unit тесты так, чтобы не было мучительно больно

Время на прочтение6 мин
Количество просмотров11K


Любую задачу в программировании можно выполнить массой разных способов, и не все они одинаково полезны. Хочу рассказать о том, как можно накосячить при написании модульных тестов. Я пишу мобильные приложения уже 6 лет, и в моем «багаже» много разных кейсов. Уверен, что кому-то будет полезно.
Читать дальше →
Всего голосов 9: ↑7 и ↓2+5
Комментарии1

Самые полезные новинки C++ 20

Время на прочтение6 мин
Количество просмотров13K


В сентябре прошлого года профильный комитет ISO утвердил С++ 20 в качестве текущей версии международного стандарта. Предлагаю ознакомиться с самыми полезными и долгожданными изменениями нового стандарта.

Библиотека концепций C++


Библиотека определяет фундаментальные понятия, которые могут быть использованы для диспетчеризации функций и проверки аргументов шаблона во время компиляции, на основе свойств типов. Концепции нужны для того, чтобы можно было избежать логических противоречий между свойствами типов данных внутри шаблона и таковыми входных параметров. Концепция должна определяться в пределах пространства имен и имеет следующий вид.
Читать дальше →
Всего голосов 46: ↑31 и ↓15+16
Комментарии2

Современный C++ нас не спасет

Время на прочтение5 мин
Количество просмотров22K

Я часто критикую небезопасные при работе с памятью языки, в основном C и C++, и то, как они провоцируют необычайное количество уязвимостей безопасности. Моё резюме, основанное на изучении доказательств из многочисленных крупных программных проектов на С и С++, заключается в том, что нам необходимо мигрировать нашу индустрию на безопасные для памяти языки по умолчанию (такие как Rust и Swift). Один из ответов, который я часто получаю, заключается в том, что проблема не в самих С и С++, разработчики просто неправильно их готовят. В частности, я часто получаю в защиту C++ ответ типа: "C++ безопасен, если вы не используете унаследованную от C функциональность" [1] или аналогичный, что если вы используете типы и идиомы современного C++, то вы будете застрахованы от уязвимостей типа повреждения памяти, которые терзают другие проекты.

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

Читать далее
Всего голосов 52: ↑32 и ↓20+12
Комментарии313

Чистая архитектура. Часть II — Парадигмы программирования

Время на прочтение4 мин
Количество просмотров25K

Это серия статей — вольный и очень краткий пересказ книги Роберта Мартина (Дяди Боба) «Чистая Архитектура», выпущенной в 2018 году.

Читать далее
Всего голосов 20: ↑15 и ↓5+10
Комментарии10

Vulkan. Руководство разработчика. Непрограммируемые стадии конвейера

Время на прочтение11 мин
Количество просмотров4.8K


Я работаю переводчиком в компании CG Tribe в Ижевске и здесь публикую переводы Vulkan Tutorial (оригинал — vulkan-tutorial.com) на русский язык.

Сегодня я хочу представить перевод новой главы раздела, посвященного графическому конвейеру (Graphics pipeline basics), которая называется Fixed functions.

Содержание
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии3

Стандарт C++20: обзор новых возможностей C++. Часть 1 «Модули и краткая история C++»

Время на прочтение10 мин
Количество просмотров65K


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это первая часть, рассказывающая о модулях в современном C++. Если вы предпочитаете снайдеркатам краткие изложения, то добро пожаловать в статью.

Update. К статье добавлены правки и комментарии Антона Полухина.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии74

Методы организации взаимодействия между скриптами в Unity3D

Время на прочтение10 мин
Количество просмотров149K

Вступление


Даже средний Unity3D проект очень быстро наполняется большим количеством разнообразных скриптов и возникает вопрос взаимодействия этих скриптов друг с другом.
Данная статья предлагает несколько различных подходов к организации таких взаимодействий от простого до продвинутого и описывает к каким проблемам может привести каждый из подходов, а так же предложит способы решения этих проблем.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии34

Книга «Unity и C#. Геймдев от идеи до реализации. 2-е изд»

Время на прочтение16 мин
Количество просмотров28K
image Привет, Хаброжители!

Джереми Гибсона Бонд задумывая эту книгу, ставил перед собой простую цель: познакомить вас со всеми инструментами и передать начальные знания, необходимые для достижения успеха в разработке игр и прототипов. Автор постарался втиснуть в эту книгу максимальный объем знаний. В отличие от многих других книг, эта сочетает обе дисциплины — проектирование игр и цифровую разработку (то есть компьютерное программирование) — и обертывает их практикой итеративного прототипирования. Появление продвинутых и относительно простых в использовании игровых движков, таких как Unity, еще больше упростило создание прототипов, выражающих концепции игрового дизайна, и увеличило ваши шансы стать квалифицированным (и востребованным) дизайнером игр.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии7

Unity: процедурное редактирование Mesh

Время на прочтение16 мин
Количество просмотров13K
Преобразование моделей «на лету» — нередкая практика в симуляции физики деформаций, а также в играх с динамически генерируемым и изменяемым контентом. В таких случаях удобно применять методы процедурного редактирования и создания геометрии. Последние часто позволяют сэкономить заветные байты при передаче подгружаемых из сети данных. Кроме того — это весело!

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

Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии9

MVC в Unity со Scriptable Objects. Часть 1

Время на прочтение5 мин
Количество просмотров13K
MVC (Model-View-Controller) — это схема, предполагающая разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента, чтобы каждый из них можно было независимо модифицировать. Разработчик Cem Ugur Karacam поделился своим опытом программирования в Unity и коротко рассказал о Scriptable Objects. Мы представляем перевод его статьи, опубликованной на сайте dev.to.

Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии4

Unity и MVC: как прокачать разработку игры

Время на прочтение13 мин
Количество просмотров81K
От переводчика
Привет, Хабр!

Я ненастоящий сварщик и перевод статьи дался мне тяжело, поэтому я назову его вольным — заранее очищу совесть, если где-то слишком сильно перефразировал оригинал. Буду рад указаниям на ошибки перевода, грамматики и т.п. в личку.

Перевод публикую с разрешения сайта Toptal, где выложен оригинал автора Eduardo Dias da Costa.

Обычно программисты знакомятся с профессией, начиная с Hello World. Затем ставят всё большие и большие цели и каждая новая задача приводит к важному уроку: чем больше проект, тем запутаннее код.


image

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


Поэтому существуют шаблоны проектирования; они — сборники правил для стандартизированного структурирования проекта, которые помогают разделить и организовать большую кодовую базу, и упростить работу с незнакомым кодом.

Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии9

Перевод книги Эндрю Ына «Страсть к машинному обучению» Главы 30 — 32

Время на прочтение6 мин
Количество просмотров5.7K

предыдущие главы


30. Интерпретация кривой обучения: Большое смещение


Предположим, ваша кривая ошибок на валидационной выборке выглядит следующим образом:
image


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


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


Предположим, мы добавили на наш график кривую зависимости величины ошибки от количества данных тестовой выборки и получили следующую картину:

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Перевод книги Эндрю Ына «Страсть к машинному обучению» Глава 33

Время на прочтение3 мин
Количество просмотров4.9K

предыдущие главы


Сравнение с качеством, доступным человеку


33. Зачем сравнивать с уровнем качества, доступным человеку


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


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

Читать дальше →
Всего голосов 3: ↑3 и ↓0+3
Комментарии1

Хватит всё подряд называть ИИ

Время на прочтение5 мин
Количество просмотров20K
Хорошая новость в том, что я обнаружил много проблем. Плохая новость в том, что вы одна из них.

Большинство менеджеров и маркетологов называют искусственным интеллектом всё подряд: пылесосы, игрушечных роботов-трансформеров и даже подбор мобильных тарифов. Это в тренде и хорошо продаётся, только одна проблема — даже учёные не рискуют говорить, что создали ИИ.

Решили разобраться в определениях: можем ли мы вообще говорить об искусственном интеллекте, чем он отличается от машинного обучения и справедливо ли презрительно поднимать брови, когда мы видим очередную рекламу с ИИ.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии47
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность