
Просто о сложном: первая часть из серии статей на тему создания сетевого чата в Unity с использованием Netcode for GameObjects. Для тех, кто начинает разбираться в сетевой логике.
Инструмент разработки 2D/3D-игр
Просто о сложном: первая часть из серии статей на тему создания сетевого чата в Unity с использованием Netcode for GameObjects. Для тех, кто начинает разбираться в сетевой логике.
Я уже несколько лет провожу геймджемы и постоянно вижу холивары вокруг судейского фидбека. Да что за сын маминой подруги этот «фидбек», почему за ним так гоняются?
Создание сотен локаций вручную непрактично для инди-разработчиков, а алгоритмы шума о которых я писал ранее ограничены. Искусственный интеллект, такой как MidJourney и NVIDIA GauGAN2 (интегрирована в NVIDIA Canvas, бесплатно доступный для пользователей с видеокартами NVIDIA RTX), предлагает новые возможности: нейросети генерируют текстуры, биомы и концепт-арт с высокой детализацией.
Однажды на собеседовании меня попросили привести примеры написанного мной кода: один — которым я наиболее горжусь, и другой — который я считаю наиболее неудачным. Недолго думая, я осознал, что на оба вопроса у меня готов ответ, и это один и тот же фрагмент кода. Горжусь я им потому, что, пожалуй, из всей моей практики именно этот код оказался наиболее весом, а стыжусь из-за него, так как, по мнению большинства из его читателей, этот код начался с костыля, который затем стали развивать:
В рамках данной статьи будет рассмотрена библиотека Uniton Connect, с помощью которой можно быстро реализовать подключение TON кошельков и отправку транзакций.
Когда мне было 16, я устроился работать в небольшую студию. Это была по факту официальная работа: с реальными задачами, пайплайном, дедлайнами и даже большим издателем. Тогда это казалось чем-то невероятным. Игра, над которой мы работали, выглядела амбициозно. У неё были красивые промо, целевая аудитория, маркетинг — всё как у взрослых.
А в центре команды был парень, старший разработчик, которому на тот момент было 23. Для меня он был почти как герой: я только начинал, а он уже 7 лет программировал. Уверенный, спокойный, очень самостоятельный. Я всерьёз думал, что именно к этому и стоит стремиться.
Но потом к нам присоединились более опытные ребята. Разработчики, у которых за плечами были и запущенные проекты, и провальные — но главное — была реальная практика и мышление архитектора. Они сразу начали задавать вопросы: — Почему у нас 6000 строк в одном скрипте? — Почему нет нормального разделения логики? — Почему переменные называются a
, b1
, mainLogic
, veryImportantManager
?
Код, который мы считали рабочим, оказался большой горой хрупкого говнокода, которая могла рухнуть от любого изменения. И когда она рушилась — её латали так же вслепую. Без юнит-тестов, без понимания, почему оно работает. Главное, чтобы запускалось.
🧨 А потом проект провалился. Несмотря на издателя
Монетизация — это про поиск баланса между эмоциями игроков и заработком студии. За несколько лет работы над играми на Unity мы перепробовали кучу подходов: от назойливой рекламы до хитрых подписок. В этой статье расскажу, как выбирать между основными моделями монетизации.
Всем привет! Меня зовут Владимир, в этом году я заканчиваю обучение в магистратуре по направлению «Программирование игр» в одном из федеральных университетов. В рамках своей выпускной квалификационной работы я решил затронуть довольно актуальную для Unity‑разработчиков тему — сравнение архитектурных подходов MonoBehaviour и Zenject при создании игрового проекта.
Что меня сподвигло на такое исследование? Начнем с того, что, в сфере разработки игр я относительно недавно и опыта работы над большими проектами у меня нет. Когда была поставлена задача выбрать тему диплома, больших раздумий не было нужна игра, для «Я Игр», но как её делать? Практически с каждого обучающего ресурса, говорят не использовать подход Monobehaviour для больших проектов, так как это сложно расширяемая архитектура. Хотя на мой взгляд это не совсем верно. Именно с этого началась работа над темой моей ВКР.
Целью которой поставить точку в спорах в моей голове об архитектурных подходах и прийти к более оптимальному выбору.
И параллельно, подтвердить или опровергнуть гипотезу «Более сложная архитектура упрощает разработку».
Любой Unity-разработчик знаком с атрибутом [SerializeField]
, который позволяет сериализовывать непубличные члены класса и, соответственно, отображать их в инспекторе. Но, в силу его ограниченности, позже начали появляться и другие способы сериализации.
Попробую кратко рассказать, какие альтернативы используются, зачем все они нужны, как работают и, о чём не любят писать в кликбейтных постах, какие подводные камни могут скрывать.
Первые шаги в дополненную реальность. Простой туториал по AR Foundation в Unity для начинающих. Создай свое первое AR-приложение.
Всё проще, чем кажется!
Простое и понятное руководство по Unity Netcode for GameObjects, которое поможет начинающим разработчикам (и не только!) сделать первый шаг в мир сетевых игр.
Реализация системы управления волнами для создания захватывающих столкновений с противниками — это достаточно эффективный способ постепенно увеличивать сложность, поддерживая вовлеченность игроков. В этом руководстве я поделюсь с вами своим опытом реализации WaveManager'а в Unity, включая создание скриптов, генерацию врагов и интеграцию пользовательского интерфейса.
Представьте: Вы добавляете новую механику, а игра ломается в пяти местах. Вы тратите часы на поиск того самого скрипта, который неожиданно зависит от ваших изменений. Знакомо?
Zenject (Extenject) решает это раз и навсегда.
Эта статья о том, что такое zenject и как им пользоваться.
В этой статье мы разберем неявное использование многопоточности с Unity Job System: узнаем про преимущества использования такого подхода перед явным созданием потоков, поговорим про неуправляемую память, про преимущества неуправляемой памяти перед управляемой и многое другое...
Вводные: всегда хотел работать в геймдеве, поэтому решил начать с малого — попробовать сделать хоть какой‑то прототип игры с нуля. С C# знаком на среднем уровне, с блендером на нулевом), с Unity чуть‑чуть (делал тетрис, и пытался сделать мультиплеер для него поверх Steam через Spacewar).
Изначально идея была сделать что‑то на минут 10–15, как обычно в голове много идей и мелочей, реализация которых поможет создать более приятный геймплей, но когда доходит дело до реализации, то приходит понимание, что не все так легко, как кажется.
Выбор пал на создание какой‑нибудь простенькой хоррор игры, которую необходимо пройти, т.к. опыта в Blender у меня нет, я решил сделать что‑то максимально простое, поэтому я посмотрел пару гайдов на ютубе и начал «творить».
Решил сделать все в виде тайлов, из которых затем соберу комнаты и коридоры между ними, больше всего времени я потратил на создание модели врага, которая будет бегать за игроком.
Стена была сделана из нескольких плоскостей, на которые была натянута текстура кирпичной кладки, предварительно пикселизованная.
Создайте живые движения персонажей. Туториал по процедурной анимации в Blender и её импорту в Unity.
Я хочу поделиться практическим подходом, который позволяет переиспользовать ваш игровой код на C# из Unity на .NET-бэкенде — это даёт возможность верифицировать действия игрока, защищает от читерства и обеспечивает мгновенный отклик без лагов.
Я использую такую архитектуру в продакшене уже более 10 лет, и она отлично зарекомендовала себя как надёжное и эффективное решение. В этой системе один и тот же код выполняется и на клиенте (для мгновенной обратной связи), и на сервере (для авторитетной проверки).
Как это работает:
• Команды игрока мгновенно выполняются на клиенте.
• Та же команда вместе с хэшем состояния отправляется на сервер и повторно выполняется для верификации.
• Любые попытки изменить код или память клиента будут обнаружены и отклонены сервером.
• Игровая логика вынесена в .dll-плагин, который используется и в Unity-клиенте, и на .NET-бэкенде.
В статье есть полноценный пример на Unity («Connect Four»), открытый исходный код и подробное описание архитектуры.
Как работает процедурная генерация в играх? В этой статье разбираемся с основными понятиями и алгоритмами процедурной генерации.
Меня зовут Алексей Цуцоев, я разработчик мобильных приложений в KODE, и я хочу поделиться историей того, как мы внедряли игру в уже готовое React-Native приложение. Как выбирали технологию, с какими трудностями столкнулись и к каким выводам пришли.
В Unity есть отличный функционал по созданию 2D Tilemap, который позволяет реализовать красивые изометрические и 2D миры.
Но, что если нужно создать именно 3d Tilemap?
В этой статье я расскажу как это сделать без единой строчки кода.