Pull to refresh
8
0
Макар @Raleyph

.NET & Python developer

Send message

Туториал по Unreal Engine: C++

Reading time12 min
Views170K
image

Blueprints — очень популярный способ создания геймплея в Unreal Engine 4. Однако если вы уже давно программируете и предпочитаете код, то вам идеально подойдёт C++. С помощью C++ можно даже вносить изменения в движок и создавать собственные плагины.

В этом туториале вы научитесь следующему:

  • Создавать классы C++
  • Добавлять компоненты и делать их видимыми для Blueprints
  • Создавать класс Blueprint на основе класса C++
  • Добавлять переменные и делать их изменяемыми из Blueprints
  • Связывать привязки осей и действий с функциями
  • Переопределять функции C++ в Blueprints
  • Связывать событие коллизии с функцией
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments34

Асинхронная (и не очень) загрузка данных в Unreal Engine 4

Reading time8 min
Views26K


Содержание:



Всем привет!

Сегодня я расскажу о том, как обращаться с ассетами на Unreal Engine 4 так, чтобы не было мучительно больно за бесцельно занятую память и стоны игроков за время загрузки вашей игры.
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments9

Сборка мусора в Unreal Engine

Reading time15 min
Views20K

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

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

Эта статья более релеватна к Unreal Engine 4.27 однако много всего работает так же и на версии UE 5.0 и на более низких версиях. Однако, стоит отметить, что, с версии 4.0 до 4.27 сборка мусора претерпела весьма значительные изменения и стала сильно лучше.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments1

Советы для начинающих (и не очень) разработчиков на Unreal Engine

Reading time17 min
Views38K

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

Надеюсь что описанные мною вещи будут вам интересны и полезны. Желаю приятного чтения :-)

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments21

Линейная алгебра для разработчиков игр

Reading time19 min
Views781K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →
Total votes 314: ↑296 and ↓18+278
Comments61

6 типовых сюжетов мировой литературы

Reading time5 min
Views73K
Исследователи изучили тексты более 1700 романов и обнаружили, что все их можно отнести к 6 сюжетным типам.


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

Благодаря новым технологиям интеллектуального анализа люди решили эту задачу. Профессор Мэтью Джокерс из Университета штата Вашингтон, а позже и исследователи из лаборатории компьютерных историй Вермонтского университета проанализировали тексты тысяч романов и выявили шесть основных типов историй — архетипов, — представляющих собой базовые структурные блоки для построения более сложных сюжетов. Вермонтские исследователи описали эти шесть форм повествования, лежащих в основе 1700 английских романов, следующим образом:

1. «Из грязи в князи» — постепенное улучшение положения от плохого к хорошему.
2. «Из князи в грязи» — падение от хорошего положения к плохому, трагедия.
3. «Икар» — взлет и падение.
4. «Эдип» — падение, взлет и снова падение.
5. «Золушка» — взлет, падение, взлет.
6. «Человек, загнанный в угол» — падение и взлет.

Исследователи применили анализ эмоциональной окраски — статистическую методику, часто используемую маркетологами для оценки публикаций в социальных СМИ.
Читать дальше →
Total votes 53: ↑40 and ↓13+27
Comments40

Создаём безукоризненную автодокументацию кода на Python с помощью Sphinx

Level of difficultyEasy
Reading time8 min
Views7.3K

В этой статье я расскажу о генераторе документации Sphinx, с помощью которого можно автоматически создавать документацию для модулей Python. Кроме того, я буду использовать шаблон проекта Cookiecutter Data Science в Visual Studio Code (VS Code), поскольку он легко интегрируется в Sphinx и имеет стандартизированную структуру директорий. Официальное пособие по использованию Sphinx — отличный ресурс для пользователей, которые хотят углубиться в детали. А моя статья — это краткое руководство по началу работы с этим инструментом.

Читать дальше →
Total votes 12: ↑12 and ↓0+14
Comments2

Архитектура в Unity-разработке: паттерн «Спагетти»

Reading time14 min
Views4.6K

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

Однако, куда бы я ни обращался и кого бы ни спрашивал, мнение было одним: я не должен гнаться за такими глупыми мечтами, Singleton — это всё, что мне нужно для создания приложений на Unity.

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

Читать далее
Total votes 20: ↑17 and ↓3+20
Comments5

Шпаргалка по безопасной сборке Docker-образов

Reading time17 min
Views19K

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

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Продолжаю рассказывать о безопасности в Docker. Под катом расскажу, как настроить сборку образов, обеспечить безопасность и добавить сканирование в пайплайн.
Читать дальше →
Total votes 53: ↑51 and ↓2+67
Comments7

Что нам недодали в C++

Level of difficultyMedium
Reading time12 min
Views24K

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

Читать далее
Total votes 64: ↑62 and ↓2+81
Comments177

Object oriented C

Reading time4 min
Views31K
Вам дали задание написать программу на С, а вы уже забыли как может работать программа, в тексте которой нет ни одного слова class или virtual? Или может быть вы влюблены в простоту и строгость ANSI C, но иногда вам не хватает объектно-ориентированных свойств языков более высокого уровня? Или просто интересно взглянуть на старый добрый С с немного другой стороны? В любом случае в данной статье я покажу несколько простых приемов, с помощью которых на C вполне можно думать и писать объекто-ориентированно.
Читать дальше →
Total votes 59: ↑51 and ↓8+43
Comments35

Туториал по Unreal Engine. Часть 9: Искусственный интеллект

Reading time14 min
Views108K
image

В индустрии видеоигр искусственным интеллектом (Artificial Intelligence, AI) обычно называют процесс принятия решений не управляемыми игроком персонажами. Он может быть простым: враг видит игрока и атакует. Или же более сложными, например, управляемый ИИ противник в стратегии реального времени.

