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

Разработка игр *

Разработка игр

Сначала показывать
Порог рейтинга
Уровень сложности

Ты надизайнил, а мне делать: как наладить взаимодействие между отделами дизайна и разработки

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

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

Эта статья написана по мотивам одноименного доклада, с которым я и моя сестра Алина выступали на конференции Talents in Games в декабре 2021 года. Я — дизайнер, сестра — разработчик, и уже четвертый год мы работаем в одной продуктовой команде. Сейчас наши команды хорошо ладят и научились решать конфликты, но путь к взаимопониманию и здоровым отношениям между дизайнерами и разработчиками для нас был непростым и довольно долгим.

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

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

Недельный геймдев: #77 — 10 июля, 2022

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

Из новостей: доступна бетка PixelBasher, Unity уволила 4% сотрудников, Nexters уволит 235 человек, Godot 4 добавляет режим Movie Maker, Arm представила свой первый графический процессор с аппаратной трассировкой лучей для Android, ЕС обязала Apple и Google разрешить установку приложений со сторонних площадок.

Из интересностей: круглый стол о перспективах российской игровой индустрии; игра, разошедшаяся тиражом в 500 тысяч копий, но вы про неё даже не слышали; встраивание JS в свой игровой движок.

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

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 3. Первый подход к асинхронности

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

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

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

Но, к счастью, существует и третий вариант — кооперативная многозадачность с помощью системного вызова select и его аналогов (poll, epoll и других). Он позволяет мультеплексировать несколько задач в одном потоке выполнения и в сущности является обычной синхронной программой. А потому никаких дополнительных трат процессорного времени и времени разработчиков не требуется.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 4

Постмортем: портирование Skyforge на Nintendo Switch

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

Портирование игр не всегда проходит беспроблемно — одни проекты можно легко портировать, другие — нет. Все зависит от типа игры, платформ и других факторов.

После успешного переноса Warface на Switch мы в студии Allods Team решили портировать нашу MMO Skyforge. Что-то далось очень легко, а что-то — сложнее. Ниже мы перечислим пять вещей, с которыми все прошло как надо, и пять вещей, с которыми возникли трудности.

Читать далее
Всего голосов 47: ↑44 и ↓3 +41
Комментарии 9

Истории

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 2. Блокирующие сокеты и многозадачность

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

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

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

Как происходит генерация мира Minecraft

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

Задумывались ли вы когда-нибудь, сколько на нашей планете песчинок? По грубым оценкам, более 7 квинтиллионов! Это 7 с 18 нулями. И всё-таки это даже меньше половины количества уникальных миров в Minecraft. Как же Minecraft и другим похожим играм удаётся создавать такие сложные, красивые, однако полностью процедурные миры? В этой статье я расскажу, как игра генерирует свои миры, от самой высокой горы до самой глубокой пещеры.

Часть 1: процедурная генерация


Для многих из вас Minecraft может быть первой (а может быть, и единственной) игрой, в которой миры не творятся вручную дизайнером уровней, а создаются процедурно.

Однако первой игрой с процедурно сгенерированным миром является «Elite», первая версия которой вышла для компьютера BBC Micro в 1984 году. Это прапрадед относительно новой «Elite: Dangerous», выпущенной в 2014 году.


Автоматическая генерация новых миров может казаться привлекательным способом ленивого создания бесконечного контента для игры. Однако на самом деле всё наоборот! Чтобы научить машину тому, как выглядит хороший уровень… нужно быть очень хорошим программистом и дизайнером уровней.

Контент должен быть достаточно разнообразным, чтобы выглядеть свежим, но не настолько разнообразным, чтобы казаться атипичным. И необходимо создавать миры, на которые не просто интересно смотреть, но которые обеспечивают справедливую с точки зрения игрока сложность.
Читать дальше →
Всего голосов 67: ↑67 и ↓0 +67
Комментарии 17

Разработка собственного плагина для сервера Minecraft

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

Еще с детства я начал покорять бесконечные просторы Minecraft. Естественно о разработке в то время никакой речи не шло. Но с недавних пор загорелся идеей создать о свой проект серверов.

В данной статье расскажу свой первый опыт написания плагина для сервера Minecraft. На превью можно заметить результат.

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

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 1. Введение

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

Дабы исчерпать до дна тему сокетов в Python я решил изучить все возможные способы их использования в данном языке. Чтобы всех их можно было испытать и попробовать на зуб, были созданы 19 версий простого эхо-сервера: от примитивного использования класса socket до asyncio. Блокирующие и неблокирующие сокеты, процессы и потоки, select'ы и selector'ы, коллбеки и сопрограммы — все эти темы расположены в эволюционном порядке, чтобы один пример плавно перетекал в другой.

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

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

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

История создания игры в одиночку

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

В игры я люблю играть с детства и играя на работе в очередную игру на телефоне захотелось что то создать самому. Из знаний были только какие то остатки основ программирования на турбо паскале. Начал шерстить интернет и понял что для начала нужно выбрать движок для игры. Игру я собирался делать в 2Д и пошерстив инет нашел несколько вариантов а именно: Unity, Constructor, GameMaker. И поизучав их понял что в unity лучше использовать для 3Д и там все же нужно знать C#. Constructor был простым для новичка как и GameMaker но отказался от него из-за того что там нужно было платить ежемесячно, поэтому выбор сделал в пользу GameMaker.

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

Язык описания квестов или как сделать квестовую систему на Unity

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

Привет, habr! Это моя первая статья, поэтому будет хорошим тоном представиться. Я независимый разработчик мобильных игр. Два года работаю на Unity и прогаю на C#. Выпустил одну инди-игрушку, которая хоть и не выстрелила, и не принесла денег, получила неплохие отзывы.

Эта статья про один из возможных способов создания расширяемой системы квестов, которая может пригодится во множестве игр.

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

Создание Survival Horror в стиле RE2 на Unreal Engine и С++. Базовая настройка и импорт ассетов

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

Начинаем создавать что-то вроде Survival Horror в стиле Resident Evil 2 Remake, используя Unreal Engine 4 и С++.

Читать далее
Всего голосов 6: ↑1 и ↓5 -4
Комментарии 1

Как продавать шкуры и ловить троллей в Telegram с помощью Kafka, Kubernetes, PostgreSQL и Redis

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

Работаю в IT больше 15 лет. Чем только не занимался, но всегда следовал правилу - каждые майские праздники я пытаюсь применить на практике что-то новое.

В этом году я прочитал книгу Event Driven Microservices и загорелся потрогать Kafka как настоящий брокер событий, а не сообщений.

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

Я все детство провозился с ASCII играми в DOS и идея пришла сама собой.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 23

Нативный маркетинговый инструмент App Store и Google Play или Как рассказать об апдейте прямо на странице приложения

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

Лайв-опсами можно назвать по сути любые апдейты и ивенты в приложении. Раньше в App Store и Google Play не было нативных маркетинговых инструментов для их продвижения, затем появились лайв-опс карточки. Они могут прямо в сторе познакомить пользователя с игровыми ивентами, и ему даже апдейт качать не придется. 

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

Читать далее
Всего голосов 38: ↑37 и ↓1 +36
Комментарии 1

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн

Создал свою первую в жизни игру

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

Всем привет, это Денис Вебер.

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

Как обычно, специально для тех, кому больше нравится формат видео, а не текст, видео я оставлю в конце статьи.

Читать далее
Всего голосов 32: ↑27 и ↓5 +22
Комментарии 3

Основы линейной алгебры для 3D-приложений. Урок 3

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

Завершающий урок из цикла про линейную алгебру для 3D-приложений от Александра Паничева — ведущего разработчика логики в UNIGINE. В прошлом уроке мы разобрали углы Эйлера и кватернионы, а в этот раз говорим о матрицах и подводим итоги.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 2

Софтланч продукта с использованием метрик минимальной жизнеспособности

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

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

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

UNIGINE Open Air 2022: тусовка профессионалов разработки игр, VR и 3D-графики

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

Как всегда, внезапно, мы решили провести Open Air. Такое уже было в 2012 и 2013 годах, и вот, спустя 9 лет, мы снова собираем разработчиков, пользователей и единомышленников UNIGINE под Сибирским небом, чтобы провести выходные в кругу близких по духу людей.

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

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

Трудно ли создать свой Minecraft сервер?

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

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

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

Итак, "разработка" началась 29 января, мы придумали название, купили домен и начали смотреть, как вообще создавать сервер. Первая версия нашего сайта была готова уже через неделю, оставалось только наполнить донатами, платёжкой и некоторой другой информацией сайт. Донаты можно было легко добавить через админ панель, которую наш товарищ реализовал для дальнейшего развития.

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

Эволюция игрового фреймворка. Постановка проблемы

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

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

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

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

Как тут быть, что поделать? Попробуем разобраться.

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

Недельный геймдев: #76 — 26 июня, 2022

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

Из новостей: AMD открыла исходники FSR 2.0, актуальная заметка от Forbes по поводу положения геймдева в стране и про сокращения целых студий, Unity Gaming Services вышли из бетки.

Из интересностей: искусственный интеллект в DOOM, результаты за 100 дней в Blender 3D и история ошибок, работа над Horizon Forbidden West в качестве технического художника, внимация в анимешном стиле в Blender.

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 1

Вклад авторов

Работа