Пятница, 22 Ноября 2024, 22:05

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
>> Статья о плагине NETwork (для создания он-лайн игр)
AntiAlianKillerДата: Среда, 10 Апреля 2013, 13:19 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Всем доброго времени суток! Вот решил написать обзор на плагин, который, как мне кажется, больше всего интересует всех.
Это плагин NETwork. Является самым востребованным плагином из всех, так как, уверен, каждый хотел-бы сделать свою он-лайн игру на конструкторе.
В этой статье я напишу Вам как им пользоваться, какие есть условия, события, параметры, о всех его секретах и недостатках.

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

=====Раздел "Messages" (Послание, или как у нас принято - сообщение)

> On any Massage (При любом сообщении)
Очень полезно для чата, если нам нужно, чтобы поступило, например, не конкретное сообщение, а любое.

> On Massage (При сообщении ...)
Тут, в отличии от предыдущего пункта, берется во внимание только то сообщение, которое вы указали. Может понадобится для выполнения определенных действий, т.е. "Если пришло сообщение Server Closed, то отключится от сервера". Но для этого лучше использовать пакетный тип передачи данных. О нем и говорится в следующем разделе.

=====Раздел "Packet" (Пакет)

> On Packet type (При пакете типа ...)
Самое важное условие, на котором все базируется. Вообще сообщения, можно было бы основать и на таком способе передачи данных, но все же автор плагина решил упростить нам жизнь, и отвел для них отдельные каналы, по которому они передаются. О каналах передачи пакетов мы поговорим позже, а пока я расскажу, для чего используют это условие. Оно, аналогично условию "On Massage" исполняет действие, если на ваш компьютер, подключенный к серверу, придет конкретный пакет, который вы указали. Например:
Как узнать, к кому пришло сообщение, и от кого оно отправлено?



Тут мы видим, что при приходе сообщения "RemovePlayer" и сравнения, существует ли игрок с таким ID у Вас в клиенте по "прикрепленным" данным к пакету удаляется копия спрайта этого игрока с таким ID. Зачем это нужно? При выходе игрока из сервера, чтобы тот не "стоял" на карте без действия, он автоматически удаляется. Это удобнее и для пользователя, и для сервера.
Также тут вы увидели параметр GetToken(Network.PacketData,1,","). Для чего он нужен, я расскажу в разделе параметры.

=====Раздел "Triggers" (триггеры - простейшие условия, выполняющие логическую функцию с обратной связью. Часто называют "повторителями")

> On connect (При успешном подключении к серверу)
> On connect filed (Если подключится к серверу не удалось)
> On disconnect (При выходе из сервера)

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

Теперь, когда мы разобрались с условиями, переходим еще в один немаловажный глобальный раздел - Действия

=====Раздел "Client" (Клиент, т.е. "рабочая среда" пользователя, подключенного к серверу)

> Connect (Подключится к ...)
Нужно для подключения к серверу. Пусть вас не пугают параметры, которые нужно указать. Я сейчас объясню, для чего они нужны.
Host - IP-адрес сервера к которому нужно подключится. Если вы хотите подключится к локальному серверу (для игры по локальной сети) просто укажите "localhost"
Host port - это порт сервера, по которому будут передаваться данные. Его указание нельзя упускать из виду, это самая важная часть подключения! Просто укажите тут DNS/UDP порт сервера, к которому будет подключаться клиент. При этом, он обязательно должен быть "открыт" у владельца сервера на компьютере или в маршрутизаторе.
Channels - это те самые каналы, о которых я обещал рассказать Вам ранее. Каждый канал - это отдельный "путь" передачи пакетов. Для чего они нужны? В основном, чтобы не загружать один и тот же "путь" передачи, и для индефикации пакетов. Например, в один канал можно посылать системные пакеты (кик, бан, проверка он-лайна), а в другой пакеты позиции игрока и информации о нем.
User Data - Количество портов, которые анализируются и рассматриваются сервером в очереди. 0 - не ограниченное, однако даже если поставить 1, то результат не изменится, разве что на сервер подсоединятся 2 пользователя одновременно.

> Disconnect (Отключится от сервера)

=====Раздел "Massage" (Сообщение)

> Send Massage (Послать сообщение)
Думаю, тут не возникнет вопросов. Тут, кстати, тоже можно указать канал, по которому передастся сообщение

=====Раздел "Packet" (Пакет)