В Unreal Engine создавать ИИ можно с помощью деревьев поведения. Дерево поведения (behavior tree) — это система определения поведения, используемого ИИ. Например, у него может быть поведение боя или бега. Можно создать дерево поведения, при котором ИИ будет драться с игроком, если его здоровье выше. Если оно ниже 50%, то он будет убегать.

В этом туториале вы научитесь следующему:

  • Создавать ИИ-сущность, которая может управлять элементом Pawn
  • Создавать и использовать деревья поведения и blackboard
  • Использовать AI Perception, чтобы дать Pawn зрение
  • Создавать поведения, чтобы Pawn мог ходить и атаковать врагов
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments4

Введение в Data classes

Reading time7 min
Views229K

Одна из новых возможностей, появившихся в Python 3.7 — классы данных (Data classes). Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных. Не смотря на то, что они используют другие механизмы работы, их можно сравнить с "изменяемыми именованными кортежами со значениями по умолчанию".



Введение


Все приведенные примеры требуют для своей работы Python 3.7 или выше

Большинству python-разработчикам приходится регулярно писать такие классы:


class RegularBook:
    def __init__(self, title, author):
        self.title = title
        self.author = author

Уже на этом примере видна избыточность. Идентификаторы title и author используются несколько раз. Реальный класс же будет ещё содержать переопределенные методы __eq__ и __repr__.


Модуль dataclasses содержит декоратор @dataclass. С его использованием аналогичный код будет выглядеть так:


from dataclasses import dataclass

@dataclass
class Book:
    title: str
    author: str
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments19

Изучаем Docker, часть 2: термины и концепции

Reading time6 min
Views239K
В первой части перевода серии материалов, посвящённых Docker, мы сделали общий обзор этой системы. В частности, мы говорили о том, почему технологии контейнеризации важны в наше время, о том, что такое контейнеры Docker, и о том, с чем их можно сравнить. Сегодня мы поговорим об экосистеме Docker и рассмотрим важные термины, с которыми вы можете столкнуться на пути изучения и использования Docker. Продолжив аналогию с разными вкусностями, представим, что наши термины — это пончики. Дюжина пончиков.

Часть 1: основы
Часть 2: термины и концепции
Часть 3: файлы Dockerfile
Часть 4: уменьшение размеров образов и ускорение их сборки
Часть 5: команды
Часть 6: работа с данными



Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments36

Безопасность в Docker: от правильной настройки хоста до демона

Reading time12 min
Views19K

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Помогаю клиентам обеспечивать защиту инфраструктуры и участвую в разработке новых решений компании в сфере ИБ. И сейчас я начала больше погружаться в тему разработки и изучать лучшие практики по обеспечению безопасности приложений.

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

Сегодня сложно представить современное приложение без технологий контейнеризации. Поэтому я решила подробно изучить вопросы безопасности в этом направлении и собрала рекомендации, как лучше подойти к работе с Docker-платформой. Подробности под катом!
Читать дальше →
Total votes 63: ↑63 and ↓0+68
Comments3

Зачем Программисту Микроконтроллеров Линейная Алгебра (или Как Найти Угол Между Векторами?)

Level of difficultyEasy
Reading time7 min
Views13K

В программировании микроконтроллеров часто возникает задача найти угол между векторами.

Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.

В данном тексте я приведу простое и понятное решение задачи вычисления угла между векторами на языке программирования Си.

Читать далее
Total votes 21: ↑18 and ↓3+21
Comments105

Как настроить библиотеку SFML C++ в Visual Studio 2022: статическая компоновка

Reading time3 min
Views4.2K

В этой статье рассказывается, как настроить ваши проекты SFML С++ со статической компоновкой используя интегрированную среду разработки программного обеспечения Visual Studio.

Установка SFML библиотеки

Загрузите библиотеку SFML c официального сайта. Выбираем самую последнюю версию софта, на сегодня это версия SFML 2.6.1.

Читать далее
Total votes 5: ↑4 and ↓1+5
Comments16

Микросервис на Python+ FastAPI

Level of difficultyEasy
Reading time19 min
Views22K

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

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

В микросервисной архитектуре приложение разбивается на несколько отдельных служб, которые выполняются в отдельных процессах. Существует другая база данных для разных функций приложения, и службы взаимодействуют друг с другом с использованием HTTP, AMQP или двоичного протокола, такого как TCP, в зависимости от характера каждой службы. Межсервисное взаимодействие также может осуществляться с использованием очередей сообщений, таких как RabbitMQ , Kafka или Redis .

Читать далее
Total votes 12: ↑11 and ↓1+14
Comments7

Flask для начинающих

Level of difficultyEasy
Reading time8 min
Views87K

Как начать работать с Flask

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

Вы новичок в программировании и мечтаете о создании собственных веб-приложений? Эта статья — ваш ключ к пониманию Flask, одного из самых доступных и гибких веб-фреймворков на Python. От установки и простых примеров до работы с данными и базами данных — мы покрываем все, что вам нужно для старта.

За 15-20 минут чтения вы получите не только теоретические знания, но и практические советы от опытного разработчика. Присоединяйтесь к миру веб-разработки и откройте для себя, как просто и увлекательно может быть создание ваших первых веб-приложений с Flask!

Читать далее
Total votes 14: ↑12 and ↓2+11
Comments39

Information

Rating
Does not participate
Location
Украина
Registered
Activity

Specialization

Software Developer, Game Developer
Middle
Python
C#
C++
Game Development
Software development
SQL
Git
PostgreSQL
OOP
.NET