Это четвёртая статья путеводителя по разработке многопользовательских игр, где я пытаюсь последовательно и в одном месте собрать знания, которые потребуются для осознанной разработки мультиплеерного проекта.
Рубрика «multiplayer»
Автостопом по мультиплееру. Часть 4: Авторитарность и Топологии
2024-11-02 в 10:19, admin, рубрики: Gamedev, multiplayer, p2p, unity, игровая разработка, мультиплеер, разработка игр, серверПять важных уроков о балансе в играх
2020-02-13 в 4:38, admin, рубрики: multiplayer, баланс в играх, Дизайн игр, игровой баланс, игровые механики, Игры и игровые приставки, многопользовательские игры, разработка игрВсе игры, которые мы создавали нашей студией Ronimo, делали большой упор на соревновательный многопользовательский режим. Разработка дизайна, тестирование и итеративное улучшение этих игр, и в особенности нашего самого большого хита Awesomenauts, позволили нам узнать много нового о балансе. Сегодня я хочу поделиться наиболее важными уроками, полученными в процессе работы.
1. Слишком сильный намного хуже слишком слабого
На первый взгляд кажется, что с точки зрения игрового баланса слишком слабый и слишком сильный одинаково плохи: и то, и другое означает, что где-то есть ошибка в балансе и его нужно улучшать. Это верно, но на практике слишком сильные элементы оказывают гораздо более сильное воздействие, чем слишком слабые.
Причина заключается в том, что игроки стремятся к тому, что самое сильное, и используют только это. Например, в Awesomenauts есть 34 персонажа. Если трое из них будут слишком слабыми, то большинство игроков не будет ими играть, и у них на выбор останется 31 персонаж. То есть у них по-прежнему большой выбор и присутствует разнообразие. С другой стороны, если бы три персонажа были слишком сильными, то игроки играли бы только этими персонажами и не обращали внимания на остальных. Это бы сделало игру очень однообразной и она бы быстро наскучила.
Это знание можно использовать как грубый инструмент в ситуация, когда нет возможности использовать решение лучше. Например, если что-то слишком сильное, но только при определённых условиях, то вы можете решить ослабить (понерфить) этот элемент, пока его сила в этих условиях не окажется допустимой, а во всех остальных ситуациях он будет слабым. По крайней мере, он перестанет доминировать в игре.
Читать полностью »
Физика для мобильного PvP шутера, или как мы из двумерной игру в трёхмерную переделывали
2020-01-24 в 9:09, admin, рубрики: C#, ecs, entity component system, Gamedev, multiplayer, online, unity, Блог компании Pixonic, геймдев, игровая физика, мобильные игры, мультиплеер, проектирование, Проектирование и рефакторинг, разработка игр, разработка мобильных приложений, физический движок, шутер
В предыдущей статье мой коллега рассказал о том, как мы использовали двумерный физический движок в нашем мобильном мультиплеерном шутере. А теперь я хочу поделиться тем, как мы выкинули всё, что делали до этого, и начали с нуля ― иными словами, как мы перевели нашу игру из 2D-мира в 3D.
Читать полностью »
Физика для мобильного PvP шутера и как мы подружили её с ECS
2019-12-25 в 13:55, admin, рубрики: C#, ecs, entity component system, Gamedev, multiplayer, online, unity, Блог компании Pixonic, геймдев, игровая физика, мобильные игры, мультиплеер, проектирование, Проектирование и рефакторинг, разработка игр, разработка мобильных приложений, физический движок, шутерВсем привет! В этой статье мы расскажем про личный опыт работы с физическими движками для мультиплеерного шутера и главным образом сфокусируемся на взаимодействии физики и ECS: на какие грабли мы наступили в процессе работы, чему научились, почему остановились на конкретных решениях.
Создание многопользовательской веб-игры в жанре .io
2019-05-08 в 9:49, admin, рубрики: javascript, multiplayer, node.js, webpack, игра на javascript, разработка игр, Сетевые технологииВышедшая в 2015 году Agar.io стала прародителем нового жанра игр .io, популярность которого с тех пор сильно возросла. Рост популярности игр .io я испытал на себе: за последние три года я создал и продал две игры этого жанра..
На случай, если вы никогда раньше не слышали о таких играх: это бесплатные многопользовательские веб-игры, в которых легко участвовать (не требуется учётная запись). Обычно они сталкивают на одной арене множество противоборствующих игроков. Другие знаменитые игры жанра .io: Slither.io и Diep.io.
В этом посте мы будем разбираться, как с нуля создать игру .io. Для этого достаточно будет только знания Javascript: вам нужно понимать такие вещи, как синтаксис ES6, ключевое слово this
и Promises. Даже если вы знаете Javascript не в совершенстве, то всё равно сможете разобраться в большей части поста.
Читать полностью »
Как мы отлаживаем в браузере самописный ECS на игровом сервере
2018-09-25 в 8:37, admin, рубрики: android, C#, ecs, Gamedev, iOS, mobile development, multiplayer, online, pvp, unity, unity3d, архитектура, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, Проектирование и рефакторинг, разработка игр, разработка мобильных приложений, управление проектами, шутер
Хочу поделиться механизмами, которые мы используем на сервере для визуальной отладки игровой логики и способами изменения состояний матча в реальном времени.
В предыдущих статьях подробно рассказывали (список сразу под катом) о том, как устроена ECS в нашем новом проекте в разработке и как выбирали готовые решения. Одним из таких решений был Entitas. Он не устроил нас в первую очередь из-за отсутствия хранения истории состояний, но очень понравился тем, что в Unity визуально и наглядно можно посмотреть всю статистику по использованию сущностей, компонентов, систему пулов, производительность каждой системы и т.д.
Это вдохновило нас на создание своих инструментов на игровом сервере, чтобы смотреть, что происходит в матче с игроками, как они играют, как перформит система в целом. На клиенте у нас тоже есть подобные наработки для визуальной отладки игры, но инструменты в клиенте чуть более простые по сравнению с тем, что мы сделали на сервере.
Читать полностью »
Браузерный сетевой шутер на Node.js
2018-07-28 в 10:19, admin, рубрики: multiplayer, node.js, socket.io, браузерные игры, разработка игрРазработка многопользовательских игр сложна по множеству причин: их хостинг может оказаться дорогим, структура — неочевидной, а реализация — трудной. В этом туториале я постараюсь помочь вам преодолеть последний барьер.
Статья предназначена для разработчиков, умеющих создавать игры и знакомых с JavaScript, но никогда раньше не писавших мультиплеерные онлайн-игры. Завершив этот туториал, вы освоите реализацию базовых сетевых компонентов в своей игре и сможете развить её во что-то большее! Вот, что мы будем создавать:
Поиграть в готовую игру можно здесь! При нажатии клавиш W или «вверх» корабль приближается к курсору, при щелчке мыши — стреляет. (Если никого нет онлайн, то чтобы проверить, как работает мультиплеер, откройте два окна браузера на одном компьютере, или одно из них на телефоне, ). Если вы хотите запустить игру локально, то полный исходный код выложен на GitHub.
Читать полностью »
Сетевой код Age of Empires: 1500 лучников на модем 28,8 кбит-с
2018-07-25 в 8:03, admin, рубрики: age of empires, multiplayer, многопользовательский режим, разработка игр, Сетевые технологииПримечание переводчика: этой статье уже 17 лет, и интересна она только с исторической точки зрения. Любопытно узнать, как удавалось разработчикам добиться плавной сетевой игры в эпоху 28,8k-модемов и первых «Пентиумов».
В этой статье рассказывается об архитектуре и реализации, а также о некоторых уроках, полученных при создании многопользовательского (сетевого) кода игр Age of Empires 1 и 2. Также в ней излагаются современные и будущие подходы с созданию сетевой архитектуры, используемые Ensemble Studios в своих игровых движках.
Мультиплеер Age of Empires: требования к структуре
В начале работы над многопользовательским кодом Age of Empires в 1996 году мы поставили перед собой очень конкретные цели, необходимые для реализации требуемого игрового процесса.
Читать полностью »
Как мы замахнулись на мобильный fast paced шутер: технологии и подходы
2018-05-21 в 10:30, admin, рубрики: android, Gamedev, iOS, mobile development, multiplayer, online, pvp, unity, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, разработка игр, Разработка под android, разработка под iOS, управление разработкой, шутер
Год назад у нас в компании был один проект — мобильный шутер War Robots с относительно медленными, но красочными и напряженными боями. Игра продолжает развиваться, у нее десятки миллионов установок и игроков по всему миру, постоянно выходят апдейты. В какой-то момент мы захотели сделать динамичный шутер на Unity со скоростями, сравнимыми с Overwatch, CS:GO или Quake. Но реализовать задуманное для мобильных платформ (в первую очередь iOS и Android) на основе War Robots при текущих архитектуре и подходах было практически нереально.
Мы понимали, как это сделать в теории — есть много статей, презентаций на YouTube, детально рассказывающих о том, как написать шутер, как работать с сетью, какие возникают проблемы и как их решать. Здесь нет Rocket Science, все эти подходы придумали еще 30 лет назад и за это время они особо не поменялись. НО: у нас не было практики.
Забегая вперед, скажу — нам удалось реализовать задуманное. Мы создали для мобильных платформ динамичный быстрый шутер, который сейчас находится в бета-тестировании и активно дорабатывается. И мне очень хотелось бы всем этим поделиться. Это первая, обзорная статья с перечислением и кратким описанием практически всего того, что мы используем (прошу не путать с другим нашим проектом в разработке, технологии и подходы в котором похожие, но отличаются в деталях).Читать полностью »
Дневник техлида: вторые полгода разработки нового мобильного PvP
2018-04-26 в 10:00, admin, рубрики: android, Gamedev, iOS, mobile development, multiplayer, online, pvp, unity, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, разработка игр, разработка мобильных приложений, разработка под iOS, управление разработкой
Я лид команды в Pixonic, где работаю уже год. О старте и развитии одного из наших новых проектов я ранее написал статью на Хабре. По ходу дальнейшего производства, спустя еще полгода, у меня накопилось большое количество интересного опыта, которым хотел опять поделиться. На этот раз речь пойдет о процессе наращивания функционала в мобильном клиенте и поддержании кода в гибком состоянии.
Уверен, подавляющее большинство хотя бы раз запускали какую-нибудь многопользовательскую игру. На старте клиент, как правило, пишет несколько магических сообщений и через несколько секунд (хотя в случае с одним известным десктопным шутером — несколько минут) игрок попадает в главное меню, где есть заветная кнопка «В бой» или типа того. Но процесс запуска состоит из огромного количества этапов, которые происходят очень быстро и без вмешательства игрока:Читать полностью »