Construct Community

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Construct Community » Прочие уроки » Plugin Network v0.3a


Plugin Network v0.3a

Сообщений 1 страница 20 из 40

1

Construct classic Network Plugin — Download
Источник:
Довольно популярный плагин, который в последнее время пользуется все большей популярностью среди участников американского форума.
Данный плагин позволяет вам создавать онлайн игры и приложения.

В архиве плагин+пример.
В данном плагине есть два типа пакетов (надежные или быстрые). Так же плагин унаследовал недостатки udp. В сообщения нужно вставлять номер и хеш сумму. В примере от источника этого нет.
Для номеров удобнее использовать хеш таблицу. А для хеш суммы плагин(md5)

Подготовка. Сначала нужно создать сервер, клиент, установить между ними соединение, подготовить хеш-таблицу.
Для сервера и клиента.

Код:
Start of layot:
>HashTable: Insert key (MesseageNameNum) with value 0
>HashTable: Insert key (MesseageNameData) with value 0
Для сервера:
>Network: Host server on port (!1234) (!32) max clients & (!2) channels
Для клиента:
>Network: Connect to (!ServerIP) on port (!1234) using (!2) channels and (0) user data.

Переменная "MessageNameNum" используется для нумерации пакетов, а переменная "MessageNameData" используется при формирование пакета. То есть в данных примерах используется некий язык сетевого общения. Нужно отметить что сервер выполняет функции маяка. И на самом деле сам сервер подключается к себе как клиент. Сообщение посланное с одного компьютера доходит до всех клиентов. Именно по этому нужно вшивать в сообщение адрес.

Передача сообщений.

Код:
Every (60) miliseconds:
>"HashTable": add (1) to key ("MessageNameNum")
>"HashTable": set key "MessageNameData" to value ("!Data")
>"Network":Send position packet ["!MessageName:"&
MD5.MD5String("!ID"&":"&HashTable("MessageNameNum")&":"&HashTable("MessageNameData"))&
":"&"!ID"&":"&HashTable("MessageNameNum")&":"&HashTable("MessageNameData")]

Теперь надо пояснить. Здесь используется функция "send position packet". Выбор способа reliable или position зависит от важности данных.
Пакет отмечен квадратными скобками. Структура пакета такова, "заголовок:данные".
В нашем случае структура дополнена
"заголовок(MessageName):
хеш-сумма(длинный код начинающийся с"MD5.MD5String" и кончающийся "))":
ID(номер игрока, адресация. Так как пакеты рассылаются всем клиентам.):
номер пакета"(HashTable("MessageNameNum")":
данные"HashTable("MessageNameData")".
Восклицательными знаками помечены непосредственно данные(Данные разбиты в другой ивент чисто для удобства), адрес(ID) и имя пакета в начале(MessageName). 60 миллисекунд это частота отправки.

Прием сообщений.

Код:
Network:OnPacketType(!MessageName)

+Compare:
[MD5.MD5String(remove(Network.PacketData,GetToken(Network.PacketData, 1, ":")&":"))]
Equal to
[GetToken(Network.PacketData, 1, ":")]

+Compare:
[int(GetToken(Network.PacketData, 3, ":"))]
Greater than
[HashTable("MessageNameNum")]

+Compare:
[int(GetToken(Network.PacketData, 2, ":"))]
Equal to
[!ID принимающего клиента]

>>HashTable:Set key (MessegaNameNum) to value[GetToken(Network.PacketData, 3, ":")]
>>Данные достаются кодом [GetToken(Network.PacketData, 4, ":")]

Тут осуществляется три проверки. Хеш, номер сообщения, кому адрессовано.
Хеш: Из сообщения удаляется хеш и заново генерируется по результату.  Потом генерированный сравнивается с присланным.
Номер: Номер из сообщения сравнивается с тем что в таблице. На проверку, новый пакет или старый.
Кому адрессовано: Тут можно пофантазировать, сообщения могут отсылаться одному или нескольким клиентам.
Нужно отметить, что на событие "onpackettype" не стоит вешать много действий, в особенности связанных с графикой и размножением данных. Так как событие генерируется каждый тик.
И то, что хеш можно использовать для защиты сообщений от взлома, в данном примере степень защиты хешом маленькая. Только проверка целостности.

Ссылки на источники:
scirraconstruct.ru
www.scirra.com

Это мой первый урок.

Отредактировано OMegaCode (2012-09-06 15:35:21)

2

OMegaCode
в начале текста напиши для чего плагин... так как мне пришлось прочитать весь пост чтобы понять что он для скирры....

3

EvilTorn написал(а):

OMegaCode
в начале текста напиши для чего плагин... так как мне пришлось прочитать весь пост чтобы понять что он для скирры....

Немного удивлен. Разве этот форум не про конструкт (реторический). Правил.

Отредактировано OMegaCode (2012-09-04 17:15:19)

4

про констракт.. но ы же видел там к примеру есть уроки про фотошоп...
и для тех кто не в теме, нужно написать что это про фотошоп... ибо могут подумать, чо подобное можно в констракте рисовать....уловил мысль?

5

Вообще не понял нафига все эти заморочки с мд5 и хэш таблицами... Сколько пользовался плагином и без этой фигни все ок.

6

Во избежание деформации, изменения, замены, потери очередности, утери(благо на случай утери есть метод reliable).
Товарищ вы знаете хоть что такое udp? Вроде солидный человек... Любая программа, используя udp, должна контролировать целостность и нумерацию пакетов. В отличии от TCP(правда tcp тоже не контролирует целостность, но хотя бы надежная доставка).

МД5 и есть самый распространенный способ контроля целостности(Надеюсь понятно что такое хеш-сумма?). В хеш-таблице прописываются данные для отправки(разбито чисто для удобства), последний номер пакета(Пакеты могут приходить в разное время, по разным каналам). Конечно можно использовать гл.переменные. Но лично у меня произошел слет, из за их большого числа. Хеш-таблица лишь для того чтоб не засорять гл.переменные.

Вот не верю что у вас плагин работал прям ок! У меня вот не ок. Ну или показывайте схему.

PS. Используйте чаще нормативный лексикон, нежели...

Отредактировано OMegaCode (2012-09-06 15:34:07)

7

Я щас в офисе, приеду домой, выложу наработки моей будущей космострелялки. Она сетевая. Все работает без проблем. Никаких мд5 и хэш не использовал, так что как ни умничайте, а мотивации для практического применения мд5 и таблиц я так и не увидел.

8

Вот часть: "вот не ок."
А причина мд5 очевидна, плохое соединение и взлом. Про хеш уже писал.
Знаете ваши слова меня добивают. Неужели не понятно? Вот, Википедию почитайте. Желательно внимательно, ну если совсем непонятно, то много диагнозов можно найти.

вики UDP

UDP (англ. User Datagram Protocol — протокол пользовательских датаграмм) — один из ключевых элементов Internet Protocol Suite (более известного как TCP/IP), набора сетевых протоколов для Интернета. С UDP, компьютерные приложения могут посылать сообщения (в данном случае называемые датаграммами) другим хостам по IP-сети без необходимости предварительного сообщения для установки специальных каналов передачи или путей данных. Протокол был разработан Дэвидом П. Ридом в 1980 году и официально определен в RFC 768.
UDP использует простую модель передачи, без неявных "рукопожатий" для обеспечения надежности, упорядочивания или целостности данных. Таким образом, UDP предоставляет ненадежный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не необходимы, либо должны исполняться в приложении. Чувствительные ко времени приложения часто используют UDP, так как предпочтительнее сбросить пакеты, чем ждать задержавшиеся пакеты, что может оказаться невозможным в системах реального времени. При необходимости исправления ошибок на сетевом уровне интерфейса приложение может задействовать TCP или SCTP, разработанные для этой цели.

И цитата scidave'а(автора) с английского форума:"The plugin uses UDP".

Отредактировано OMegaCode (2012-09-06 15:39:17)

9

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

10

OMegaCode не пойму кого ты из себя строишь... Что такое протоколы соединений и как они действуют я и без твоих соплей знаю. Это раз. Во вторых, практического применения шифровка в конструкте не имеет, пустая трата времени, сил и ресурсов и без того слабого механизма соединения. В третьих учи матчасть прежде чем дедушек учить. В четвертых пост выше все написал)))

11

Severfoks написал(а):

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

Ну и где здесь пост про этот плагин? Выкрутится из чего? Нежели что?

GeorgeThreeD написал(а):

OMegaCode не пойму кого ты изSeverfoks
себя строишь... Что такое протоколы соединений и как они действуют я и без твоих соплей знаю. Это раз. Во вторых, практического применения шифровка в конструкте не имеет, пустая трата времени, сил и ресурсов и без того слабого механизма соединения. В третьих учи матчасть прежде чем дедушек учить. В четвертых пост выше все написал)))

Ну и где обещанный исходник? Вижу тут любят людей разносить. 1:Сопли - слишком категорично. 2:Где ты в примере увидел шифровку? 3:Значит ты знаешь мат часть. Так почему не смог понять?
4:Повторять за другими не хорошо.

PS Сообщники прям...
И дедушки не должны ругаться.

Отредактировано OMegaCode (2012-09-06 19:08:18)

12

Я тоже в 16 лет принимал всё в штыки и сильно умничал.

13

OMegaCode
человек занят. если сказал что будет исходник. значит будет=З

14

Severfoks написал(а):

Я тоже в 16 лет принимал всё в штыки и сильно умничал.

Вы меня просто убиваете, я ведь почему написал. На офф ру спрашивали пособия на русском( или как то так ). Не нашел.
У меня пакеты первые 5 сек шли нормально(почти), но потом начинали приходит десятки дубликатов. Понятно что выходило. http://s1.uploads.ru/t/OG95I.png
Я таки нашел решение! Хотел поделиться! И тут человек говорит что "нефига" не понимает. Плюс "мотивации для практического применения мд5 и таблиц я так и не увидел".
Знаете, убивает. http://s1.uploads.ru/t/2vMi1.png  "Я тоже" - самокритично. Уважаю таких. Хотя похоже вы не сильно изменились. Аж сразу два ответа. http://s1.uploads.ru/t/TsdHu.png

EvilTorn написал(а):

OMegaCode
человек занят. если сказал что будет исходник. значит будет=З

Ладно, будет так будет.
Вот думаю может с роутером связаны эти дубликаты?

PS. Только вот не пойму, почему мне не дали аргументированный ответ. Я то вроде давал. Это ведь под статью форума.  Ниче не понимаю http://s1.uploads.ru/t/Sqzyu.png
Смайлоспавн http://s1.uploads.ru/t/Sqzyu.png У вас тут весело.

Отредактировано OMegaCode (2012-09-06 19:47:02)

15

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

16

EvilTorn написал(а):

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

Вы художник, и художник хороший(для меня такое очень тяжело). А вот выучившие мат часть, как бы должны аргументировать. Ну ладно, похоже это обычное дело. http://s1.uploads.ru/t/Zyuj1.png
Надо привыкать. Тоже не буду давать арг. ответов. http://s1.uploads.ru/t/TsdHu.png
А почему в палитре два таких смайла http://s1.uploads.ru/t/tCjEg.png?

17

что ты пристал с аргументированным ответом? На что тебе его дать? Пролистал бегло, вопроса, который бы требовал аргументированного ответа, так и не нашел.

18

http://s1.uploads.ru/t/TsdHu.png
Очень хочу посмотреть на твой исходник, прям глаза горят! http://s1.uploads.ru/t/F316f.png

Отредактировано OMegaCode (2012-09-06 20:21:47)

19

Исходник будет когда я домой приеду. За задержку извиняюсь, уже третий день в офисе живу...

20

OMegaCode
ой да ладно вам...ну прикратите=З
http://users.stopgame.ru/uploads/images/280427/form/1336326970.png


Вы здесь » Construct Community » Прочие уроки » Plugin Network v0.3a


создать свой форум бесплатно