LTagKirov писал(а):
Pingvin писал(а):
Есть закрытая ветка для разрабов. Там "праздношатающихся" нет! Там безопаснее обсудить. Лично мне интересно.
Не надо становится неуловимыми Джо, комерсам на такую систему плевать с высокой колокольни
Я займусь подготовкой документации по своей системе радиообмена в ближайшее время. Может действительно сразу в паблик.
LTagKirov писал(а):
Alexies писал(а):
Проектирование радиообмена нужно начинать с определения нужных сетевых уровней...
Давайте отойдём от шаблонов, мы достаточно грамотные разработчики чтобы не пихать enterprise решения в игрушки. У нас не докторская дисертация, здесь не нужна OSI, дополнительно в реально работающих сетях например IP никогда небыло 7 уровневой модели
Надо исходить из функционала который _нужен_ для игры, а для лазертаг игры нужны _события_, а не _данные_!.Да ради бога, "отходите от шаблонов". Я всего лишь хотел сказать, что задачу целесообразно разделить на несколько:
1. Физическая передача - нужно научиться программировать радиомодуль.
2-3. Канальный уровень - нужно адресовать пакеты, чтобы они могли доходить от одного конкретного устройства к другому
4. Транспортный уровень - нужно уметь "поддерживать связь" тем или иным образом, прозрачно для приложения. У меня для того есть Acknoledgement-ы, хотя поддерживается работа и без них - это лишь один бит в пакете. Ну и ещё есть некоторые фишки. Не хотите такой возможности - не делайте. Это усложнит жизнь.
5-7. Собственно, сама полезная нагрузка пакета. Какая команда что означает, как сериализуются аргументы команды и т.п.
Эти пункты между собой абсолютно независимы. Мало того, легко сменить любой из этих уровней без ущерба остальным. Если, конечно, код написан нормально.
Если вы предлагаете начать разработку с последнего пункта (5-7) - пожалуйста. Всё равно придётся решить все задачи, которые я описал выше, так или иначе. "Грамотные разработчики", обычно, не пытаются смешивать всё в одну кучу.
И модель OSI - это не какая-то абстрактная фигня, а только лишь призыв: давайте не путать теплое с мягким, и подходить последовательно.
[офтоп]Когда говорят о несоответствии TCP/IP модели OSI, имеют в виду, что сопоставление уровней иногда (крайне редко!) неоднозначное. Например, непонятно, на каком уровне работает ARP, на канальном или сетевом (ARP узнаёт мак-адреса в подсети по айпишнкам). И причина этому не в том, что "ребята просто взяли и сделали, не оглядываясь на теоретиков", а что в те времена, когда создавался TCP/IP, ничего понятно ещё толком не было, поскольку как раз практического опыта было мало. Ещё верно утверждение, что TCP/IPv4 устарел, а OSI не может устареть.[/офтоп]
LTagKirov писал(а):
Alexies писал(а):
Возможность достоверной доставки пакета (чтобы отправитель знал, дошёл ли пакет, или нет). То есть пакеты с acknowledgement-ами. Это делается НЕ встроенными в радиомодуль средствами по многим причинам.
1. Протокол доставки точно _не_ должен входить в систему радиоАПИ. РадиоАпи надо описать в терминах UDP, однако у нас радиопакеты всётаки несут не информацию(блок данных) а функцию(событие), как типичные ИК команды. Например повязке или гранате наплевать выключился маркер или нет, при этом от повязки(или наоборот) постоянно передаётся пакет (в вашем термине heartbeat). Ну не пришёл пакет до маркера, ничего страшного придёт попозже, не придёт слишком долго - маркер выключается сам. То есть квитирование не является необходимым элементом для реализации геймплея лазертага, опять таки перестанем мыслить шаблонно, мы делаем не сеть передачи данных, а _игру_.
О пакетах-событиях: информация в событии (для общего канала) должна быть примерно такой
- от кого и для кого(всех)
- ид события, примреная таблица событий
- параметр события, необязательно
- время(счётчик) жизни события: для ретрансляции, завершения активности и тд
Ну тут я не могу со всем согласиться. Делайте, посмотрим. Я свою систему сделал и скромно предлагаю своё решение. "Протокол доставки точно _не_ должен входить в систему радиоАПИ" - я так-то про это и говорю, это разные уровни по той же OSI, и они независимы. Если я правильно понял, что именно Вы называете словом радиоАПИ.
И ещё немного моего занудства: не называйте, пожалуйста, ретранслятор роутером. Это совсем разные вещи. Термины давно придуманы, новых не требуется...
В общем, не буду разбирать по цитатам, отвечу так на остальное:
"Ретрансляция - штука медленная" - Это почему? У меня это просто один пакет. И ведь nrf24 слушает только один канал!
Почему я считаю, что HW-адреса, это плохо? - Ещё и потому, что если адрес закодирован в пакете, то легко перейти на другой радиомодуль, если понадобится. Ведь это только замена физического уровня! Меняется только код непосредственной работы с модулем.
Зачем все эти навороты (ретрансляция, синхронизация параметров) личникам? - Во-первых, я нацелен не только на личников, а хочу сделать универсальное решение. И у меня даже что-то получается. Личнику всё равно приятно поменять настройки с телефона, например. Блютус-мост один на несколько человек, думаю, "личники" потянут. А если игра целиком на системе Caustic, то это всё нужно для статистики и управления игровым сценарием, для возможности удобного размещения индикаторов игрового процесса в любой точке поля. И вообще, почему бы не выжать из технологии максимум? Мне не интересно писать простой код, хочется что-то нетривиальное. Я делаю лазертаг не чтобы как можно скорее срубить бабла, и не чтобы сделать ещё один таг8. По большей части, я делаю его по приколу.
В ближайшее время сниму, наконец, видео, чтобы не быть беспредметным. Станет понятнее, зачем эти "навороты".