1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

[Помогите] serverresponce по TCP, C++

Тема в разделе "Альтернативные серверные платформы", создана пользователем Vlad_007WOLFYATINA, 13 ноя 2020.

  1. Автор темы
    Vlad_007WOLFYATINA

    Vlad_007WOLFYATINA Активный участник Пользователь

    Баллы:
    66
    Приветствую всех!
    Загорелся занять своё время созданием ядра для майнкрафта - делать нечего, а заняться чем-то нужно.
    Решил сделать своё ядро, чисто по фану)
    Видел здесь туториал про создание ядра на Python с помощью Quarry - питон меня не устраивает, а Quarry - пустышка)
    Поэтому выбрал самый тяжелый путь - создание абсолютно всего с нуля.
    В кратце: есть наброски мира, наброски энтити. Сейчас интересует то, от чего нужно отталкиваться - MinecraftServer.h, который изначально устанавливает себе прослушку на порте.
    После чего идет постоянное принятие пакетов от клиента. Знаю, что при нажатии кнопки "Обновить" майнкрафт отсылает серверу пакет, который содержит MOTD, icon, ping и игроков.
    Дошёл до того, что сервер отсылает JSON файл - https://wiki.vg/Server_List_Ping#Response
    Сконструировал его с протоколом 753 (1.16.3), однако при отправке клиенту тот ничего не получает.
    Подозреваю что естественно дело в JSON файле, т.к. JSON пихается в буффер char (аналог byte Java), после чего буффер отправляется клиенту.
     
  2. ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Не представляешь, я парюсь тем же, только на Go(он насколько знаю быстрее C). Привет от автора статьи с пустышкой кстати.
    Простите за оффтоп.
     
  3. Автор темы
    Vlad_007WOLFYATINA

    Vlad_007WOLFYATINA Активный участник Пользователь

    Баллы:
    66
    Твоя статья не пустышка и в идеале можно довести до разумного ядра, но к сожалению - питон не даст высокой скорости, разве что использовать numpy, но он не даст такой скорости(
     
  4. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
    :confused:
     
  5. Автор темы
    Vlad_007WOLFYATINA

    Vlad_007WOLFYATINA Активный участник Пользователь

    Баллы:
    66
    Кстати нет, не быстрее.
    Быстрее C++ может быть только ассемблер)
     
  6. ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Значит буду учить ассемблер, книжонка где то завалялась) Да и Go наверное не так далёк от C++, но при этом и проще.
     
  7. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
    Твой код на чистом си будет в разы быстрее чем альтернативный код на ассемблере.
     
  8. ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Да не, как вроде Assembler всё таки побыстрее будет. У него меньше всего абстракций. Буквально из букв сразу в машинные коды.
     
  9. SimMiMo

    SimMiMo Активный участник Пользователь

    Баллы:
    76
    Были ядра уже на C/C++, были они также ни о чем по производительности по сравнению со Spigot.
     
  10. ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Ну он же решил написать ядро по фану. А значит, он врядли задумывается о том, что оно менее производительно чем Spigot может выйти.
     
  11. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
    Ну коз каждая инструкция в ассемблере эквивалентна команде процессора. На чистом си у тебя компилятор сделает все возможное чтобы код был намного быстрее чем ты сам на ассемблере напишешь, и большинстве случаев именно так и происходит.
     
  12. ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Ну... Смотря какой компилятор используешь. Да и смотря какой ты программист на ассемблере. Захочешь - напишешь лучше.
     
  13. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
    Практической пользы от этого ноль. Компилятор владеет абстрактной математикой куда лучше чем любой инженер.
    Да и вряд-ли ты напишешь код который в разы быстрее будет чем компилятор которому дали возможность заюзать AVX и SSE.
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Чел к успеху шел :D. Сам даже протокол игры не знает.
     
  15. Pigeon

    Pigeon Активный участник Пользователь

    Баллы:
    76
    Но написан ведь он был людьми.
     
  16. Nikolai_Faint

    Nikolai_Faint Активный участник Пользователь

    Баллы:
    96
    Если мы говорим про тот же GCC то он был написан огромным количеством людей, но зачем тебе эта информация? Машина вычисляет места где нужна оптимизация за пару миллисекунд, человек это сколько будет делать?
    С такими же успехами можно сказать что человек может сам считать числа без калькулятора, ведь калькулятор придумали люди.
     
  17. ifxandy

    ifxandy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Машина не осознает код, а значит костыли тоже могут быть
     
  18. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    :good:
     
  19. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Компилируй код в уме, ты же осознаешь, а компьютер нет. И еще тесты на производительность и обработчик ошибок в уме запускай.
     
  20. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Нельзя дурачкам читать темы про c++, а то крыша съезжает.
     

Поделиться этой страницей