Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Кооператив в MV

Кооператив в MV 4 дн. 17 ч. назад #101765

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 64
  • Спасибо получено: 161
Что думаете по поводу возможности кооперативной игры в RPG Maker MV играх?
Надо ли, не надо ли? Использовали бы? Есть ли смысл?

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Сразу поясню чем отличается кооператив от онлайна.
Онлайн - это игровой мир, к которому подключается N-количество игроков, игра живёт сама по себе.
Кооператив - это когда игрок создаёт игру и к нему подключаются ограниченное количество лиц. Игра не живёт сама по себе.

Полтора года назад, поймав эту мысль я сделал за пару часов плагин и сервер. В основном это был эксперемент синхронизации событий. Т.е. как быть с игровыми событиями, если игроков несколько.
Вот что у меня получилось (видео):
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, AnnTenna, ZX_Lost_Soul, DK, Yros, yuryol, Guren_san, Cabbit, Mur, Paranoid и еще 2 пользователей

Кооператив в MV 4 дн. 16 ч. назад #101768

  • Mur
  • Mur аватар
  • Вне сайта
  • Просветлённый
  • Мур? Мур! Мур.
  • Сообщений: 297
  • Спасибо получено: 492
  • Даритель СтимкеяУчитель2 место Организатор конкурсов
Сууууууууууууууууупер! Просто потрясающая штука!!!! :ohmy:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, Guren_san, KageDesu, akito66

Кооператив в MV 4 дн. 16 ч. назад #101769

  • Dmy
  • Dmy аватар
  • Сейчас на сайте
  • Просветлённый
  • Сообщений: 315
  • Спасибо получено: 395
  • ВетеранПроект месяца 3 местоРазработчикПоддержка ФондаУчитель
По-моему это очень интересная и полезная вещь! Видео действительно выглядит очень внушительно.
«Кім бы ты стаў, калі б меў сэрца? Чым бы ты стаў, калі б меў веру?» (з песні гурта Heli☀us)
'Кем бы ты стал, если бы у тебя было сердце? Чем бы ты стал, если бы у тебя была вера?' (из песни группы Heli☀us)
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: KageDesu, Mur, akito66

Кооператив в MV 4 дн. 16 ч. назад #101770

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Бог Светлого
  • Сообщений: 881
  • Спасибо получено: 1209
  • 3 место ГотвУчитель1 место в ГотвОраторКомпозитор2 место
никогда не люил онлайн-игры, но кооператив -это лучшее что может быть! Для меня всегда были одиночные игры простым задротством, а вот кооперативные - отличным времяпрепровождением.

Конечно, кооператив за одним компом для меня приоритетнее, и больше интересует как сделать раздельный инвентарь и два экрана на одном мониторе, но учитывая переезд, отсутствие времени и лучшего друга рядом, всем руками "за" :whistle:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: akito66

Кооператив в MV 4 дн. 15 ч. назад #101771

  • AnnTenna
  • AnnTenna аватар
  • Сейчас на сайте
  • Администратор
  • ловлю волны настроения
  • Сообщений: 3499
  • Спасибо получено: 2413
  • КоммерсантОрганизатор конкурсовПобедитель конкурсаУчитель2 место ГотвПроект месяца 1 место2 место Победитель Сбитой кодировкиДаритель Стимкея3 место
Ого, да это просто фантастика какая-то! :whistle: Я тоже обеими руками ЗА такой плагин - это же очень круто!
Я даже просила одного знакомого программиста порыться на тему кооператива для моей игры, но он так и не справился с этим, к сожалению. С тех пор я как-то и перестала надеяться на то, что это возможно. А тут вдруг бац и эта тема!

Только вот расстраивает то, что
Выбором в общем событии может управлять только лидер группы (это игрок, который первый подключился)
Для кооперативных игр, основанных на выборе, это является существенным недостатком и большой проблемой :silly:

Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: akito66

Кооператив в MV 4 дн. 12 ч. назад #101773

  • akito66
  • akito66 аватар
  • Вне сайта
  • Мастер
  • Сообщений: 125
  • Спасибо получено: 179
  • РазработчикПроект месяца 2 местоКомпозитор
Если это возможно, то я бы точно это использовал в своем проекте, не свойственно для меня но я бы даже перешел на MV
: )
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Кооператив в MV 4 дн. 7 ч. назад #101774

  • ZX_Lost_Soul
  • ZX_Lost_Soul аватар
  • Сейчас на сайте
  • Просветлённый
  • Сообщений: 321
  • Спасибо получено: 464
  • УчительРазработчикВетеранПроект месяца 2 местоПроект месяца 3 местоПобедитель конкурсаПроект года 3 местоПроект месяца 1 место
