Перейти к содержимому
AtomicScience

OpenComputers Network Stack - TCP/IP-подобный сетевой стек

Рекомендуемые сообщения

Говорить о ненужности программы, так как ею нельзя копать "картошечку", не ахинея ли великая? Проснись, народ! Майнкрафт не на одной картошке повязан! Не пропустили ли вы "sandbox" у игры в описании? Так можно говорить, что и OC не нужен, и кубики не нужны, и вообще всё не нужно и бессмысленно. А такое уже лечить нужно.

 

Стримы нужны! Но не всякие:

  • Сеть должна иметь нормальную топологию. Работать внутри <=400 блоках модема — ненормально.
  • Потоки лучше тем, что юзеру не нужно мучаться с делением большого контента на пакеты, которые влезают в maxPacketSize. Если такого нет, это ненормально.
  • На получателе последовательность пакетов должна быть такой же, как и на сервере. Если сначала придут 3 байта конца, а потом 8192 байта начала, это ненормально.
  • Получатель должен получить все пакеты, которые отсылает отправитель. Если половина потеряется, а сеть не оповестит даже об этом получателя, это ненормально.
  • Получатель не должен получать дубликаты пакетов. Если сообщение вдруг вырастает в 2 раза по размеру, это ненормально.
  • В сети нужна какая-то защита от дудоса. Если кто-то в пещере делает вайл-тру-ду-сенд, и из-за этого никто другой не может юзать сеть, это ненормально.
  • Наконец, необходимость набирать огромную кучу лишнего кода, есть тоже ненормально. Если для ответа так или иначе надо создать свой стрим, так почему ж не сделать это сразу в либе и отдать аргументом функции-листнеру? Да и одним бы стримом можно было бы справиться, как мне кажется, смысла во втором не вижу.

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

 

P. S. Если кто-то обижен тоном этого поста, прошу прощения. Очень понравилось это выступление.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вот согласен с товарищем @Fingercomp почти по всем пунктам.

 

Что касается "картошечки", то тут мне видится два пути.

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

Либо ты презентуешь свою программу как творческий эксперимент, и проект для фана - и тогда она естественно будет практически никому не нужна. Но ты получаешь полную свободу творчества, костылизма, велосипедирования и построения какого угодно хаоса. "Сандбокс".

 

А тут у нас "сандбокс", который пытается выдать себя за "картошечку", и при этом сыпет перлами вроде "комьюнити, без обид, ныне представляет из себя весьма жалкое зрелище" и "вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы", за то, что пользователи не увидели особенного смысла и пользы в презентованном творении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, Totoro сказал:

А тут у нас "сандбокс", который пытается выдать себя за "картошечку", и при этом сыпет перлами...

Просто автор овладел постиронией, а комьютини – нет.

11 час назад, AtomicScience сказал:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, eu_tomat сказал:

Просто автор овладел постиронией, а комьютини – нет.

Хорошая отмазка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Totoro,@Fingercomp , искренне благодарю за качественной фидбек - благодаря вам я определил основные направления развития своего проекта.
Итак, к OCNSv2 я представлю:

  • Расширенное API протоколов mIP и mUDP, которое позволит работать с сетью с помощью слушателей, как предлагал Тоторо, а также через "ванильную" event-систему
  • Улучшенный протокол mNSP, значительно более упрощенный с точки зрения пользователя (боюсь, что в echo все-таки придется открывать второй поток :( )
  • Протокол mTCP и потоки, реализованные через него - это позволит гарантировать сохранность данных, правда, ценой скорости
  • Драйверы интерфейсов - на первое время реализую только modem и loopback

Но первым делом - выход на международную арену, то бишь на официальный форум. Авось, там что еще подскажут

 

P.S

Учите постиронию ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, AtomicScience сказал:

Учите постиронию ;)

Я бы поверил что это была постирония, или что угодно.

Но смущает отказ от русскоязычной документации. Он говорит вполне однозначно и без иронии - это форум не целевая аудитория. У проекта наполеоновские амбиции, и это взаправду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Totoro сказал:

Я бы поверил что это была постирония, или что угодно.

Но смущает отказ от русскоязычной документации. Он говорит вполне однозначно и без иронии - это форум не целевая аудитория. У проекта наполеоновские амбиции, и это взаправду.

Хорошо, уговорил, будет тебе русскоязычная документация, но ко второй версии, и вики на GitHub мне в этом поможет

 

Может, еще какие предложения есть?

Изменено пользователем AtomicScience

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, AtomicScience сказал:

Может, еще какие предложения есть?

Пока и так дофига.

Верим, ждём, надеемся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 07.06.2019 в 08:19, Fingercomp сказал:

В сети нужна какая-то защита от дудоса. Если кто-то в пещере делает вайл-тру-ду-сенд, и из-за этого никто другой не может юзать сеть, это ненормально. 

Кстати, это очень щепетильный вопрос, учитывая скорость вызовов к компонентам.

