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

Fingercomp

Гуру
  • Публикации

    1 629
  • Зарегистрирован

  • Посещение

  • Победитель дней

    283

Сообщения, опубликованные пользователем Fingercomp


  1. Я тут один заметил, что Алекс валюту эту хочет сделать как раз потому, что не нужно к UU привязывать? Вы о чём вообще тут ведёте беседу?

    UPD. Вот сообщение, где об этом говорится.

     

    UU есть вещь достаточно стабильная и ее в день можно получить лишь ограниченное количество независимо от уровня развития

    То-то @newbie с десяти аккаунтов голосует, ага. Очень ограниченное количество.

    • Нравится 1

  2. звук ведь совсем не такой выйдет?

    Гм, разве? Настройки же кумулятивны... в смысле, не сбрасываются сами по себе. Как минимум, когда я писал synth (2017-05), они такими были.


  3. Спустя этой просьбы прошёл почти год, когда я написал свой гайд по этой штуке в трёх частях с подробным объяснением. Больше мне не нужно ничего в этом топике, естественно.

     

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


  4. На обновление это не тянет, да и обновлять тоже нечего. Но раз условие было раз в 2 недели, то это будет текущий прогресс, в общем.

    • Карта более-менее есть.
    • Созданы репозитории для всех частей софта.
    • Пилим библиотечки, которые будем использовать, потихоньку.
    • Тем не менее, я не думаю, что мы весь софт за 2 недели успеем сделать, поэтому ивент может сдвинуться ещё. Я думаю перетащить дедлайн на него куда-то после новых годов.

    Прогресса почти нет, но в могилах мы не крутимся.


  5. Ну так в луа и не регулярные выражения! Здесь гораздо более простой аналог — шаблоны. Ещё раз: это не регулярные выражения, ни в коем случае, — шаблоны. Никаких повторений, именованных групп и прочего нет. Обходи повторением элементов шаблона.

     

    Инфа по шаблонам: гайд, рецепт.

    • Нравится 4

  6. Я не знаю, почему эту либу считают объектом поклонения, чем-то высоким и совершенным. Да, это полезно, чтобы не думать, а сразу брать готовое. Но это же ведь просто обёртка. Это же ведь просто поэтапная обработка ошибок. Это же ведь 100 строчек — и вся либа. Если кто-то вообще когда-либо читал что-то с сокета в OC, он бы сделал то же самое; он обязан сделать то же самое, иначе бы ничего не работало, ну или бы крашилось всё через раз.
     
    Но 10 лайков стоят, тем не менее: либа полезна, да, доки расписаны адекватно, согласен, — немногие осиливают форматирование (или же всё красным жирным шрифтом пишут, чтобы внимание привлечь) и могут писать на техническом русском языке без путания мысли; ничего против автора не имею, ценю труды и очень уважаю за офигенные и сложные либы, которые он выкладывал сюда, — но это уже какой-то культ строится.

     

    Но спасибо за некостыльный враппер.


  7. Обновление от 2017-12-02. Движение началось.

     

    После нытья я внезапно понял, что мы на тот момент до сих пор даже не представляли, что должны делать и когда. Поэтому на прошлой неделе (2017-11-22 и 2017-11-25) мы провели два совещания в нашем совещательном канале #cc.ru-meetings, первое из которых длилось 3 часа, а второе — 4 часа. Я подождал недельку, чтобы посмотреть, как всё пойдёт — и ведь на самом деле работа началась какая-то. Отсюда и обновление. Сейчас расскажу, что мы нарешали.

     

    Планирование

    Этапы подготовки

    Во-первых, я разделил всю подготовку к ивента на 4 части, чтобы облегчить планирование:

    1. Нулевой этап (0) — это тот, на котором мы сейчас находимся. Участники не могут пока нормально писать свои программы. Как минимум потому, что ни арены, ни софта дано не было.
    2. Альфа (α) — у участников есть карта арены и софт. Сервер пока открыт только для организаторов и программистов. Длится месяц.
    3. Бета (β) — сервер открывается для участников. Длится пару недель.
    4. Релиз (X) — открывается для всех.

    Мы пока решили, что нулевой этап должен длиться до 2017-12-31. То есть будет очень плохо, если к этому времени мы не осилим написать софт первой необходимости и выложить карту со сборкой. Тогда релиз поставили пока что на 2018-02-23 – 2018-02-25.

     

    Карта

    Её пилю в основном я. И должен закончить по плану 2017-12-03. Это не значит, что после этого ни один блок нельзя будет сменить: просто надо проложить к этой дате все кабели, расставить все компоненты, используемые софтом (например, мониторы).

     

    Сейчас у нас есть вот такое:

    9uwxLPT.png

     

     

    На самом деле, конечно, там всё поопрятнее гораздо и никаких взрывов нет. Но не время пока сильно всё спойлерить.

     

     

    PR-кампания

    Решено, что каждую пятницу в нашей группе VK будет публиковаться пост про UT#3, начиная с этой недели. Первый пост уже написан. Постараемся выдержать сроки хотя бы до альфы.

     

    Кроме того, не реже, чем каждые 2 недели, здесь будет появляться обновление с текущим прогрессом. Чтобы не думали, что мы все померли давно и крутимся в могилах.

     

    Софт

    В UT#3 мы придумали восемь различных софтверных проектов, которые в совокупности затрагивают большинство сфер разработки OC: сеть, интернет-сокеты, очки, GUI, звук, дроны, BIOS, кастомные окружения, лампы, микроконтроллеры и прочее.

     

    В команде программистов у нас 5 человек: @Fingercomp, @Totoro, @LeshaInc, @FluttyProger, @MeXaN1cK.

    Однако если вам тоже захочется помогать пилить что-то, пишите нам в ирку. Будем рады.

     

    Всё начинаем пилить с 2017-12-03.

     

    Гейм менеджер

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

     

    Самое большое отличие этого гм от старых состоит в том, что теперь он будет выполнять роль сетевого маршрутизатора, связывая все компоненты между собою и передавая куда нужно сообщения. Мы постарались отделить от него функции, которые не связаны с бэкэндом, чтобы не допустить тормозов в программе, как на UT#2, где перерисовывался интерфейс, обновлялись очки, выполнялись команды и генерировалось поле, из-за чего счётчик в полтора раза медленнее был.

     

    Например, очками теперь управляет отдельный компьютер. Большинство же функций не требуют получения текущего состояния игры, верно? Если игрок нажал на кнопку скрытия панели, зачем это на гм отсылать?

     

    В любом случае, теперь гм выполняет следующее:

    • стартует и завершает раунды;
    • хранит текущий счёт и обновляет его периодически;
    • пингует дронов и хранит количество живых;
    • управляет компонентами (включает и выключает их);
    • маршрутизирует сообщения между компонентами.

     

    То есть остались только чисто игровые функции.

     

    Общение между компонентами будет происходить посредством дебаг-карты. У неё есть замечательная функция debug.sendToDebugCard(address, ...).

     

    Общим останется с прошлыми гм то, что юзать будем ту же event-driven архитектуру (то есть коммуникация между частями программы посредством не функций, а ивентов) — а значит, будем юзать libaevent, проверенное решение.

     

    Вызвались пилить: @LeshaInc, @Fingercomp, @Totoro.

    Дедлайн: 2017-12-31.

     

    Информационные панели

    Я до конца был уверен, что экраны по бокам арены не просто так. Оказалось они не рабочие.

    [member=qwertyMAN]

     

    На первом этапе мы их не осилили (это те самые "экраны по бокам арены"), поэтому надо осилить в этом. Они будут показывать карту арены с контрольными точками и их статусами, таймер, счёт и количество живых дронов. Может, ещё что-нибудь.

     

    Каждый компьютер с этой программой будет обрабатывать 4 монитора, а всего их 16.

     

    Юзать будем либу для больших шрифтов от @LeshaInc. UI рисовать или дабл-бафферингом, натравленным на vgpu, который выполняет одинаковую команду на 4 реальных gpu для параллельного отображения; или без него, если графика окажется несложной.

     

    Вызвались пилить: @Fingercomp, @Totoro.

    Дедлайн: 2018-02-04.

     

    Прошивка для дронов

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

     

    Ну и да, после разрядки дрон отлетает на базу, как я и сказал, и на сервер говорит, что он мёртв.

     

    Вызвались пилить: @Fingercomp, @FluttyProger.

    Дедлайн: 2017-12-31.

     

    Прошивка для контрольных точек

    Все функции мы уже описывали ранее (шлёт коды, ловит сообщения, консультируется с гм).

     

    Вызвались пилить: @Fingercomp, @Totoro.

    Дедлайн: 2017-12-31.

     

    Терминалы участников

    Это гуишные программы, через которые участники смогут записывать на дронов удалённо код и отлаживать свои программы. То есть ошибки в исполнении будут возвращаться на терминал, там же ещё будут видны характеристики дрона.

     

    Либу гуишную, похоже, использовать будем от @ECS. Более продвинутой и удобной я не видел пока.

     

    Вызвались пилить: @Fingercomp, @Totoro.

    Дедлайн: 2017-12-31.

     

    Сервер OpenGlasses (очкосерв)

    Как я уже сказал, мы отделили управление очками от гм. Так как очки в OpenGlasses 3 стали субарашительными, у нас в том числе есть персональный вывод. Поэтому:

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

    Помимо этого, при фокусировании в игре на контрольной точке, будет показан её статус.

     

    Очкосерв будет обрабатывать как можно больше функций без обращения к гм.

     

    Вызвались пилить: @Fingercomp.

    Дедлайн: 2017-12-31.

     

    Рипрадио

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

    • Конвертер аудиофайлов в формат .rip. Это наш выдуманный формат контейнера для DFPWM. По сути, я напилил конвертер любых аудиофайлов (поддерживаемых ffmpeg) в DFPWM с хедерами. Уже сделан @Fingercomp, написан на Rust.
    • Стриминговый сервер. Берёт папку с файлами .rip и стримит их по сокету со специальным протоколом. Сделан на C @LeshaInc.
    • Клиент рипрадио для OC. Читает данные со стримингового сервера и играет музыку через кассетный плеер. Всю метадату отсылает на гм — а тот на очки.

    Клиент минимальный уже есть (то есть мы уже смогли просто играть с сокета музыку). Осталось её вынести в библиотеку и написать саму программу, которая бы отсылала мету и контролировала всё.

     

    Вызвались пилить: @Fingercomp, @Totoro, @LeshaInc.

    Дедлайн: 2018-02-04.

     

    Контроллер ламп

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

     

    Вызвались пилить: @Fingercomp, @Totoro, @MeXaN1cK.

    Дедлайн: 2018-02-04.

     


     

    Я уже говорил, что вся эта инфа была в ирке. Причём неделю назад. Мы UT#3 пилим только через неё, поэтому если вы хотите присоединиться, то условие частого пребывания в ирке обязательно.

     

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

    • Нравится 2

  8. Ну тут не грусть, что так медленно, а опасение, что UT#3 закончится, не начавшись. В любом случае, вчера мы 3 часа посовещались о том, как вообще делать мы будем, а в субботу софт обсудим.

     

    Определили дату старта приблизительную, к слову: 23-25 февраля. Надеюсь, плясать с нею не придётся.


  9. Обновление от 2017-11-21. У нас всё медленно и печально.

     

    А то давно их не писал.

     

    Начнём с того, как мы строим карту:

    • 2017-10-31: в первый раз зашли на сервер.
    • 2017-11-02: построили первый вариант карты (спасибо @Xytabich).
    • 2017-11-032017-11-04: переделывали постройку.
    • 2017-11-20: сделали дорожки и построили крышу.

    Я ни одного дня не упустил. Я ни в одной дате не ошибся.

     

    Интерпретируя, мы получаем вот такие забавные вещи. Арены пока нет, как она выглядеть будет, никто не знает. Софт для ивента писать никто и не думал пока даже (ну так-то как можно его пилить без карты?). Зато сайд-проекты начали. Я, конечно, знал, что к декабрю ни у меня, ни у Тоторы времени особо не будет, но как-то на такой медленный прогресс не рассчитывал.

     

    Значит, что же хочу сказать в связи с этим: в январе ивент пройти может если только чудом, то есть к 2 декабря сможем запилить и софт, и карту, и сюда выложить всё. Сейчас я не знаю, смогу ли карту даже сделать к этому времени, а про софт и говорить не стоит. И поэтому мы можем сплыть по сроку на выходные февраля-марта.

     

    Это не означает, что мы оттачиваем битьё шароваров вместо работы на ивентом. Есть один сайд-проект, который так или иначе нужно будет сделать для этого UT#3. Им ща занимаемся.

     

    К слову, когда пишу "мы", я имею в виду команду, а она сейчас такая:

    • @Fingercomp, который занят или ленится. В редкие дни даже пилит UT#3.
    • @Totoro, который на выходных даёт балы (иначе я не могу найти причину, почему во все выходные у него гости), в будни лопатит легаси, а в остальные дни работает над своим ботом. Как можно догадаться, ничего толком на UT#3 не сделал, а на сайте даже не зарегался.
    • @Fiender, который тоже , хотя и только в ирке. Хостер, гентушник, а про остальные увлечения правила запрещают говорить. Каждый день пишет "rip ut", чем всегда поддерживает разговор или начинает новый.*
    • @LeshaInc, который кодит. Несмотря на репутацию бросающего проекты на полпути, он запилил компонент сайд-проекта полностью, что поразительно.

    Детали о том, что именно мы пилим, какой прогресс и задачи, ну и прочие вещи про ивент — всё в ирке. На форуме мы спойлерить особо не будем.

     

    * Справедливости ради надо отметить, что слово "rip" на нашем канале стало невероятно универсальным, и рипаем мы не только людей и не только в прямом смысле. Антоним, к слову, — unrip.

    • Нравится 1

  10. Ну так стороны-то up и не существует. Если бы поизучал этот вопрос в английском языке, то понял бы, что up — это "вверх", направление, а side — это сторона. Верхняя (top) сторона бывает, да, а вот о стороне вверх не слышал.

    • Нравится 1

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

     

     

     

    Тебе странная переменная не нужна совершенно. Потому что ты нагородил её, сделав логическую ошибку в алгоритме.

     

    local com = require("component")
    local event = require("event")
    local rs = com.redstone
    local sides = require("sides")
    local pass = "sample password"
    
    while true do
      local evt, _, _, arg = event.pull()
      if evt == "key_down" and arg == 28 then
        break
      elseif evt == "magData" then
        if arg == pass then
          rs.setOutput(sides.top, 15)
          os.sleep(2)
          rs.setOutput(sides.top, 0)
        else
          rs.setOutput(sides.bottom, 15)
          os.sleep(1)
          rs.setOutput(sides.bottom, 0)
        end
      end
    end
    

     

    Я бы ещё вместо event.pull использовал event.pullMultiple, но это уже штрихи мелкие.

     

     

     

    А, и да. В одно сообщение влезали несколько цитат (год назад точно, как минимум), так что мультипостить необязательно. И их ещё можно изменить. Но это мелочи и к топику отношения не имеет.

    • Нравится 4

  12. Переменная со... странным именем не используется — зачем она в коде? В каком магическом ритуале она участвует?

     

    Отступов нет — ну хоть не в однострочник код записан, спасибо.

     

    У тебя жесточайше криво построена логика программы. Посмотри-то на алгоритм свой (блок-схему нарисуй, если непонятно). На строке 9 ты принимаешь любой ивент — однако дальше код пойдёт, только если ты нажал на клавишу с кодом 28 (иначе первый if завершится, и снова выполнение вернётся к началу цикла). Однако в ифе break. Он, вообще-то, прерывает цикл и выкидывает выполнение на инструкцию сразу после него. Код внутри цикла после break выполняться не будет.

     

    Иными словами, у тебя получилось сделать невероятно нерациональную программу, которая ждёт ивента и выходит по нажатию Enter.


  13. Обновление от 2017-10-23. Финализация правил.

     

    Я поймал Тотору, Тотора поймал меня, ещё и с Файном встретились — в общем, на выходных мы, в кои-то веки, смогли финализировать правила. Ключевые изменения:

    1. Контрольные точки будут микроконтроллерами. Находиться они будут в фиксированных местах на карте, поэтому искать их даже не придётся.
    2. Мы будем использовать MC 1.12 (1.12.2, если получится).
    3. Соответственно, поэтому можно ставить форкнутую версию OpenGlasses версии 3.3.2 и она, код побери, невероятно охрененная.
    4. Решены четыре из семи проблемных вопросов. Смотрите раздел Q&A, где на них даны подробные ответы.

    Подробнее — в первом посте.

     

    Ну а так как теперь правила финализированы, можно, наконец, приступать к основной части — это сервер, карта, арена.

    • Нравится 2

  14. За то я понимаю твой единственный код, и (спасибо что разрешил) буду постепенно модифицировать его, те учиться на нём (Хотя бы освою базовые функции)

    Только вот еще решаю проблему с автозапуском на OpenOC. 

     

    https://fingercomp.gitbooks.io/oc-cookbook/content/openos/autorun.html

    • Нравится 2

  15. Я извиняюсь за честность и мой тон.

    1. Нахрена слать ЛС, когда есть топик? Будешь каждому отдельно создавать, да? А если вот как я сейчас, только подключился и хотел бы чем-то помочь, мне телепатом сначала нужно стать, чтобы угадать содержание ЛС?
    2. Хватит, ради святого кода, три подряд поста писать с дельтой в пару минут. Поразительно, но в одном сообщении можно ответить сразу на несколько сообщений! Если ты хочешь каждые 5 минут по сообщению отсылать — лучше в ирке вопрос задавать: там как раз нам делать нечего.
    3. Когда говорят установить libforms — надо устанавливать. Или командой, как у Дуба, или oppm install libforms, или hpm install libforms, в зависимости от того, что имеется.
    4. Почитай гайды по OpenOS. У меня вот есть "От дуба до Мастера" — оно скучновато, скомкано, но всё расписал.
    5. Блин, хватит на недопомойки кидать картинки! puu.sh, imgur.com? Почему я должен врубать жабокрипт на сомнительном сайте, чтобы различить буковки на скриншоте?
    • Нравится 1
×
×
  • Создать...