> Send packet reliable (Отправить приоритетный пакет)
Этот пакет используется для передачи важных данных, таких как количество денег у игрока, его характеристики, или системные пакеты, типа бан, кик, смена ника и т.д.

> Send position packet (Отправить пакет позиции)
Нужен для быстрой передачи данных, которые не требуют надежности и дальнейшей обработки, типа передачи позиции игрока на карте

=====Раздел "Server" (Сервер)

> Host server (Создать сервер)
Тут нужно указать 3 параметра
Host Port - порт, "открытый" на Вашем компьютере или маршрутизаторе. Подробнее в разделе Client.
Max Clients - максимальное количество клиентов на вашем сервере. При попытке подключения большего количества, просто будут игнорироваться.
Chanels - количество каналов для передачи данных. Подробнее в разделе Client.

Наконец то, мы обошли два самых важных глобальных раздела этого плагина - Условия и действия. Но! Остались еще параметры...
Их немного, но без них невозможно обойтись!

=====Параметры

> Get ping round trip time (Вывести время, за которое пакет проходит на сервер, и обратно. Иным словами - пинг)
Кто играл в он-лайн игры, тот сразу поймет, что конкретно обозначает пинг. Зная пинг можно вычислить PPS - Packets Per Second ("Пакетов в секунду". Иногда ошибочно называют FPS) по этой формуле:
1000 / Network.RoundTripTime (количество миллисекунд в секунде, деленные на пинг)

> Packet Data (Вывести данные из пакета)
Самый важный параметр. Выводит данные отправленные в пакете. Отлично сочитается с GetToken -ами, если нужно передать больше, чем 1 параметр. Например:

"position" & ":" & global('ID') & ":" & player.X & ":" & player.Y

Как видите, все 3 значения разделены ":". Это делается для того, чтобы можно было "достать" GetToken -ом нужное значение.
Например, если мы введем GetToken(Network.PacketData,2,":"), то мы выведем значение "player.X".

> Get Massage (Вывести данные из сообщения)
Тут не должно возникнуть вопросов... Мы получаем сообщение (условием On Massage/On any Massage) и вставляем его в поле чата (Text > Set text > Network.Message).

=====На заметку

Если Вы передаете числовые данные, то при выводе, всегда "загоняйте" их под int( переменная ) - это превратит их в числа. Часто, тип передаваемых данных путается, и вы будете 2 часа искать ошибку, но так и не поймете, что, например, переменная "255" - текст! А текст, как известно, не воспринимается сравнивающими условиями.

=====Недостаток плагина.

Есть определенная группа пользователей, которые не могут подсоединится к серверу, так-как Win7 блокирует некоторые возможности плагина.
Их вход на сервер пагубно отображается на нем - он просто перестает нормально работать, пока не перезапустится.
Чтобы избавится от них - сделайте проверку. Типа отправлять каждую секунду пакет "проверка" на протяжении 10 секунд. Если по окончании проверки придет 10 пакетов - значит это нормальный пользователь, подходящий для игры. Если же нет - (отправится больше/меньше пакетов) предупредите их о том, чтобы запустили программу "В режиме совместимости". Спасибо xxxShade за эту информацию

===========================================
Вот и все. Больше я ничего не могу рассказать, все остальное Вы узнаете сами. Спасибо за внимание.
Если увидели ошибку - не надо флудить, просто напишите мне в комментариях, а лучше в лс.

Урок написал AntiAlianKiller (Даниил Гапонов). Специально для форума Gcup.ru cool

Скачать сам плагин (NETwork), и прилегающими исходниками с объяснениями можно тут - (официальный источник) >> скачать <<
Последняя версия Scirra Construct - (официальная ссылка) >>скачать<<


╔Искусственный интеллект - EVAbot
╠Убийственная музыка - EpicMus
╠Roguelike - Watcher of Dungeon
╠Однокнопочная стратегия - One Button Epic Battle
╠Он-лайн шутер - You Can Not win
╠Текстовый квест - TimeLess
╚Уникальный кликер - MineClick


Сообщение отредактировал AntiAlianKiller - Четверг, 01 Августа 2013, 21:14
GammezaДата: Среда, 10 Апреля 2013, 15:16 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Цитата (AntiAlianKiller)
типа передчи позиции игрока на карте

Не особо напрягающая ошибка tongue
Текст супер, когда все разжовано, но есть вопрос:
Цитата (AntiAlianKiller)
"position" & ":" & global('ID') & ":" & player.X & ":" & player.Y

Как видите, все 3 значения разделены ":". Это делается для того, чтобы можно было "достать" GetToken -ом нужное значение.
Например, если мы введем GetToken(Network.PacketData,2,":"), то мы выведем значение "player.X".

Как? где логика? ведь 2 - это Global id


Сообщение отредактировал Gammeza - Среда, 10 Апреля 2013, 15:17
IMnEpaTOPДата: Среда, 10 Апреля 2013, 15:58 | Сообщение # 3
Gamedev on Belarusian
Сейчас нет на сайте
Тоже недавно переводил инструкцию, идущую совместно с плагином. Если надо - могу скинуть, но перевод так себе.
AntiAlianKillerДата: Пятница, 07 Июня 2013, 11:54 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Цитата (Gammeza)
Не особо напрягающая ошибка

Спасибо.

Цитата (Gammeza)
Как? где логика? ведь 2 - это Global id

Нет. Геттокен "достает" значение ОТ 2 ":" до следующего.
После второго, как раз, и идет "player.X"

Цитата (IMnEpaTOP)
Тоже недавно переводил инструкцию, идущую совместно с плагином. Если надо - могу скинуть, но перевод так себе.

Любая помощь важна. Скинь в ЛС ссылку с переводом.


╔Искусственный интеллект - EVAbot
╠Убийственная музыка - EpicMus
╠Roguelike - Watcher of Dungeon
╠Однокнопочная стратегия - One Button Epic Battle
╠Он-лайн шутер - You Can Not win
╠Текстовый квест - TimeLess
╚Уникальный кликер - MineClick


Сообщение отредактировал AntiAlianKiller - Пятница, 07 Июня 2013, 11:54
dilovar50Дата: Воскресенье, 09 Июня 2013, 12:17 | Сообщение # 5
Construct Classic User
Сейчас нет на сайте
Спасибо за объяснение

Платформер-экшен в Scirra Construct для начинающих , статья состоит из 9 частей. PDF версия статьи(6 частей).
LetsOffBrainsДата: Воскресенье, 09 Июня 2013, 13:24 | Сообщение # 6
Project SoRDeLKa
Сейчас нет на сайте
Цитата
Нет. Геттокен "достает" значение ОТ 2 ":" до следующего.
После второго, как раз, и идет "player.X"

Не достает она "от второго", дело в другом.

Отправляем такой пакетик:
Create:player;153;82
Create в данном случае будет названием/типом пакета, который не входит в Network Data.
":" - обязательно ставится и разделяет название от данных.
player;153;82 - будет Network Dat'ой

И токен с сепаратором ";" выделит из него значения таким образом:
1) player
2) 153
3) 82

На счет двоеточия не уверен, возможно может быть использован другой символ. Главное убрать заблуждения на счет выделения данных токеном.



azaz32824Дата: Суббота, 15 Июня 2013, 19:19 | Сообщение # 7
участник
Сейчас нет на сайте
А можно подробней про пакеты, а то не получается с ними вобще ни как


xxxShadeДата: Понедельник, 22 Июля 2013, 17:44 | Сообщение # 8
почетный гость
Сейчас нет на сайте

Спам пакетами, из-за которых вешается серв, лечится запуском приложения в режиме совместимости. Тем самым можно сделать чтобы выгнанным пользователям, из-за несоответствии пакетов, выдавать уведомление о запуске в режиме совместимости.
GammezaДата: Четверг, 25 Июля 2013, 20:37 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
почему тема не синяя ?
last2424Дата: Четверг, 25 Июля 2013, 21:51 | Сообщение # 10
30 мл. блоков
Сейчас нет на сайте
xxxShade, совместимость с чем?

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

Сообщение отредактировал last2424 - Четверг, 25 Июля 2013, 21:52
GammezaДата: Четверг, 25 Июля 2013, 22:03 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
Народ помогите. делал как в исходнике шутера. делал по статье. сообщения то приходят, а с пакетами беда.

как их правильно писать?

P.S. все разобрался! теперь пойду делать мега ММО biggrin


