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

Totoro

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

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

  • Посещение

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

    289

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


  1. Осталась какая-то мелочь.

    Написать абстракцию полноценных потоков над корутинами, потом над ней абстракцию real-life сокетов, и будет готова сетевая библиотека нашей мечты!

    Наконец-то мы сможем сократить эту громоздкую конструкцию:

    modem.send(message)
    

    Ура, товарищи!


  2. У меня вопрос собственно. Что это за хрень и почему мне надо 400 строчек кода, чтобы послать сообщение по сети? :P

     

    Вооружившить вот это цитатой из первого поста: "операционная система должна упрощать разработку ПО", я реквестирую пример использования этой хрени.

    • Нравится 1

  3. Команда monitor как раз и предназначена для того, чтобы переводить выполнение программы на другой монитор полностью.

     

    Тебе надо использовать монитор как периферийное устройство.

    Пример:

    peripheral.call( "top", "write", "Hello World!" )
    

    Пишем на монитор над компом "Hello World!".

     

    Другой пример:

    local monitor = peripheral.wrap( "top" )
    monitor.write( "Hello World!" )
    

    Тут мы переопределили переменную monitor. Теперь в ней хранится ссылка на объект монитора который сверху.

    И на ней можно вызывать методы для печати, или что-то ещё.


  4. Ок, тогда есть второй вариант.

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

     

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

     

    Во, это уже лучше. Это близко к тому как оно щас.

    Мы сейчас готовим арену и софт. Когда будет готова - карта с рабочим сервером будет выложена, чтобы участники могли тестировать роботов на правильную работу.

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

    А на турнире (или демо-матче, как получится) уже пойдут дисквалификации и снятия команд.


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

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

     

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

    Во-первых, это не этично. =)

    Во-вторых, придётся читать тонны говнокода, и смущать автора.

    Потом, автор может обвинить тебя, что ты "испортил" его код, и из-за этого он проиграл. И докажи потом, что ты не верблюд.

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

    И так далее.

    • Нравится 1

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

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

    Клиент для OpenComputers требует, как ни странно, опенкомпьютер. Просто запускаете эту команду:

    $ pastebin run vf6upeAN

    Hpm бодренько поставится и обновится до последней стабильной версии. Если сломается hpm, перезапустите эту команду. Скорее всего, случился очередной breaking change, такое бывает.


    Весь проект зарелизен под лицензией MIT.
    2016 © Fingercomp, Totoro

    • Нравится 3

  7. Для разработчика, который желает, чтобы мир узнал о его программе, Hel тоже имеет несколько приятных плюшек.

    Зарегистрировав в два клика аккаунт на сайте, вы получаете удобный интерфейс для создания пакетов. Специально для LeshaInc у нас интерфейс оформлен в Material Design.

     

    Пакет легко версионируется (мы юзаем стандарт SemVer для этого). Вы можете использовать любой другой пакет в hel (например, библиотеку) в качестве зависимости для своей программы.

    Описание к пакету поддерживает разметку Markdown (включая подсветку синтаксиса Lua, MoonScript и ещё 20 языков).

    Кроме того, описание можно подкрепить несколькими контент-тегами, чтобы облегчить поиск.

    Останется только указать лицензию (или не указывать её вообще) и залить парочку скринов. Всё! Пакет будет тут же доступен в репе, его можно будет посмотреть и скачать.

     

    Смысл репозитория — не только хранить, но и искать! Так что поиск у нас тоже есть, который вмиг отыщет из любого уголка репозитория нужный вам пакет, если он, конечно, существует.

    В наличии поиск по имени/описанию, поиск по автору и поиск по контент-тегам.

     

    Отдельно заметим, что сами файлы репозиторий не хранит, только метаданные пакета.

    Вы можете спокойно разрабатывать свой проект в GitHub, или Pastebin, или на своём собственном хосте. А клиент hpm с помощью метаданных из репозитория будет сам скачивать нужные файлы откуда угодно.

    • Нравится 3

  8. В принципе, да. Некий общий интерфейс, который с одной стороны могли бы использовать программы, а с другой стороны реализовывать разные имплементации сетей не помешал бы.

    Тут главное его не усложнять и сделать максимально простым и гибким.


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

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

     

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

     

    Да, возможно ты прав. =)

    Но мы пока не ставим сложной алгоритмической задачи (хотя Серёга мне в чат уже писал о "задаче коммивояжера" :)).

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

    Кто-то может просто обкатать алгоритмы движения и ориентирования по арене, которые потом заюзаем в ДМ, в следующем раунде.

     

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

    Потребуется больше отладки, будет больше условий к софту.

    Одно дело - просто стартовать по общему сигналу - и потом свободно распоряжаться ресурсами робота. Другое дело - дополнительные условия к софту и алгоритму.

    Но в каком-нибудь раунде можно и такую штуку сделать.


  10. Моё первое мнение - большие полотна текста, где код идёт вперемешку с пояснениями и ссылками, и всё разделено только запятыми, а-ля "поток сознания" - меня пугают.  :)

     

    А вообще, что ты имеешь ввиду под "разными протоколами"?

    Сначала наверное надо стардартизировать способы передачи данных. Тогда и появится возможность объединить их в какой-то библиотеке.


  11. можно еще при дисквалификации уничтожать робота коммандным блоком и по приколу эффект взрыва сделать) или даже можно систему предупреждений)

     

    Да, можно подзапариться и такое прикрутить. =)

    Но это надо будет сделить за всеми роботами. Так что отложим пока на второй план.


  12. надеюсь при помощи переопределения методов invoke и proxy :D

     

    Хех это как дело пойдёт. Вообще, перед началом матча можно переписать адреса роботов. Типа закрепить их за командами / участниками. Тогда можно будет более красивую инфу показывать на дисплее. Ну и заодно трекать, какая команда там в эфир полезла не там где надо.  :)


  13. я думаю стоит выделить 1 порт под общение сервера с роботами учасников, а остальное как кому надо

     

    Сам Сервер будет слать свои сообщения на заранее известном, выделенном порту (например 1 =)).

    Можно даже запретить роботам этот канал "засорять".


  14. значит сервер будет мониторить все порты??

     

    Ты про вывод сообщений на дисплей? Вот хз. Получается что и не выведешь толком.

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

     

    А если ты про лаги - думаю это станет заметно и без мониторинга. =)


  15. а не стоит ли заменить беспроводные платы на связанные ? а то зафлудит кто-нибудь линии связи

     

    Нет, думаю не стоит.

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

    А так, общайся себе на своём порту. Проблем не должно быть.

     

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

    Правда есть сложность для хакера: адрес настоящего Сервера будет известен перед началом состязания.

    А формат пакета "для другого робота" надо ещё угадать (и это не говоря о порте или адресе).


  16. Может ещё устроим футбол роботами? У них есть улучшение "поршень". Пусть булыжник гоняют по полю, отбирают друг у друга.

     

    А то скучная пока задумка. Нет интересных особенностей вроде "дал какой-то сигнал и роботы в радиусе 2 блока замерли на 2 секунды".

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

     

    Отличная задумка для будущих раундов.  :)

     

    Текущий раунд усложнять не буду. Здесь часть интереса именно в совместной игре и духе состязания.

    Если бы ты решал такую задачку в сингле, это было бы скучно. Но когда тут ещё 8 соперников, дело принимает совсем другой оборот. =)

     

    Глянь например на какой-нибудь Quake. Представь сингл. Ты можешь бегать взад-вперёд и прыгать. Ещё есть бонусы и можно пострелять. Прикольно, но надолго тебя не хватит.

    Другое дело есть есть соперники, пусть даже боты.

    • Нравится 1

  17. Не интересно. Надо жесткий баттл, где можно будет делать все, дабы забрать монетки. А тут просто кто быстрее прибежит до монеток, тот и победит: не ломай, не убий, не ставь, не ври; скучно же.

     

    Что это были за "песочницы" в которых ты в детстве играл? Ужс. :P

    • Нравится 1
×
×
  • Создать...