Вопросы по мультиплееру
| |
GameMix | Дата: Среда, 16 Февраля 2011, 18:45 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Здравствуйте. Я создаю мультиплеер в Game Maker (без 39 dll). Чтобы не засорять форум подобными темами, буду здесь задавать вопросы по мультиплееру. Вопрос первый: клиент не считывает координаты игрока сервера. Цель: сделать так, чтобы объект клиента находился в тех же координатах, что и объект сервера. Помогите, пожалуйста. Добавлено (16.02.2011, 18:45) --------------------------------------------- Объект клиента почему-то, при старте, мгновенно перелетает с исходной позиции в точку (0,0). Решено!
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал аТнОтХоАн - Пятница, 18 Февраля 2011, 09:30 |
|
| |
LunarPixel | Дата: Среда, 16 Февраля 2011, 19:17 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Исходник не качал, нет возможности... Думаю у тебя просто нет соединения с сервером... Поэтому объект клиента не считывает координаты с сервера и соответственно, не имея координат, он забивает в x и y значение 0.
|
|
| |
FinalQ | Дата: Среда, 16 Февраля 2011, 19:20 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Скачал, посмотрел исходники. Сервер создаёт сессию, но клиент в неё не заходит! P.S. Сейчас сам занялся освоением стандартного мультиплеера GM, так что мне также интересен ответ по этой теме знающих людей.
|
|
| |
LunarPixel | Дата: Среда, 16 Февраля 2011, 19:22 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Попробуй использовать на клиенте вот это для проверки: if mplay_connect_status()=0 {выводим сообщение что соединение отсутствует} Так же можешь проверить сеанс: mplay_session_status Возможно ты не использовал mplay_session_find() для поиска сессии. Может дело в локальном соединении и ты не указал при соединении IP (по умолчанию он не нужен для локальной проверки, но вдруг)
|
|
| |
FinalQ | Дата: Среда, 16 Февраля 2011, 19:27 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Quote Попробуй использовать на клиенте вот это для проверки: if mplay_connect_status()=0 {выводим сообщение что соединение отсутствует} Это я и использовал. Quote Возможно ты не использовал mplay_session_find() для поиска сессии. Помогло, законектилось))) + ещё сменил строку mplay_init_tcpip(' '); на mplay_init_tcpip(127.0.0.1);
|
|
| |
LunarPixel | Дата: Среда, 16 Февраля 2011, 19:28 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Ну вот, как я и думал...
|
|
| |
FinalQ | Дата: Четверг, 17 Февраля 2011, 00:23 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Ещё такой вопрос: а как можно проверить пинг (какой командой)?
Сообщение отредактировал FinalQ - Четверг, 17 Февраля 2011, 01:02 |
|
| |
GameMix | Дата: Пятница, 18 Февраля 2011, 09:36 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| FinalQ, - определяет IP адрес компа. Добавлено (17.02.2011, 04:37) --------------------------------------------- LunarPixel, в сервере: Создание: Code mplay_init_tcpip(''); mplay_session_create('SES',10,'PLAYER1'); mplay_data_mode(true); Шаг: Code if keyboard_check(ord('A')) x-=4; if keyboard_check(ord('D')) x+=4; if keyboard_check(ord('W')) y-=4; if keyboard_check(ord('S')) y+=4; mplay_data_write(1,x); mplay_data_write(2,y); В клиенте: Создание: Code mplay_init_ipx(); mplay_session_join(0,'PLAYER2'); Шаг: Code x = mplay_data_read(1); y = mplay_data_read(2); Не пойму, в чём проблема? Добавлено (17.02.2011, 04:47) ---------------------------------------------
Quote (FinalQ) сменил строку mplay_init_tcpip(' '); на mplay_init_tcpip(127.0.0.1); Это пробовал, также искал серверы для подключения, но клиент показывает, что их нет. Хотя, в окне сервера показано состояние подключения: 2.Добавлено (17.02.2011, 04:52) --------------------------------------------- P.S. Идентификаторы у сервера и клиента одинаковые. Добавлено (17.02.2011, 07:52) --------------------------------------------- Все решил! Но так и не понял в чем была проблема. В общем, вот gml код создания клиента: Code if mplay_connect_status()=0 {show_message('Подключение отсутствует!')} else if mplay_session_find()=0 {show_message('Нет серверов для подключения!')} else mplay_session_join(0,'PLAYER2'); Добавлено (18.02.2011, 09:36) --------------------------------------------- Помогите, пожалуйста, решить такую проблему: почему, когда я проверяю сервер и клиент на одном компьютере, они работают. А когда создаю сервер или подключаюсь к нему, показывает, что "Подключение отсутствует!"? Вот код подключения (подключение - IPX): Code if mplay_connect_status()=0 {show_message('Подключение отсутствует!')} else // если соединение не работает, тогда выводим соотв. сообщение, иначе продолжаем подключаться if mplay_session_find() = 0 // если серверов создано не было ...
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал аТнОтХоАн - Четверг, 17 Февраля 2011, 04:45 |
|
| |
LunarPixel | Дата: Пятница, 18 Февраля 2011, 09:50 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Как я понимаю у тебя на разных компьютерах не работает!? А компьютеры в одной локальной сети находятся или в интернете? IP сервера указываешь для клиента?
|
|
| |
GameMix | Дата: Пятница, 18 Февраля 2011, 09:56 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| LunarPixel, Quote (LunarPixel) Как я понимаю у тебя на разных компьютерах не работает!? А ну да, дописать это забыл... Quote (LunarPixel) А компьютеры в одной локальной сети находятся или в интернете? В локальной сети. В одной рабочей группе (др. игры работают, например, Couter Strike и т.д.). Quote (LunarPixel) IP сервера указываешь для клиента? Quote (аТнОтХоАн) подключение - IPX Добавлено (18.02.2011, 09:56) --------------------------------------------- Только, что попробовал отключить свой комп от локальной сети, а также, от модема. Естественно, теперь показывает, что подключение по локальной отсутствует. Но игра на подключение не жалуется).
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
LunarPixel | Дата: Пятница, 18 Февраля 2011, 09:59 | Сообщение # 11 |
старожил
Сейчас нет на сайте
| X не заметил ))) Попробуй не IPX использовать, а TCPIP, пропиши IP сервера и проверь.
|
|
| |
GameMix | Дата: Пятница, 18 Февраля 2011, 13:36 | Сообщение # 12 |
старожил
Сейчас нет на сайте
| Quote (LunarPixel) TCPIP, пропиши IP сервера и проверь. Хорошо, попробую. О результате отпишусь.Добавлено (18.02.2011, 13:36) --------------------------------------------- LunarPixel, проверил. Не работает. Скорее всего дело во втором компе (не моём).
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
LunarPixel | Дата: Пятница, 18 Февраля 2011, 13:39 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Ну если локально на одном компьютере все работает, то да, дело в компьютерах скорее всего.
|
|
| |
GameMix | Дата: Среда, 23 Февраля 2011, 10:31 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| Здравствуйте, помогите, пожалуйста, записать правильно функцию подключения tcpip с указанием порта без 39dll. Прочитал в справке: Quote (Справка Game Maker 8) mplay_init_tcpip(addr) Инициализирует TCP/IP соединение. addr - строка, содержащая веб адрес или адрес IP, напр.. 'www.gameplay.com или '123.123.123.12', возможно сопровожденное номером порта (напр.. ':12'). Писал в скобках: ':30'. Не помогло, все равно подключение сервера и клиента с разными портами происходит успешно. Как правильно записать? Заранее спасибо!
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Made_In_USSR | Дата: Среда, 23 Февраля 2011, 10:48 | Сообщение # 15 |
заслуженный участник
Сейчас нет на сайте
| Порт никогда не указывается в скобках. ххх.хх.ххх.ххх:port
Новичкам изучающим GML кликать сюда. Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
|
|
| |
GameMix | Дата: Пятница, 11 Марта 2011, 12:10 | Сообщение # 16 |
старожил
Сейчас нет на сайте
| Quote (Made_In_USSR) Порт никогда не указывается в скобках. Я имел ввиду: Code mplay_init_tcpip(':30') . То есть я писал ':30' в скобках.)) Добавлено (23.02.2011, 19:14) --------------------------------------------- Прописал IP + порт. Не вышло. Quote (аТнОтХоАн) все равно подключение сервера и клиента с разными портами происходит успешно Так, как тестирую на 1 компе, поэтому пишу в одной версии игры: - 127.0.0.1:30, во второй: 127.0.0.1:31. IP именно такой, т.к. не знаю, как записать функцию подключения "tcpip" по локальной сети с разными портами. Проблема решена! Добавлено (11.03.2011, 12:10) --------------------------------------------- Всем привет! Как узнать трафик собственной игры по сети, т.е. сколько кБ/с.?
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал аТнОтХоАн - Пятница, 11 Марта 2011, 12:07 |
|
| |
FinalQ | Дата: Пятница, 11 Марта 2011, 15:14 | Сообщение # 17 |
был не раз
Сейчас нет на сайте
| Игра 1)При столкновении человечков в прыжке они могут застрять в воздухе и перестают двигаться, что делать? 2)У меня есть 1 обьект "Денежка", он расставлен по комнате в нескольких экземплярах, нужно сделать проверку, чтоб при взятии одной из этих денежек на одном компе, удалилась и на остальных! Не пойму как это сделать
|
|
| |
LunarPixel | Дата: Пятница, 11 Марта 2011, 15:25 | Сообщение # 18 |
старожил
Сейчас нет на сайте
| аТнОтХоАн, посмотри программы по учету трафика.. их полно... с подробными отчетами по процессам и всем остальным... NetLimiter например..
|
|
| |
GameMix | Дата: Пятница, 11 Марта 2011, 15:35 | Сообщение # 19 |
старожил
Сейчас нет на сайте
| Quote (FinalQ) 1)При столкновении человечков в прыжке они могут застрять в воздухе и перестают двигаться, что делать? Убери в настройках спрайта человечка "точную проверку столкновения". И в настройках маски спрайта "полное изображение". Должно помочь. Quote (FinalQ) 2)У меня есть 1 обьект "Денежка", он расставлен по комнате в нескольких экземплярах, нужно сделать проверку, чтоб при взятии одной из этих денежек на одном компе, удалилась и на остальных! Не пойму как это сделать Я так понимаю, что игрок, который берёт денежку, виден и на других компах? Если так, тогда можно в объекте денежки при столкновении с игроком ставить самоуничтожение.Добавлено (11.03.2011, 15:35) --------------------------------------------- По второму вопросу могу дать пример, если нужно, конечно.
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
FinalQ | Дата: Пятница, 11 Марта 2011, 16:39 | Сообщение # 20 |
был не раз
Сейчас нет на сайте
| Quote Я так понимаю, что игрок, который берёт денежку, виден и на других компах? Да. Quote Если так, тогда можно в объекте денежки при столкновении с игроком ставить самоуничтожение. Так и есть, вопрос в том как передать это другим игрокам что именно эта денежка уничтожилась, а не другая или вообще все. Добавлено (11.03.2011, 16:39) --------------------------------------------- А то на одном компе получается что денежка взята, а на других человечек до неё не допрыгивает
|
|
| |
|