Сообщение отредактировал Gammeza - Пятница, 26 Июля 2013, 10:56
_ToBe_Дата: Пятница, 26 Июля 2013, 17:21 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
А я так и не разобрался... К localhost подключается, а к IP нет sad Как и где указывать IP к которому подключаться?
yarickyarickДата: Пятница, 26 Июля 2013, 17:25 | Сообщение # 13
Маленький лицемер
Сейчас нет на сайте
_ToBe_, возможно сервер не работает. Может быть у вас заблокирован порт или у вас модем, в таком случае будет подключаться только к localhost.
_ToBe_Дата: Пятница, 26 Июля 2013, 18:01 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
yarickyarick, а с другого компьютера ко мне смогут присоединиться, если я оставлю localhost?

И может я что-то не правильно вписал что бы через ИП подключаться?
В строке где локалхост надо указать ИП?


Сообщение отредактировал _ToBe_ - Пятница, 26 Июля 2013, 18:06
AntiAlianKillerДата: Воскресенье, 28 Июля 2013, 16:58 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Ваш внешний IP можно узнать >>ТУТ<<
С другого компьютера к local-host серверу подключиться не возможно, разве что между ними протянуть локальный кабель (создать локальную сеть из нескольких компьютеров).
Если Вы хотите, чтобы клиент подключался через сеть интернет, надо указывать внешний IP (Например, Host - "46.172.207.116"). Серверу указывать IP не нужно, он автоматически хостит на всех IP, даже на доменных именах ( использует структуру INADDR_ANY )


╔Искусственный интеллект - EVAbot
╠Убийственная музыка - EpicMus
╠Roguelike - Watcher of Dungeon
╠Однокнопочная стратегия - One Button Epic Battle
╠Он-лайн шутер - You Can Not win
╠Текстовый квест - TimeLess
╚Уникальный кликер - MineClick


Сообщение отредактировал AntiAlianKiller - Воскресенье, 28 Июля 2013, 17:04
xxxShadeДата: Воскресенье, 28 Июля 2013, 17:28 | Сообщение # 16
почетный гость
Сейчас нет на сайте
last2424, "Запустить программу в режиме совместимости с Windows XP SP3"
_ToBe_Дата: Понедельник, 29 Июля 2013, 03:39 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
AntiAlianKiller, да, я хочу именно, что бы кто-то подключался к моему серверу через IP
Но почему-то не работает...


Вот когда "localhost" - есть подключение и сервер видит подключающегося, а как только вписываю вместо "localhost" свой IP "11.222.333.444" - не конектит... Т.е. я сам к себе подключиться не могу через IP адрес... Может дело в роутере? И если да, то как это исправить?
AntiAlianKillerДата: Пятница, 02 Августа 2013, 00:28 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Цитата (_ToBe_)
Может дело в роутере?

Если он присутствует, то да.
Цитата (AntiAlianKiiler)
Host port - это порт сервера, по которому будут передаваться данные. Его указание нельзя упускать из виду, это самая важная часть подключения! Просто укажите тут DNS/UDP порт сервера, к которому будет подключаться клиент. При этом, он обязательно должен быть "открыт" у владельца сервера на компьютере или в маршрутизаторе.

Видимо ты проигнорировал эту часть статьи. Гайды по открытию портов для разных производителей роутеров ты можешь найти в гугле.
Для TP-link, например, вводишь в строке браузера "192.168.0.1", затем вводишь ник пароль ( по умолчанию admin/admin ), затем переходишь в раздел "Forwarding", и нажимаешь "Add new...".
Эта процедура обязательна только для хостеров (сервера), клиенту этого делать не обязательно.


╔Искусственный интеллект - EVAbot
╠Убийственная музыка - EpicMus
╠Roguelike - Watcher of Dungeon
╠Однокнопочная стратегия - One Button Epic Battle
╠Он-лайн шутер - You Can Not win
╠Текстовый квест - TimeLess
╚Уникальный кликер - MineClick


Сообщение отредактировал AntiAlianKiller - Пятница, 02 Августа 2013, 00:29
last2424Дата: Пятница, 02 Августа 2013, 00:49 | Сообщение # 19
30 мл. блоков
Сейчас нет на сайте
_ToBe_, попробуй 127.0.0.1 в ковычках.

Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
GammezaДата: Пятница, 02 Августа 2013, 06:24 | Сообщение # 20
постоянный участник
Сейчас нет на сайте
Цитата (last2424)
127.0.0.1

Это тот ж самый localhost

Добавлено (02.08.2013, 06:24)
---------------------------------------------
Даю установку делать Sims 2D возрождаем старые темы tongue бугагашеньки

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

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