Лично я планирую реализовать функцию аппаратных сокетов, то есть позволить ARP'у получать не только физические адреса машин, но и выделять на них порт (который открывается на компоненте). Если сокет перегружен - modem.close('порт'). Элегантно, просто и надежно. Правда, порты для новых клиентов таким образом никак не защитить, но по крайней мере "старожилы" смогут пользоваться сетью без каких-либо затруднений.

Изменено пользователем AtomicScience

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне понравилось, но дальше пинга немогу уйти :D не пойму как работает эхо, просто пустую строчку выводит. Нуждаюсь в примитивных примерах ввода вывода информации.. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кажется, часть файлов (сама библиотека) нашлась: https://github.com/AtomicScience/OCNS

Там нет программ вроде смены IP и прочего, т.е. команда change_mIP работать не будет. Но сама библиотека вроде цела.

 

(уже фантазии)

А может быть, идёт разработка новой версии стека, который займёт место старого?

(Скорее всего, причина прозаичнее: автору могло понадобиться место на Яндекс.Диске.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, ProgramCrafter сказал:

А может быть, идёт разработка новой версии стека, который займёт место старого?

Я думаю попросить название взять такое же (mIP, mTCP, mUDP?) и попробовать, но ничего не гарантирую. 10024-thinking-face-icon_cubic-20x20.png.f9443b3f50f286b98caff9ee2921a7ec.png

Планирую делать другой алгоритм поиска пути, поскольку никто не хочет заниматься ручной настройкой и разницы рангов как таковой нет, система провайдеров нам не подойдет (требует ручной настройки и централизации в виде провайдера), как и DHCP (требует настройки и централизации в виде роутера). Поскольку сеть будет скорее всего одноранговая, то ARP технически тоже не нужен, как и виртуальные адреса (обойдемся физическими). Думаю больше подойдет что-нибудь типо адресной книги (над форматом все еще думаю), либо как zn сеть... 10024-thinking-face-icon_cubic-20x20.png.f9443b3f50f286b98caff9ee2921a7ec.png

В список сомнительной надобности из-за использования физических адресов также уходит NSPDNS). Протокол DIX Ethernet условно входит в сам мод, кроме чек-суммы (а может и да, я хз как там мод работает внутри), но нам все равно как он работает, главное, что гарантирует доставку по физическому адресу.

Для реализации остается mIP для роутинга, mTCP и mUDP для сессий и передачи любой информации любой длины.

К сожалению, из-за децентрализованности сети не получится сделать что-то кроме P2P, но с другой стороны игроки и не готовы строить централизованную сеть, ей просто не суждено быть. А вот P2P итак постоянно используется игроками почти везде, остается только сделать доступным всех членов сети, ну и повысить абстрактность соединений (спрятав адресацию и тп), облегчив тем самым написание сетевых приложений.

Могу быть сильно неправ, хотелось бы услышать мнение других.

EDIT1: Только увидел про русскую документацию пост, хах. Я тоже не горю желанием писать 2 документации, но видимо придется)

Изменено пользователем IS2511

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 20.07.2020 в 20:36, ProgramCrafter сказал:

Кажется, часть файлов (сама библиотека) нашлась: https://github.com/AtomicScience/OCNS

Там нет программ вроде смены IP и прочего, т.е. команда change_mIP работать не будет. Но сама библиотека вроде цела.

 

(уже фантазии)

А может быть, идёт разработка новой версии стека, который займёт место старого?

(Скорее всего, причина прозаичнее: автору могло понадобиться место на Яндекс.Диске.)

Да, я удалил архив, и маловероятно, что смогу найти его.

 

Поэтому вот ссылка на GitHub - https://github.com/AtomicScience/OCNS

 

Проект я забросил, и очень маловероятно, что когда-либо возобновлю работу над ним.

 

Если кто-то хочет продолжить работу/сделать форк/etc., то не вижу в этом никаких проблем

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, IS2511 сказал:

Я думаю попросить название взять такое же (mIP, mTCP, mUDP?) и попробовать, но ничего не гарантирую. 10024-thinking-face-icon_cubic-20x20.png.f9443b3f50f286b98caff9ee2921a7ec.png

Не думаю, что цели твоего и моего проекта совпадают. Сейчас объясню, почему

8 часов назад, IS2511 сказал:

Поскольку сеть будет скорее всего одноранговая

Вот оно!

OCNS задумывался (и даже немножко реализовывался) как портирование протоколов из реальных сетей в Minecraft.

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

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

 

8 часов назад, IS2511 сказал:

Могу быть сильно неправ, хотелось бы услышать мнение других.

Вот мое мнение - в этом вопросе нет ни "сильно неправых", ни сильно правых - есть просто две противоположные, скажем пафосно, философии - "картошечки" и "песочницы".

 

Хочешь делать "картошку"? Пожалуйста, делай - ничего нехорошего в этом нет - создать хороший инструмент, которым все будут пользоваться - та еще задачка, и если ты ее решишь - формчане тебе будут признательны

Но, боюсь, тогда с моим проектом тебе просто не по пути

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...