Comments 24
Мне вот только не совсем понятно, для кого эта статья…
Для школьников которые делают онлайн шутер, убийц контерстрайка и бателфилда.
Код в статье сильно сложный, хоть он и объясняется по ходу прочтения статьи, но все равно можно было намного проще все сделать.
Код в статье сильно сложный, хоть он и объясняется по ходу прочтения статьи, но все равно можно было намного проще все сделать.
Я буду весьма рад, если мой код пригодится также и юным энтузиастам школьного возраста. Для заинтересованных в разработке программистов возраст не имеет значения. Спасибо за ваше мнение.
Нет, Вы ничего не подумайте, я не осуждаю или что-то еще.
За статью Вам огромное спасибо!
За статью Вам огромное спасибо!
Меня как-то неадекватно восприняли. Я тоже делаю игру, тоже сетевую, при том что я не знаком с юнити, на то что бы понять, как там работает сеть и как нужно что-то сделать у меня лично ушло не более 10 минут, с учетом того, что я не гуру английского языка.
А вообще, при разработке игры на чем-то столь «complicated», как Unity, стоит сначала прочитать официальную докуметацию. В которой сетевой аспект раскрыт куда более подробно, нежели в Вашей статье… Вот я и не понимаю, для кого эта статья…
А вообще, при разработке игры на чем-то столь «complicated», как Unity, стоит сначала прочитать официальную докуметацию. В которой сетевой аспект раскрыт куда более подробно, нежели в Вашей статье… Вот я и не понимаю, для кого эта статья…
Не все такие как вы, чтоб «за 10 минут всё прочитать и изучить». За это время хотя что про Network View прочесть и в документации найти (по базовым понятиям устройства серверной части) команды создания сервера и коннекта клиента.
А статья например для такого случая как у меня- пока сетевик дописывает сервер, протоколы передачи и т. д. на клиентской части нужно по-быстрому состряпать сервер для «локального» теста и подготовки данных для передачи через сеть. А когда релиз на носу и жопа горит то не особо хочется тратить время на углубленное изучение этого.
Спасибо за статью! небольшая очепятка:
За ссылку на VDC отдельный плюс) 7 лет сорсом страдал)
А статья например для такого случая как у меня- пока сетевик дописывает сервер, протоколы передачи и т. д. на клиентской части нужно по-быстрому состряпать сервер для «локального» теста и подготовки данных для передачи через сеть. А когда релиз на носу и жопа горит то не особо хочется тратить время на углубленное изучение этого.
Спасибо за статью! небольшая очепятка:
Таким образом, клиентская и серверная логика есть, теперь для нее нужно сделать управление MainMenu.cs:
public class MultiplayerMenu
За ссылку на VDC отдельный плюс) 7 лет сорсом страдал)
Я правильно понимаю, что один из клиентов является и сервером?
Да, так же можно написать чтоб сервер выполнял конкретно свои задачи, к примеру в данном примере можно в файле ServerSide закомментировать строку SendMessage( «SpawnPlayer», «Player Server» ); а в GUI написать к примеру код который будет выкидывать игроков в лобби а потом снова их спаунить.
А Вам не кажется, что не очень разумно на сервере держать какие бы то ни было «префабы», модельки и GUI-слой, даже с точки зрения производительности
Если писать «чистый» сервер, конечно же тогда бы и лицензию на Unity, тогда можно вообще консольный написать, минимум затрат ресурсов. В моем комментарии всего лишь примитивный пример не претендующий на использование.
Именно.
Оборотной стороной такой вот простоты то, что люди берут Unity + PhotonCloud. Все так красиво и удобно. И главное, очень быстро.
А в результате читеры всех достают в игре.
Отсюда мне всегда было интересно, зачем плодить такие туторы (их кстати миллион в инете), которых в реальной игре лучше избегать всеми способами?
Утрирую конечно, но это примерно как описывать способ забивания гвоздей железной трубой. Ну да, это возможно и труба не микроскоп, не сломается. Но в реальной жизни это мало где применимо и вообще, лучше взять молоток.
Оборотной стороной такой вот простоты то, что люди берут Unity + PhotonCloud. Все так красиво и удобно. И главное, очень быстро.
А в результате читеры всех достают в игре.
Отсюда мне всегда было интересно, зачем плодить такие туторы (их кстати миллион в инете), которых в реальной игре лучше избегать всеми способами?
Утрирую конечно, но это примерно как описывать способ забивания гвоздей железной трубой. Ну да, это возможно и труба не микроскоп, не сломается. Но в реальной жизни это мало где применимо и вообще, лучше взять молоток.
Пользуясь случаем хотел бы спросить, как в Unity реализованы такие фичи как client prediction и lag compensation?
Может быть также у кого-то есть какие-нибудь доброкачественные ссылки помимо трудов valve на эту тему? Особо интересует weapon prediction в случае НЕ моментальных выстрелов, работа с эффектами и звуками в обстановке всего этого хаоса. Желательно с низкоуровневыми подробностями, но не ниже хорошего минималистичного кода с хорошими комментариями.
В очень многом механика игры, ее восприятие зависят именно от реализации этих техник (или подобных). Как можно спрятать все это в каком-то движке от разработчика, не очень понятно. Если кто объяснит, буду благодарен.
Может быть также у кого-то есть какие-нибудь доброкачественные ссылки помимо трудов valve на эту тему? Особо интересует weapon prediction в случае НЕ моментальных выстрелов, работа с эффектами и звуками в обстановке всего этого хаоса. Желательно с низкоуровневыми подробностями, но не ниже хорошего минималистичного кода с хорошими комментариями.
В очень многом механика игры, ее восприятие зависят именно от реализации этих техник (или подобных). Как можно спрятать все это в каком-то движке от разработчика, не очень понятно. Если кто объяснит, буду благодарен.
В Unity никак не реализованы эти фишки.
Реализация целиком и полностью лежит на разработчике.
А посему, совершенно не важно, юнити это или нет, механизмы одни и теже, примеров в инете хватает.
Реализация целиком и полностью лежит на разработчике.
А посему, совершенно не важно, юнити это или нет, механизмы одни и теже, примеров в инете хватает.
А немогли бы вы поделиться ссылками на примеры хорошего кода. А то в теории всё сто раз описано, а вот хороших минималистичных примеров не встречал.
Не встречали, потому что их просто нет.
Просто понятия «client prediction, lag compensation» и «минималистичный» они как бы взаимоисключающие.
Просто не представляю себе премерчик в 10 строк кода…
Посмотрите исходники кваки, дума. Поищите хакерские эмуляции популярных игр, там в исходниках можно подсмотреть некоторые моменты…
Просто понятия «client prediction, lag compensation» и «минималистичный» они как бы взаимоисключающие.
Просто не представляю себе премерчик в 10 строк кода…
Посмотрите исходники кваки, дума. Поищите хакерские эмуляции популярных игр, там в исходниках можно подсмотреть некоторые моменты…
Минималистичный это не когда в 10 строчек кода, а когда только игроки + физика + минимальный рендер (например как тут шарики по ландшафту).
Ну 10 строк, это я условно написал… просто минималистичный пример этот будет чуть ли не полной игрой…
Меняешь шарики на танки и выкладываешь в гуглплей)
Схемы client prediction и lag compensation обычно отлаживаются потом и кровью, вот никто и не выкладывает что называется «на халяву».
Меняешь шарики на танки и выкладываешь в гуглплей)
Схемы client prediction и lag compensation обычно отлаживаются потом и кровью, вот никто и не выкладывает что называется «на халяву».
Про interpolation и prediction вот тут есть неплохой пример: buildnewgames.com/real-time-multiplayer/. Правда демо у них протухло. Еще надо иметь ввиду, что prediction без lag compensation особо ничем не помагает. Угадайте, почему )
Вообще сейчас как раз разбираюсь со всем этим добром. Хочу сделать fast-pased пример, чтобы работал идеально на заданных характеристиках сети. Подводных камней много. Материала маловато. Все в основном дают ссылку на valve и говорят, что материала много. Там неплохо написано, но понять сложновато, пока сам все не напишешь :) Материала, конечно, много в исходниках дума и кваки. Только не каждый в состоянии его вдумчиво прочитать по тем или иным причинам.
Может дойдут руки доделать свой пример, тогда будет нормальная статья и какой-то код.
Вообще сейчас как раз разбираюсь со всем этим добром. Хочу сделать fast-pased пример, чтобы работал идеально на заданных характеристиках сети. Подводных камней много. Материала маловато. Все в основном дают ссылку на valve и говорят, что материала много. Там неплохо написано, но понять сложновато, пока сам все не напишешь :) Материала, конечно, много в исходниках дума и кваки. Только не каждый в состоянии его вдумчиво прочитать по тем или иным причинам.
Может дойдут руки доделать свой пример, тогда будет нормальная статья и какой-то код.
Да, у меня в черновиках уже пол года лежит недописанная статья на Scala+FLash.
Там правда без физики, движение по плоскости, но тем не менее хотел выложить полноценную демку с базовыми prediction и lag compensation…
Там правда без физики, движение по плоскости, но тем не менее хотел выложить полноценную демку с базовыми prediction и lag compensation…
Я пишу на js. Для прототипирования — очень удобно. Язык скриптовый — пишется быстрее + использование одного и того же языка на клиенте и сервере. Получается, что код моделирования мира не требуется дублировать.
Я позиционирю для себя это занятие как эксперимент, поэтому со временем понял, что в данной теме не так важна технология, сколько развернутое описание алгоритма(ов), красивые и понятные схемы взаимодействия с разными кейсами. И пример кода, демонстрирующий ограниченный набор фич.
После создания хорошей логической модели, можно уже писать на любом языке.
Я позиционирю для себя это занятие как эксперимент, поэтому со временем понял, что в данной теме не так важна технология, сколько развернутое описание алгоритма(ов), красивые и понятные схемы взаимодействия с разными кейсами. И пример кода, демонстрирующий ограниченный набор фич.
После создания хорошей логической модели, можно уже писать на любом языке.
Sign up to leave a comment.
Основы многопользовательской игры на Unity3D