Рад что кто-то взялся за написание сетевого кооператива для мукера. Считаю что вещь это очень нужная, т.к. возможность делать кооп игры здорово оживила и разнообразила бы мейкерский игрострой, ведь, как известно, при коллективной игре все автоматически становится веселее в n раз.

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

Главной сложностью при создании сетевых (а особенно кооперативных) игр на любом движке в настоящее время является проблема нехватки ip адресов. Создатели протокола ipv4 в своё время не учли неравномерность распределения ip-адресов по миру (а может и вовсе об этом не думали, не силен в истории) и сделали недостаточно большой длину адреса. В итоге у многих провайдеров просто не хватает адресов для своих абонентов и они садят множество человек на один и тот же, что по-простому называется "серым ip". Поскольку у таких людей нет персональных ip, подключиться извне к ним невозможно, как результат они не могут хостить сетевые игры. Для решения проблемы был создан протокол ipv6, однако ж на дворе 2018 год, а поддерживает его довольно малое количество провайдеров.

В двух словах, не имея белого ip, играть в кооп игры с классическим прямым подключением вы не сможете.

Какие же есть решения?

1. Кооператив через общий сервер. При такой реализации все игроки соединяются через один сервер с белым ip и обмениваются данными тоже. Такое решение могут себе позволить Blizzard в игре Diablo 3, однако оно требует постоянного финансирования и для маленьких/бесплатных игр не годится.

2. Использование hole-punching, чтобы пробиться сквозь nat. Решение частичное, поскольку в некоторых сетях и провайдерах нереализуемо, т.е. позволит хостить не всем, но многим. Для соединения игроков опять же используется сервер с белым ip, однако все дальнейшие данные будут идти напрямую. Главным минусом способа является его сложность, далеко не каждый программист знает как его реализовать.

Очень существенный шаг для решения проблемы сделал Steam, за что Valve нужно сказать большое спасибо. При использовании steam_api разработчикам доступны стим-лобби, своеобразная комбинация способов 1 и 2 (стим сначала пытается пробить нат, а если не выходит - использует прокси). Это позволило родиться многим инди кооп играм. Однако это все актуально, только если вы делаете игру для стима.

Ну и третьим способом является различный изврат, такой как заставлять игроков ставить эмуляторы локальной сети вроде Хамачи, Тангл и т.д.
Решение рабочее, однако по голове за него игроки не погладят.

Хотелось бы услышать мнение топикстартера по этому вопросу :) Что планируется реализовать в плагине?
Мои игры: Dolly's Afterlife (платформер) | Crossed Destinies (jRPG)
Старое: Dolly's Funeral (платформер)
Последнее редактирование: 4 дн. 7 ч. назад от ZX_Lost_Soul.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy, DK, Cabbit, Mur, Paranoid

Кооператив в MV 4 дн. 6 ч. назад #101776

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Бог Светлого
  • Сообщений: 578
  • Спасибо получено: 250
Кооп для мукера это чуть более чем нужная вещь!

ZX_Lost_Soul, так вот почему я не могу хостить игры.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Кооператив в MV 4 дн. 46 мин. назад #101787

  • Guren_san
  • Guren_san аватар
  • Вне сайта
  • Оседлый
  • Сообщений: 41
  • Спасибо получено: 10
Очень хорошая идея! Если бы у меня было больше двух рук, я бы все их поднял. Как уже было оговорено выше, кооперативчик для jrpg игр - более, чем нужно. Я буду следить за этой темой ^^ :blink:
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Dmy

Кооператив в MV 3 дн. 22 ч. назад #101791

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 64
  • Спасибо получено: 161
AnnTenna пишет:
Для кооперативных игр, основанных на выборе, это является существенным недостатком и большой проблемой :silly:

Это не ограничение, можно изменить. Просто написал как сделал изначально.

ZX_Lost_Soul, делать игру и делать плагин - это разные вещи. Если бы я делал игру с кооперативом, то я бы задумался как моя игра будет обеспечивать сетевой режим. Если я планирую свою игру выпускать в Steam, то прикручу Steam API, если другой способ распространения, возможно запущу свой сервер для игроков и т.д. Я же делаю плагин - т.е. некий фрамеворк, представляющий готовый сервер и клиент и их интеграцию с MV, чтобы разработчик игры мог использовать сетевые функции в игре. А как будет обеспечивать доступ к севреру разработчик игры, используя плагин, это по большей части его заботы. Я ведь не всемогущий :)
Сам же сервер планирую чтобы запускался внутри игры, чтобы не нужно было запускать никакие сторонние программы вместе с игрой. Ну и выделенный тоже можно отдельно сделать.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Guren_san, Mur

