Пятница, 24 Мая 2024, 22:05

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Вопросы по мультиплееру
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
старожил
Сейчас нет на сайте
Ну вот, как я и думал... happy

FinalQДата: Четверг, 17 Февраля 2011, 00:23 | Сообщение # 7
был не раз
Сейчас нет на сайте
Ещё такой вопрос: а как можно проверить пинг (какой командой)?

Сообщение отредактировал FinalQ - Четверг, 17 Февраля 2011, 01:02
GameMixДата: Пятница, 18 Февраля 2011, 09:36 | Сообщение # 8
старожил
Сейчас нет на сайте
FinalQ,
Code
mplay_ipaddress()
- определяет 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" по локальной сети с разными портами. sad

Проблема решена!

Добавлено (11.03.2011, 12:10)
---------------------------------------------
Всем привет! Как узнать трафик собственной игры по сети, т.е. сколько кБ/с.?


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал аТнОтХоАн - Пятница, 11 Марта 2011, 12:07
FinalQДата: Пятница, 11 Марта 2011, 15:14 | Сообщение # 17
был не раз
Сейчас нет на сайте
Игра

1)При столкновении человечков в прыжке они могут застрять в воздухе и перестают двигаться, что делать?

2)У меня есть 1 обьект "Денежка", он расставлен по комнате в нескольких экземплярах, нужно сделать проверку, чтоб при взятии одной из этих денежек на одном компе, удалилась и на остальных! Не пойму как это сделать wacko

LunarPixelДата: Пятница, 11 Марта 2011, 15:25 | Сообщение # 18
старожил
Сейчас нет на сайте
аТнОтХоАн, посмотри программы по учету трафика.. их полно... с подробными отчетами по процессам и всем остальным... NetLimiter например.. happy

GameMixДата: Пятница, 11 Марта 2011, 15:35 | Сообщение # 19
старожил
Сейчас нет на сайте
Quote (FinalQ)
1)При столкновении человечков в прыжке они могут застрять в воздухе и перестают двигаться, что делать?

Убери в настройках спрайта человечка "точную проверку столкновения". И в настройках маски спрайта "полное изображение". Должно помочь.

Quote (FinalQ)
2)У меня есть 1 обьект "Денежка", он расставлен по комнате в нескольких экземплярах, нужно сделать проверку, чтоб при взятии одной из этих денежек на одном компе, удалилась и на остальных! Не пойму как это сделать

Я так понимаю, что игрок, который берёт денежку, виден и на других компах?
Если так, тогда можно в объекте денежки при столкновении с игроком ставить самоуничтожение.

Добавлено (11.03.2011, 15:35)
---------------------------------------------
По второму вопросу могу дать пример, если нужно, конечно. smile


Steel Standoff - 2D аркада.
Мои статьи
FinalQДата: Пятница, 11 Марта 2011, 16:39 | Сообщение # 20
был не раз
Сейчас нет на сайте
Quote
Я так понимаю, что игрок, который берёт денежку, виден и на других компах?

Да.

Quote
Если так, тогда можно в объекте денежки при столкновении с игроком ставить самоуничтожение.

Так и есть, вопрос в том как передать это другим игрокам что именно эта денежка уничтожилась, а не другая или вообще все.

Добавлено (11.03.2011, 16:39)
---------------------------------------------
А то на одном компе получается что денежка взята, а на других человечек до неё не допрыгивает

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг