Online Deathmatch + исходник

TheChosenOne:
Итак, сегодня я представлю свою версию онлайн игры, но в отличии от iamnp я во-первых предоставлю исходник, во-вторых конкретно разжую суть плагина в-третьих разберу его недостатки.
Начнем с того что я не делал проект с чистого листа, я взял уже готовый (относительно) исходник и сильно его модифицировал, дело в том что я не люблю изобретать велосипед заново и я посчитал что модификация исходника будет лучше его полной копии.

Тестировать в отличии от iamnp я не мог на двух компьютерах, вместо этого обошелся одним создавая и сервер и клиент и по очереди ими управляя (вот такой вот геморой Важное примечание: У меня есть внешний IP (наверное, просто не до конца уверен, не было возможности протестировать) вот он: 84.19.169.162 кто хочет - подключайтесь.

Online.rar

OnlineGame.cap

TheChosenOne:
хмм. видимо IP не внешний. установить соединение на моем компе не получилось


iamnp:

Суть плагина?

player:
Плагин написан с целью теста (создать элементарный сервер, клиент и вывести на евенты). Подходит для чата или пошаговых игр : крестики нолики, шашки, карточные и т.п.
На данный момент scidave работает над udp плагином для реал-тайм игр. Данный же плагин использует tcp, который медленнее чем udp т.к. в него входят лишние операции и данные контролирующие доставку. Но, в отличии от udp (грубо говоря) tcp гарантирует 100% доставку данных + в той последовательности в которой они были отправлены т.е. ставит данные в очередь и поочередно отправляет, контролируя дошли данные или нет. Относительно задержки – не реализована как таковая сетевая интерполяция. В некоторых сетевых играх (реал тайм шутерах и пр) данные не отправляются каждый тик или мс. а раз в 20+ мс – это сделано для распределения нагрузки на сеть, а клиент и сервер уже просчитывают траекторию и при получении пакета сверяют и координируют координаты объектов. По этому поводу есть много статей и тем в интернете и на gamedev’е если хотите можете прочитать.
На счет нехватки отправляемых значений - для теста реализованы всего три структуры:
Int (long) x, y, z;
Строка в 256 символов;
И набор из трех строк в 126 символов каждая;
Ключевая функция это Recive – именно она принимает все входящие данные. После ее выполнения данные уже будут записаны в переменные внутри плагина. Например вы можете использовать x, y или z как контроль определенного типа полученных int данных, например:
Клиент:
Изображение
Сервер:
Изображение
Что касается ip - подходит в принципе любой (плагин тестировался(VPN, роутер) - работает). К примеру если у вас роутер то биндить сервер следует на ip того компьютера на котором он запущен (прим.: 192.168.123.1), подключать клиент на ip роутера (ваш внешний ip (http://2ip.ru/. а на роутере (в контрольной панели) сделать пробросы до ip на котором запущен сервер на определенный порт (к примеру у роутера Level One по умолчанию стоят пробросы ip 192.168.123.1 port: 55551).

VICU:
Нарушение правил. Где ссылка на плагин для исходника?.

Yellow:
где плагин скачать?