Кооператив в MV 3 дн. 21 ч. назад #101792

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Бог Светлого
  • Сообщений: 578
  • Спасибо получено: 250
Хотелось бы тогда еще и плагин для сплит-скрин игры.
Администратор запретил публиковать записи гостям.

Кооператив в MV 3 дн. 21 ч. назад #101793

  • ZX_Lost_Soul
  • ZX_Lost_Soul аватар
  • Сейчас на сайте
  • Просветлённый
  • Сообщений: 321
  • Спасибо получено: 464
  • УчительРазработчикВетеранПроект месяца 2 местоПроект месяца 3 местоПобедитель конкурсаПроект года 3 местоПроект месяца 1 место
KageDesu, но реализация того же hole-punching на nodejs потребует почти целиком переписать часть, отвечающую за соединение. Если хочешь возложить решение проблемы с NAT на разработчиков игр - обязательно отдели эту часть от другого кода, чтобы её легко было модифицировать, не изучая весь плагин :)
Мои игры: Dolly's Afterlife (платформер) | Crossed Destinies (jRPG)
Старое: Dolly's Funeral (платформер)
Последнее редактирование: 3 дн. 21 ч. назад от ZX_Lost_Soul.
Администратор запретил публиковать записи гостям.

Кооператив в MV 3 дн. 20 ч. назад #101794

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 64
  • Спасибо получено: 161
Paranoid пишет:
Хотелось бы тогда еще и плагин для сплит-скрин игры.
А как быть с управлением? Два устройства (клавиатура и геймпад) или разные клавиши?

ZX_Lost_Soul, я ещё подумаю.

Хочу пояснить для людей, которые в этом не разбираются как устроенно сейчас. Допустим вы хотите поиграть с товарищем в игру вместе. Вы оба запускаете одинаковую игру на своих компьютерах, только один из вас в игре выбирает опцию <создать игру> (одну кнопку нажать или комнаду плагина вызвать), а второй опцию <подключится к игре>, где ему просто нужно ввести ip адресс первого игрока. Всё. Проблема уже встаёт немного извне я считаю, а именно как далеко виден ip адресс игрока, который создал игру (сервер). Если оба товарища в одной сети (локальная, Wi-fi) - проблем нет. Если сервер имеет "белый" адресс и к нему можно подключится из интернета - проблем нет. Если сервер умён, то может пошаманить с настройками роутера (port forward) и сделать также свой "чёрный" ip доступным из вне (тут я не уверен, но вроде как можно). Ну а если очень хочется поиграть, но ничего из выше указанного нет желания делать, то 5 минут установка бесплатного Hamachi (или алтернативы) и вы оба в виртуальной локальной сети - проблем нет. Итого: решение проблемы подключения, я считаю, это немного выходит за рамки ответственности плагина.
Администратор запретил публиковать записи гостям.

Кооператив в MV 3 дн. 18 ч. назад #101799

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Бог Светлого
  • Сообщений: 640
  • Спасибо получено: 323
  • ПрограммистДаритель СтимкеяВетеран
Ага. Что вы об этом... Тут более крупная проблема - как соединить его с кучей других левых плагинов, на которых делается 99% проектов.
Когда-то эта мысль оттолкнула от подобной идеи. :)

Вобщем, кажется, большинству подойдёт лишь та его часть, что ивенты запускает и переданные параметры в них закидывает.
Последнее редактирование: 3 дн. 18 ч. назад от Lekste.
Администратор запретил публиковать записи гостям.

Кооператив в MV 3 дн. 9 ч. назад #101805

  • Paranoid
  • Paranoid аватар
  • Вне сайта
  • Бог Светлого
  • Сообщений: 578
  • Спасибо получено: 250
Наверное лучше подойдет клавиатура/геймпад или геймпад/геймпад
Администратор запретил публиковать записи гостям.

Кооператив в MV 2 дн. 15 ч. назад #101813

  • KageDesu
  • KageDesu аватар
  • Вне сайта
  • Бывалый
  • Сообщений: 64
  • Спасибо получено: 161
Lekste, надо пробовать, так ничего не скажешь. Учитывая архитектуру сервера у меня есть надежды, что большинство плагинов будет работать.

Провёл очередной эксперемент, объеденив проблему, о которой писал ZX_Lost_Soul и идею с Split Screen.

Видео

Получился некий гибрид. Это всё ещё сервер - клиент (на одной машине) и это не совсем Split Screen, окна то 2 :)
Последнее редактирование: 2 дн. 15 ч. назад от KageDesu.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Mur, Paranoid, akito66
Время создания страницы: 0.697 секунд