Здравствуйте, гость ( Вход | Регистрация )
27 Jan 2017, 18:00
(Сообщение отредактировал baratorch - 22 Feb 2017, 13:15)
Сообщение
#1
|
|
|
Immortal Сообщений: 2 413 Спасибо сказали: 4619 раз |
Давным давно востребованная вещь: лобби сервер для онлайн игры в героев.
Чтобы можно было коннектиться без всяких хамачей и прочего. Чтобы можно было легко искать оппонента. Общие рейтинг, чат, и прочие вещи, которые являются обыденностью для современных многопользовательских игр. И я очень хочу этим заняться, но мне катастрофически не хватает знаний и опыта для разработки сего. -------------------- Спасибо сказали: Seiffear, hippocamus, AKuHAK, lion-killer, BlackBred, Throutle, packa, nosferatu, Doomђammer, J2K, Axolotl, Day7, SaintDark, igrik, Zabuza-san, AGG, Odin, Orzie, Cthulhu_55, KypaToP_HM, USBhere, the_new_pirate, Lokos, Tovio, AlexejKa83, Joric |
|
|
|
![]() |
28 Jan 2017, 04:23
(Сообщение отредактировал SaintDark - 28 Jan 2017, 04:27)
Сообщение
#2
|
|
![]() Working hard Сообщений: 455 Спасибо сказали: 558 раз |
Оригинальное лобби героев разве TCP? Для игр в рнжиме онлайн актуально UDP, т.к. игра не зависает при потере пакетов.
p2p через сервер видится так: Игроки логинятся, получают токены сессий и на основе этих токенов за ними закрепляется адрес вида token.hlobby.com, и они подключаются друг к другу уже посредством этих адресов (что- то вроде vpn выходит). Такой способ гарантирует подключение двух пользователей независимо от того, белые ip у них или нет. -------------------- |
|
|
|
28 Jan 2017, 05:01
Сообщение
#3
|
|
|
Immortal Сообщений: 2 413 Спасибо сказали: 4619 раз |
Оригинальное лобби героев разве TCP? Для игр в режиме онлайн актуально UDP, т.к. игра не зависает при потере пакетов. UDP актуален для реал тайм игр, шутанов всяких. Где скорость обмена данными важнеe целостности данных и гарантии доставки. Героям это не нужно им как раз нужна гарантия доставки и целостности, т.е. Один игрок должен 100% получать то что отправил другой и никак иначе. Как вы представляете себе шахматы в которых ход соперника может не дойти до вас или дойти не таким, каким его сделал игрок? Если инет медленный и глючный, то пускай на передачу данных уйдет сколь угодно много времени (до установленного таймаута), но они обязаны дойти 100% целостными. UDP же не гарантирует целостность и вообще доставку данных. а TCP гарантирует - в этом разница, я так понимаю. Оригинальный сетевой API использованный в героях предполагает отправку данных как с гарантией доставки, так и без. Но практически используется только вариант с гарантией - по факту это tcp -------------------- |
|
|
|
28 Jan 2017, 07:32
(Сообщение отредактировал t800 - 28 Jan 2017, 08:04)
Сообщение
#4
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза |
Оригинальное лобби героев разве TCP? Для игр в режиме онлайн актуально UDP, т.к. игра не зависает при потере пакетов. UDP актуален для реал тайм игр, шутанов всяких. Где скорость обмена данными важнеe целостности данных и гарантии доставки. Героям это не нужно им как раз нужна гарантия доставки и целостности, т.е. Один игрок должен 100% получать то что отправил другой и никак иначе. Как вы представляете себе шахматы в которых ход соперника может не дойти до вас или дойти не таким, каким его сделал игрок? Если инет медленный и глючный, то пускай на передачу данных уйдет сколь угодно много времени (до установленного таймаута), но они обязаны дойти 100% целостными. UDP же не гарантирует целостность и вообще доставку данных. а TCP гарантирует - в этом разница, я так понимаю. Оригинальный сетевой API использованный в героях предполагает отправку данных как с гарантией доставки, так и без. Но практически используется только вариант с гарантией - по факту это tcp А мне вот кажется как это сделано в Heroes3 это слишком сложно, потому что надо ставить Хамачи и какие-то старые протоколы и все такое. По моему проще вырезать все это дело совсем (забить NOP-ами) и сделать внешнений вызов curl-а и выгрузку мира в фалик и пусть curl его послылает на сайт с каким-нибудь именем а другой игрок его оттуда тоже curl-ом из игры в свой ход скачивает и загружает. И тогда нужен будет только интернет и все. -------------------- |
|
|
|
29 Jan 2017, 11:39
(Сообщение отредактировал baratorch - 29 Jan 2017, 11:44)
Сообщение
#5
|
|
|
Immortal Сообщений: 2 413 Спасибо сказали: 4619 раз |
А мне вот кажется как это сделано в Heroes3 это слишком сложно, потому что надо ставить Хамачи и какие-то старые протоколы и все такое. По моему проще вырезать все это дело совсем (забить NOP-ами) и сделать внешнений вызов curl-а и выгрузку мира в фалик и пусть curl его послылает на сайт с каким-нибудь именем а другой игрок его оттуда тоже curl-ом из игры в свой ход скачивает и загружает. И тогда нужен будет только интернет и все. Во-первых, это плохое решение. Думаю, так будет вообще невозможно сделать. Как узнавать что противник ход завершил? как именовать файл чтобы он точно поступал адресату при нескольких одновременных играх? Как реализовать то что противник реалтайм видит перемещения героев оппонента? В общем, извини, но бред. Разве что под эту идею можно скрипты написать чтобы они сейвили хот сит игру, отправляли сейв, а затем скачивали его и загружали. Но это же тоже довольно тормозное и уродское решение. Уж лучше один раз поставить и настроить хамачи/тангл/тимвьюер/геймренджер и играть нормально. Цитата Почему не эффективно? Для битвы путь curl отправляет и скачивает другой файлик в котором состояние битвы. ИМХО как раз все напротив очень хорошо все будет потому что можно будет даже сейвы в самой битве делать! Сегодня сохранть а завтра продолжить с того же хода. Во вторых это сложное решение, ибо в игре мир посылается один раз - в начале/при загрузке игры. Дальше игроки обмениваются изменениями. В битве - только действиями. Что в общем то предельно разумно. Было бы странно, если б было иначе. -------------------- |
|
|
|
29 Jan 2017, 16:41
(Сообщение отредактировал t800 - 29 Jan 2017, 16:57)
Сообщение
#6
|
|
![]() Разработчик Сообщений: 534 Спасибо сказали: 222 раза |
Цитата Во-первых, это плохое решение. Думаю, так будет вообще невозможно сделать. Цитата Как узнавать что противник ход завершил? Сделать lock файлик Цитата как именовать файл чтобы он точно поступал адресату при нескольких одновременных играх? Путь берут файлы из разных каталогов Цитата Как реализовать то что противник реалтайм видит перемещения героев оппонента? А он их видит реалтайм? Я почему то думал что он их видит когда тот ход завершил уже. Цитата В общем, извини, но бред. Ну не знаю. Я просто думаю что так проще просто все вырезать и сделать вызов готовой внешней программы и пусть она сама обмениватся файликами. Например curl он все может и логинится и файлы отравлять и получать и сообщения посылать и почту. А в файлы это можно записать и команды и мир и все что хочешь. И не нужно будет людям ставить никакие протоколы и делать непонятные VPN. -------------------- |
|
|
|
29 Jan 2017, 23:42
Сообщение
#7
|
|
![]() FFuck_oFF Сообщений: 3 993 Спасибо сказали: 1399 раз |
Цитата Как реализовать то что противник реалтайм видит перемещения героев оппонента? А он их видит реалтайм? Я почему то думал что он их видит когда тот ход завершил уже. -------------------- http://heroes3towns.com/ Сайт Новых Городов
|
|
|
|
baratorch Лобби-сервер для HotA 27 Jan 2017, 18:00
t800 А прочему вам просто не взять исходники Хамачи и ... 27 Jan 2017, 20:23
the_new_pirate Ооо это крутая вещь была бы. Голосую обеими руками... 28 Jan 2017, 11:08
t800 Цитата(the_new_pirate @ 28 Jan 2017, 14:0... 28 Jan 2017, 12:22
the_new_pirate а, ну если это не весь мир будет, а только то, что... 29 Jan 2017, 09:28
hippocamus t800, ну пойми уже, что всё реально гораздо сложне... 30 Jan 2017, 00:04
t800 Цитата(hippocamus @ 30 Jan 2017, 03:04) t... 30 Jan 2017, 04:50
SaintDark Можно поточнее, что будет отсылаться на сервер с к... 30 Jan 2017, 06:16
baratorch Цитата(SaintDark @ 30 Jan 2017, 08:16) Мо... 30 Jan 2017, 07:42
the_new_pirate Цитата(baratorch @ 30 Jan 2017, 07:42) Не... 01 Feb 2017, 21:36
tolich Другими словами, Heavenly Conflux. 30 Jan 2017, 08:24
SAG19330184 Цитата(t800 @ 29 Jan 2017, 16:41) ЦитатаК... 01 Feb 2017, 18:40
SaintDark В общем, почитал про пробивание NAT.
Делается это... 02 Feb 2017, 12:08
t800 Цитата(SaintDark @ 02 Feb 2017, 15:08) Оп... 04 Feb 2017, 08:42
baratorch В общем со всем разобрался. Буду писать все сам. 22 Feb 2017, 13:21
igrik Мощно!!!
baratorch, даже не знаю, чтоб... 22 Feb 2017, 13:53
tmn Возможно, имеет смысл добавить поддержку URI для и... 28 Mar 2017, 07:54
baratorch Запускаю открытый альфа-тест HD мода 5.0 (онлайн л... 13 Jul 2017, 22:07
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 14 Jul 2017, 21:14
tmienei Здравствуйте, возникла проблема при игре втроем с ... 15 Jul 2017, 01:37
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 15 Jul 2017, 09:04
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 15 Jul 2017, 19:35
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 16 Jul 2017, 20:58
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 17 Jul 2017, 12:28
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 18 Jul 2017, 13:34
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 19 Jul 2017, 13:32
baratorch Теперь вместо плагина HotA HW 1.38+ следует исполь... 19 Jul 2017, 15:05
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 25 Jul 2017, 10:07
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 26 Jul 2017, 13:29
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 07 Aug 2017, 09:19
baratorch по той же ссылке доступен оффлайн апдейт до alpha ... 18 Aug 2017, 07:37
the_new_pirate Цитата(baratorch @ 18 Aug 2017, 07:37) по... 26 Aug 2017, 17:21
Lokos При прокрутке колесом мыши, прокручивается сразу ... 18 Aug 2017, 13:29
Docent Picolan Цитатарейтинг лучше сделать по типу ELO
Он и так э... 27 Aug 2017, 13:31
igrik В чём проблема? Постоянно просит скачать обнову, н... 28 Aug 2017, 16:14
the_new_pirate Из HD лаунчера нормально можно (авто)обновиться, н... 28 Aug 2017, 19:20
hippocamus В игре этот диалог возникает в том случае, если от... 28 Aug 2017, 21:06
BlackBred Очень не хватает функции восстановления пароля от ... 03 Oct 2017, 00:17
baratorch Цитата(BlackBred @ 03 Oct 2017, 03:17) Оч... 05 Oct 2017, 01:35
BlackBred Цитата(baratorch @ 05 Oct 2017, 01:35) Пи... 06 Oct 2017, 10:57
hippocamus BlackBred, это - бета-тест (а в начале вообще альф... 03 Oct 2017, 01:46
BlackBred Цитата(hippocamus @ 03 Oct 2017, 01:46) В... 03 Oct 2017, 21:45
Docent Picolan ЦитатаНе знал о планах по удалению всех аккаунтов ... 03 Oct 2017, 21:51
BlackBred Цитата(Docent Picolan @ 03 Oct 2017, 21:5... 04 Oct 2017, 10:13
Odin Будет ли возможность наблюдать за текущими играми? 13 Jan 2018, 14:09
baratorch Цитата(Odin @ 13 Jan 2018, 16:09) Будет л... 22 Jan 2018, 11:15
deadman_blr87 Есть ли какие-то идеи по следующим проблемам?:
- в... 21 Jan 2018, 21:36
fireman Как-то форум миновала новость, что в последних вер... 13 Mar 2018, 23:56
hippocamus Не велика потеря, что миновала. 14 Mar 2018, 02:10
MasterBuilder Наверное дурацкий вопрос, но так и не нашел ответа... 02 Apr 2018, 01:34
1/2 Как сдаваться в онлайн игре? 02 Aug 2019, 18:59
hippocamus Цитата(1/2 @ 02 Aug 2019, 18:59) Как сдав... 02 Aug 2019, 19:37
starting Здравствуйте, а можно узнать как восстановить или ... 15 Aug 2022, 14:22
Dolmatov Цитата(starting @ 15 Aug 2022, 15:22) Здр... 12 Sep 2022, 23:18![]() ![]() |
| Текстовая версия | Сейчас: 18 November 2025 - 02:49 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|