forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   BlitzMAX сервер / Blitz3D клиент (RakNET) (http://forum.boolean.name/showthread.php?t=15304)

LLI.T.A.L.K.E.R. 17.08.2011 19:59

BlitzMAX сервер / Blitz3D клиент (RakNET)
 
На основе Multiplayer Top-Down Shooter от baton4ik...
Очень хочу сделать связку BlitzMAX сервер для Linux / Blitz3D клиент Windows.
Так как, изучив доступные игровые движки, только BlitzMAX с RakNET модулем работает на Linux (особенно как сервер).

Пытаюсь перевести клиент шутера на Blitz3D. Что получилось:
при соединеии клиента в блит3д - в блитзМАХ игрок коннектится
а вот при передачи сервера блитзМАХ - на блитз3д информация теряется

Возможно это из-за различий типов переменных (ну там int, char, string)
А ещё UnsignedShort, UnsignedChar если смотреть в пример SampleExample.bb

Пишу здесь так как baton4ik сюда заходит :rolleyes:

(на счёт того, что лучше на ЯП C писать чем возиться с BlitzMAX - ответ стандартный: "здесь почти всё готово") ну скоро на линукс перейду, а там и на ЯП С посмотрю.

Скачать: BlitzMAXServer+BlitzMAXClient+Blitz3DClient=RakNET .rar

NitE 17.08.2011 20:07

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
Цитата:

Blitz3D клиент для Linux.
????

moka 17.08.2011 20:12

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
Дело в том что сам RakNet имеет свой протокол над пакетами, и независимо от посылаемой информации которую шлёт пользователь, там в пакете будет различного рода информация для стабилизации передачи пакетов по UDP, для стабилизации очерёдности и другое. Поэтому просто так с сокетами и прямой комуникацией не выйдет.

Используй чистую коммуникацию через сокеты, т.к. с библиотеками (такими как RakNet), тебе нада знать специфику их пакетов. Также UDP для начинаний - не лучший выбор, бери TCP.

Почему именно RakNet? Я лично пробовал его использовать, и потом всё таки решил писать своё. И очень доволен, и опыт, и контроль над самим сетевым API полный. И сериализация достойная и кучу всего другого.

Пишу если что сервер на C# (.Net 4.0). Клиента на C# тоже (.Net 2.0), но также в скором будет клиент и на BlitzMax'е.

Да и насчёт C, тут спорно всё, для чего нужен сервер? Если это гипер проект (ММО убийца WoW, то можно и на C), но снова зависит от специфики проекта. Тот же EVE вообще написан на Python.
Если это игра с матчами, можно взять и Java или C#, где о многих вещах не нужно париться, и они практически не проигрывают в производительности тому же С, если правильно разрабатывать. (Конечно речь не идёт о высоко-нагруженных системах)

LLI.T.A.L.K.E.R. 17.08.2011 20:23

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
NitE, поправил. Слова не так расставил.

Попробую отказаться от RakNET

(C я обобщил как с# или с++)

baton4ik 17.08.2011 20:24

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
А почему клиент на blitz3d? На blitzmax ведь есть модуль с аналогичным функционалом (а ещё лучше - xors3d). Заодно получишь всё то, что есть в blitzmax в отличии от blitz3d. И RakNet нормально функционировать будет.

LLI.T.A.L.K.E.R. 17.08.2011 20:26

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
3D на BlitzMAX осуществляется через MiniB3D?
Просто не видел 3д сделанное на BMax

baton4ik 17.08.2011 20:32

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
Цитата:

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 199196)
3D на BlitzMAX осуществляется через MiniB3D?
Просто не видел 3д сделанное на BMax

MiniB3D, Xors3d, куча врапперов разных 3d-движков.

moka 17.08.2011 20:46

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
Если проще, то у тебя есть два варианта, которые я бы лично рассматривал:

1.
Server: BlitzMax + RakNet
Client: BlitzMax + RakNet + Xors3D

2.
Server: C# + Sockets (System.Net.Sockets)
Client A: C# + Sockets + Xors3D / OpenTK
Client B: BlitzMax + Sockets + Xors3D

Сравнивая их, на BlitzMax будет быстрее разрабатывать, т.к. ты уже знаком с ним, но основываясь самому языку и выбранного инструментария, возможности будут ограничены. И если рассматривать с точки зрения опыта и практических знаний, то у самого BlitzMax перспектив миниму по сравнению с C#. Когда на том же C# можно и работу найти хорошую, и проекты уже стоящие разрабатывать.
Плюс, ты зависишь от сетевой библиотеки, и всех её капризов (а они всегда есть).

Во втором варианте, сервер всё просто, только нужно самому не мало написать кода. Но какие плюсы - скорость, архитектурные возможности в сложных задачах, хорошие решения основываясь функциям языка, сериализация для сети и баз данных. Также базу данных подключить не проблема (большой выбор, куча хорошего инструментария).
Вариантов для клиента во втором варианте два (можно больше, хоть на мобилках, т.к. пишешь коммуникацию на чистых сокетах).
Первый вариант, тоже C#, что в этом хорошего? Сложность игры, и геймплая и многих решений, также может быть выше. Сетевая сериализация пакетов на сервере и клиенте, может быть реализована одной и той же библиотекой, так что не нада будет писать много кода, т.к. они используют одно и то же решение.
Можно использовать с Xors3D, без проблем, там и шейдеры есть, и привычный тебе синтаксис.
Можно писать на OpenTK (OpenGL), если есть желание мульти платформ, но тут учитывай, что OpenGL - это голенький GAPI, где нужно писать графический движок самому, и если у тебя никаких сложностей в графике, можно и так, но работы там будет писец как много. Но есть возможность если писать на Mono (альтернатива .Net, на том же C#. Технически почти никакой разницы с точки зрения разраба), то будет возможность поддержки и MacOS и Linux. А если юзать OpenGL ES, то используя MonoTouch можно компилить на iOS девайсы, а используя MonoDroid можно компилить под Android систему. Но работы снова, будет писец как много. Но опыт работы с OpenGL будет естественно очень ценным для будущего.
Второй вариант клиента, как раз тот же BlitzMax + сокеты, и использование Xors3D. По сути, лучше уже юзать первый вариант, если клиент всё таки будет на BltizMax, так будет проще и удобнее для разработки. Я бы шёл либо C# полностью либо BlitzMax полностью.

LLI.T.A.L.K.E.R. 21.08.2011 23:14

Ответ: BlitzMAX сервер / Blitz3D клиент (RakNET)
 
Пока скажу коротко... Связь RakNET меджу BMax и B3D хорошая.
Оказывается просто портированный на B3D клиент шутера циклом создавал новых и новых игроков. (ну или это я не до конца логику портировал)
Временно сделал перепровеку всех id и ограничение на создание нового игрока. (кажется этот код я и не портировал) Просто type сильно отличаются


Часовой пояс GMT +4, время: 18:06.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot