Автостопом по мультиплееру. Часть 1: Для кого и для чего
Это первая статья цикла, посвящённому разработке мультиплеерных игр. Мультиплеер — это весьма объёмная область, из-за чего в ней очень легко потеряться или пойти не туда. Я хочу попробовать расставить ориентиры, которые бы помогли начать и пройти по этому направлению.
1. -> Для кого и для чего
4. ...
Последние годы я занимался разработкой преимущественно мультиплеерных проектов под разные платформы. Я ещё помню, как было сложно в начале:
- часто было непонятно, что делать дальше,
- в информационном поле мелькало множество незнакомых тегов,
- уходило много времени на изучение не самых важных на тот момент вещей.
Тогда мне не хватало какого-то краткого руководства, где было бы написано "сейчас нужно это, потом потребуется это, а вот тут можно сделать так или так". Это бы помогло значительно сэкономить время, эффективнее искать информацию и двигаться более осознанно и последовательно.
Повествование я буду вести со своей "колокольни Unity-разработчика", используя те термины, примеры и технологии, которые для меня ближе и с которыми я знаком непосредственно. Но принципиально это не касается только Unity — всё это будет актуально и для других инструментов.
В этой вводной части я хочу поделиться наблюдениями, которые я успел сформировать, чтобы объяснить свою мотивацию к написанию этого материала, и, возможно, объяснить мотивацию для изучения этого направления, если этот процесс ещё не был запущен.
Наблюдение №1: Сложность
Мультиплеер — это очень обширное и живое направление, которое активно развивается, постоянно накапливает новые подходы и имеет свои ответвления. Но даже то, что касается каких-то общих базовых знаний, требует большого количества времени для поиска, изучения, освоения и понимания.
Поиск – не главный этап, но очень важный. Нельзя изучить то, что не удалось найти, и о существовании чего ты даже не знаешь :)
В "моё время" всю информацию приходилось собирать по кусочкам из разных глубин, заведомо не зная, что эти глубины вообще есть: множество туториалов ограничивались самыми банальными вещами и заканчивались на самых интересных моментах. Поэтому область поиска не ограничивалась только Unity или геймдевом: приходилось искать всюду и учиться прикладывать добытые знания к своим задачам. Ведь чтобы сформировать нужный запрос в поисковую строку, нужно было знать определённые термины и контекст.
Сейчас контент стал более качественным и основательным. Появилась масса разнообразных AI-ассистентов, которые готовы подкинуть множество идей и дать полезных указаний в любой ситуации. Строить маршруты для изучения стало как никогда просто. Но сами маршруты от этого легче не стали.
Вывод:
Если однажды удосужиться попасть на мультиплеерный проект, не имея какого-то опыта, не стоит надеяться, что удастся разобраться со всем за недельку и начать успешно перформить — вряд ли из такой затеи получится что-то удачное (но ситуации бывают разные).
Нужно быть готовым к тому, что здесь, как и в IT в целом, придётся постоянно учиться и совершенствовать свои навыки, чтобы иметь компетенции заниматься более качественными и масштабными проектами.
Наблюдение №2: Неизбежность
По мере развития игровой индустрии мультиплеер захватывает всё новые и новые "территории". Раньше мультиплеер был сродни отдельной касте развлечений: с конкретными жанрами, на конкретных платформах, с конкретными правилами. Однако со временем эти ограничения всё больше размываются. Сейчас сложно найти жанр, для которого не было бы многопользовательских проектов. И актуальных платформ, которые не предоставляют подобный вид развлечения, тоже так просто не вспомнить. Мультиплеер пришёл даже в мобильный гейминг.
Из эпохи, когда игроки радовались наличию мультиплеера, мы постепенно переходим в эпоху, где игроки уже негодуют из-за его отсутствия, т.к. они хотят иметь возможность играть со своими друзьями практически во всё.
А какое будущее рисуют нам компании? Будущее метавселенных! А что такое метавселенная — это большой мультиплеер. Вероятно однажды мультиплеер станет настолько обыденностью, что мы уже даже не будем знать альтернатив.
Вывод:
Чем дальше, тем больше в нашей жизни мультиплеера становится. С каждым днём шансы столкнуться с этой технологией возрастают. Рано или поздно, как бы мы ни избегали (если такие попытки есть), мы там окажемся. И лучше к этому быть готовым. Потому что <см Наблюдение №1>.
Наблюдение №3: Недооценённость
Мне неоднократно требовалось набирать разработчиков на очередной мультиплеерный проект. И каждый раз найти хоть кого-то хоть с каким-то опытом — задача крайне сложная, на грани удачи. Релевантных кандидатов очень мало и разбирают их очень быстро.
В ситуациях "безрыбья" приходилось предлагать кандидатам без нужного опыта выполнять ТЗ на разработку мультиплеерного прототипа. Такие ТЗ для кандидата не бывают простыми и быстрыми, но и мы, как команда, не можем позволить себе брать разработчика, не проверив должным образом нужные нам навыки и компетенции. Хотя бы навыки обучаемости.
На моей практике не было кандидатов, которые бы смогли успешно выполнить ТЗ, столкнувшись с сетевым кодом впервые при выполнении этого ТЗ. Тем не менее те, кто что-то когда-то слышали и сколько-нибудь пробовали, не редко давали весьма хорошие результаты. Пусть они не знали об определённых подводных камнях, которые приходят только с опытом, но поставленная задача была объективно выполнена.
Вывод:
Для разработки мультиплеера все хотят сотрудников "на опыте", но таких катастрофически мало. И сами разработчики почему-то не придают значения такой вехе в своём портфолио навыков.
Поэтому даже небольшой скромный мультиплеерный пет поможет выделиться среди других кандидатов и успешнее выполнить ТЗ, если оно вообще потребуется.
А команды всё чаще обращаются к мультиплееру. Потому что <см Наблюдение №2>.
Заключение
Мультиплеер – это сложно, объемно, актуально, перспективно и с каждым днём всё более востребовано. И, вероятно в недалёком будущем, почти обязательно. Но среди разработчиков это на данный момент не очень популярно. И, как нанимающая сторона, я подмечаю некоторый "кадровый голод" в этой области.
Этим введением я хотел обратить внимание на наличие такого направления как мультиплеер и на его возрастающую значимость. И хотел "подстегнуть" не откладывать его изучение на потом. Лучше начать раньше и продвигаться в комфортном темпе, чем пытаться однажды ворваться резко и дерзко.
Возможность (или даже необходимость) поработать над подобным проектом может возникнуть в любой момент. И чем больше к этому моменту будет освоено, тем выше шансы на успех.
В сложившейся сейчас ситуации даже скромный опыт на мультиплеерном поприще становится сильным конкурентным преимуществом.
В следующих статьях я планирую затронуть условные "типы" многопользовательских проектов, варианты реализации, сложности и проблемы, с которыми приходится бороться, инфраструктурные вопросы, актуальные на данный момент решения для Unity и не только, примеры реализации и практические "фишечки".
Контент
В качестве доп. контента я решил указать книги по теме мультиплеера, которые отложил в свою личную библиотеку.
1. Joshua Glazer, Sanjay Madhav. Multiplayer Game Programming: Architecting Networked Games (есть в переводе)
2. Alan R. Stagner. Unity Multiplayer Games
3. Marco Secchi. Multiplayer Game Development with Unreal Engine 5
————————————————————————
Выглядит как графоманское нейрохрючево, без негатива