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

Fingercomp

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

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

  • Посещение

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

    283

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


  1.  

     

    критикуйте

    Давайте и до кода доберёмся.

     

    Сначала по стилю:

    1. Ни одного отступа в коде. Даже намёка на это нет.
    2. Функции используют BumpyCase вместо camelCase. То же с таблицами.
    3. Нет пробелов после запятых. То есть func(arg1,arg2,arg3) вместо положенного func(arg1, arg2, arg3).

    Теперь по самому коду.

    local mess = nil
    

    В окружении библиотеки задаётся локальная переменная mess.

     

    В данном случае = nil не нужно. Конструкция вида local var создаст локальную переменную var, которая будет иметь значение nil.

     

    Где же она используется? Поиском (напомню, отступов нет) находим единственное место:

    local _, _, _, _, dis, message = require("event").pull(arg[1],"modem_message")
    if message ~= nil then
    mess = serialization.unserialize(message)
    return mess
    else
    return "no"
    end
    

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

    То есть убрать строку 2 и заменить mess = serialization.unserialize(message) на local mess = serialization.unserialize(message).

     

    Кроме того, эта переменная нигде, кроме return, не используется. Поэтому промежуточная переменная не нужна, можно сразу возвращать значение. Уберём строку 26 и заменим строку 25 на return serialization.unserialize(message).

     

    Сразу замечаем повторяющиеся сегменты кода:

    local serialization = require("serialization")
    
    local serialization = require("serialization")
    

    Удалим эти строки и скопируем наверх, на строку 2. В большинстве случаев гораздо лучше все запросы библиотек выносить в начало кода.

     

    То же есть на строках 11, 21, 38; 7-10, 34-37. Всех их нужно вытащить наверх.

     

    К функции returnMess претензий, кроме описанных выше стилевых, нет. Двигаемся дальше:

    function SecurityControl.ReturnMess(...)
    arg = {...}
    local modem = component.modem
    local serialization = require("serialization")
    local _, _, _, _, dis, message = require("event").pull(arg[1],"modem_message")
    if message ~= nil then
    mess = serialization.unserialize(message)
    return mess
    else
    return "no"
    end
    end
    

    Эта функция использует vararg (в аргументах ...) — количество аргументов может быть любым. На строке 23 все переданные аргументы собираются в таблицу. Однако в коде используется только первый переданный аргумент. Следовательно, использовать синтаксис vararg не нужно. Поэтому заменяем vararg на вполне конкретный аргумент timeout:

    function securityControl.returnMess(timeout)
      local _, _, _, _, dis, message = require("event").pull(timeout, "modem_message")
      if message ~= nil then
        return serialization.unserialize(message)
      else
        return "no"
      end
    end
    

    Переменная dis нигде дальше не используется, а потому её можно смело убирать.

     

    Условие message ~= nil может быть справедливым тогда и только тогда, когда есть значение false. Но это значение использовать не нужно: serialization.unserialize принимает только строки. Поэтому упрощаем условие до if message then.

     

    Функция может вернуть "no" даже по первой ветке условия (получив сообщение [["no"]]), что было бы нежелательно. Для того чтобы отличать это значение от других, лучше возвращать false или nil. Здесь проще поступать вторым путём, просто убрав ветку else.

     

    Итоговый код функции:

    function securityControl.returnMess(timeout)
      local _, _, _, _, _, message = require("event").pull(timeout, "modem_message")
      if message then
        return serialization.unserialize(message)
      end
    end
    

    Мы упростили двенадцать нечитабельных строк исходной функции до шести. Посему переходим к следующей функции:

    function  SecurityControl.SendPort(...)
    local serialization = require("serialization")
    if not component.isAvailable("modem") then
    io.stderr:write("Modem not found!\n")
    os.exit()
    end
    local modem = component.modem
     
    arg = {...}
    modem.broadcast(arg[1],serialization.serialize(arg[2]))
    end
    

    Здесь те же ошибки, что и рассмотренные выше, поэтому сразу исправляем код:

    function securityControl.sendMessage(port, message)
      modem.broadcast(port, serialization.serialize(message))
    end
    

    Неожиданно, не так ли? Всё, что делает функция, — это сериализует сообщение и вызывает другую. Немного смысла в ней.

     

    В итоге, вся либа сводится к этой:

    local component = require("component")
    local serialization = require("serialization")
    
    local securityControl = {}
    
    if not component.isAvailable("modem") then
      io.stderr:write("Modem not found!\n")
      os.exit()
    end
    
    local modem = component.modem
    
    function securityControl.openPort()
      math.randomseed(os.time())
      local port = math.random(1, 65565)
      if modem.open(port) then
        return port
      end
    end
    
    function securityControl.receiveMessage(timeout)
      local _, _, _, _, _, message = require("event").pull(timeout, "modem_message")
      if message then
        return serialization.unserialize(message)
      end
    end
    
    function securityControl.sendMessage(port, message)
      modem.broadcast(port, serialization.serialize(message))
    end
    
    return securityControl
    

    Сорок четыре строки сущего ада превращаются в 33 строки чистенького кода.

     

    Но вопрос не в коде, который мы здесь покритиковали и даже переписали — он теперь гораздо лучше; вопрос в другом: зачем нам библиотека, которая просто вызывает функции модема, ничего действительно полезного не делая?

     

    Есть небольшие программки типа копалки туннеля 3×3, часиков, кодового замка простого и прочее. Их раз сто уже написали все, кому не лень, но смысл не в этом: они дают полезный опыт программирования. Но даже для новичка постить 40 строчек кода — это моветон. Несмотря на название раздела, сюда надо отсылать что-то покрупнее. Оставь свои первые опыты на своём жёстком диске и выложи сюда что-то действительно полезное.

    Или хотя бы не раздувай слона из мухи.

     

    У меня ещё большие претензии к оформлению первого топика: перечитывай хотя бы, что ты написал. Сейчас невозможно что-либо понять из текста.

    • Нравится 5

  2. Не обновление, просто прогресс текущий говорю.

    1. Карту мы потеряли. Хостит у нас Fiender, а он сменил жёсткий диск, который сыпался. В один из бэдов попала и карта арены.
    2. Поэтому на следующий день мы отстроили арену заново. Ничего критичного не потеряли, а карту забекапили сразу на несколько хостингов.
    3. Разбираемся пока с плагинами привата на 1.10.2. Какие-то багичи выползают с роботами, дюпают заприваченные блоки, ну и всякое такое в том же духе. Просим пока @Totoro починить это: то ли в FoxGuard патч запилить, то ли в OpenComputers, то ли вообще свой плагин привата сделать. Непонятненько. Посмотрим.
    4. Конечно же, пилим софт для ивента. Уже портирован интерфейс для очков, смог его запустить без крашей (достижение). Предстоит отдебажить спаун лута (жесть), прицепить админ-интерфейс (жесть жесть) и сделать генерацию арены (жесть жесть жесть). Должно быть весело.
    5. Думаю, что в срок укладываемся. Три дня осталось тут, должно хватить.
    6. На итоговом сервере я планирую зафигачить пару очень крутых штук. Так что планируйте как-нибудь зайти к нам через месяц.
    7. Для участников: завтра будет опубликована техническая инфа (комплектация робота, координаты арены, сигналы сервера и команды). Арена будет доступна после написания сервера, как и говорил.

  3. Chisels&Bits поставлен случайно был при копировании, а чизель нужен для блоков. Что тебе в них не нравится, мне непонятно, потому что от них ничего плохого нет.

     

    По поводу ещё одного сервера беспокоиться пока не надо — организаторы сами позаботятся об этом.


  4. Обновление от 8 марта 2017 года

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

     

    1. Арена

    Она готова. Как минимум, в том виде, который мы отдадим игрокам — но только после написания сервера.

     

    2. Итоговая сборка

    После обсуждения решено сделать невероятное: перейти с 1.7.10 на 1.10.2. Кубача, всё верно. Отсюда вылазят следующие асуммонстрики:

    • Хоститься ивент, как и сейчас, будет на отдельном сервере. Алексу меньше мороки с непонятной затеей, а мне больше удобства в организации.
    • Лончер у нас будет, по всей видимости, кастомный какой-нибудь. Потому что с текущим вообще ничего не ясно: как он работает, можно ли туда прикрутить что-то кроме 1.7.10, ну и так далее.
    • OpenPeripheral застрял на 1.7.10, к сожалению, из-за чего нужно будет переписать интерфейс и добавить больше взаимодействия с блоками внутри игры.

    Зачем? Всё дело в прекрасных командах, с помощью которых всё в гугол раз облегчается.

     

    Моды:

    • Chisel MC1.10.2-0.0.8.12
    • Chisels&Bits 12.12.
    • Computronics 1.10.2-1.6.2
    • Conventional 1.10.2-0.0.15
    • IndustrialCraft2 2.6.170-ex110
    • JEI 1.10.2-3.14.5.406
    • OpenComputers MC1.10.2-1.6.2.7
    • OpenGlasses 1.3
    • WAILA 1.7.0-B3_1.9.4

     

    3. Казусы

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

    Ну и фиксов под него здесь нет тоже. Так что вычёркиваем из списка, заменим, надеюсь, чем-нибудь другим.

     

    Казус нумер два. WorldGuard для губки нет, поэтому используем FoxGuard. А у него очень странная система приватов. При которой робот, если киркой сломает блок, получит его, но в мире блок останется. Дюп, в общем. К тому же, нельзя сделать фокус на именно роботов. Они в приват вписываются вместе с владельцем. В принципе, проблемы это не составит большой: ивенты пкм и лкм стопаются сразу же у игроков. Ничего сломать они не смогут, даже как в WG есть.

     

    В целом, всё основное есть и работает.

     

    4. Сервер

    Начинаем писать сервер. Можно скопипастить основу из прошлого ивента и подкорректировать, что нужно.

    https://github.com/cc-ru/ut2-server

     


    P. S. Обновил ещё первый пост в этой теме. Там изменены правила и техдетали.

    • Нравится 2

  5. Ну это уже какой-то нереальный чит. Лапотрон —  и всего за 2+2/9 дня голосования. Его вообще, по моему мнению, в админ-магазе быть не должно, потому что это не запрещённый предмет. Ну и он не "нереально дорог". Не нужно нубу в коробке из земли просто замахиваться на топовые вещи.

    Админ-магаз с лапотроном только дней 20 развития удалит.

     

    Сингулярность, жёлтое сердечко — всё это не надо. Вот зелёное сердечко очень даже можно в админ-магаз. За 1200 UU примерно (≈ 14 дней голосования).

    Чанклодырный апгрейд можно — 2200 UU (≈ 25 дней голосования). Столько же и иммибисовскому.

    Кристаллы врат по 1000 UU (≈ 12 дней голосования).

    Пропеллеры слишком дёшевы. Нужны ли они вообще? Они же из коблы и палок крафтятся.

    Вот из углеволокна не крафтится. Его можно добавить — но за приличную цену: это же бесконечный генератор более сотни EU/t. Приблизительно 600 (≈ 7 дней голосования) в самый раз.

     

    Главное при составлении — учитывать, что в день можно получать до 90 UU. А не просто рандомные циферки ставить.

    • Нравится 2

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

    У бомб будет не только задержка, но и шанс не взорваться. Тут всё предусмотрено.

    И писать тысячи строк кода для всяких альянсов, лишь бы угодить Кверти, никто не будет, я полагаю. Оно, конечно, эпично, но слишком сложно. И так правила непростые.


  6. Поехали.

     

    Обновление от 26 февраля 2017 года — ?? дней до старта

     

    1. Правила

    Итоговые правила таковы.

     

    4 команды по 8 роботов встают по краям арены — на своих базах. Игроки их настраивают и уходят к зрителям. По сигналу сервера снимается барьер, и роботы вылезают со своих баз. У них по умолчанию есть одна бомба по таймеру и один лазер.

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

    Но основная цель роботов — это не лут собирать. Они должны ликвидировать всех роботов из других команд, оставшись при этом в живых. Ликвидировать они могут следующими способами:

    • Поставить бомбу по таймеру у чужака, поджечь и удрать. Чужак взорвётся, если не отскочит.
    • Поставить бомбу по сигналу и подать сигнал (не важно, какая команда и кто именно подаст его, взорвутся все сразу).
    • Подойти к роботу на расстояние до 3-4 блоков и выстрелить лазером. Если робот прячется за ящиком — тем же лазером сломать ящик.

    Условия победы:

    • Досрочная победа будет в том случае, если останется в живых только одна команда до истечения времени.
    • Если таймер прозвенит раньше, чем 3 из 4 команд умрут, то победителями будут команды с наибольшим кол-вом юнитов.

    Запрещено:

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

    Роботы обязаны отвечать на некоторые сообщения сервера. Это, например, сообщение "кто жив?". Полный список будет опубликован после написания сервера.

     

    2. Софт

    В этот раз в план всякие панели включать не будем. Нам нужен только сервер — можно взять за основу предыдущий, тем более, что интерфейс не изменится. Разве что можно указать номер этапа.

     

    3. Арена

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

     

    4. Планы

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

    Параллельно с ареной нужно писать сервер — на это срок до 16 марта. Затем нужно выложить арену и сервер.

    Ну и тогда же останется ровно 30 дней до старта. За это время можно вполне написать своего робота.

     

    5. Люди

    @Totoro — организатор. Как обычно, выступает в роли арбитра, урегулировывая споры, и мудреца, подкидывая новые идеи.

    @Fingercomp — организатор, кодер, строитель. Это я, если что.

    @astral17 — участник.

    @electronic_steve — участник.

    @FluttyProger — участник.

     

    6. Обновления

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


  7. Пункт раз. Каждые эн секунд посылается синхронизационное сообщение. Можно было к нему подстроиться для автоматического включения.

    Пункт два. Это соревнование программистов, а не тактиков. Программ, а не задач.

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

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

     

    Предлагаешь вместо сурового боя роботов, где они порешают всё, ввести кукольный театр?

    • Нравится 3

  8. Смысл в ручном управлении? Это же бои роботов, а не игроков, как я уже сказал. Именно роботов. Поэтому и биться они должны сами, без внешнего контроля. Единственное - возвращаться на базу при сигнале "стоп", а стартовать при сигнале "старт", но не более. Это куда больше азарта добавляет участникам: им надо предусмотреть как можно больше фатальных ситуаций.

     

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

    Весь смысл pathfinding теряется при ручном управлении.

     

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

     

    То, что некоторым на арене скучно, - не проблемы ивента. Фан не только от забавных фигурок роботов, которые стараются друг друга зафигачить, а и от чата, от казусов, которые 100% будут, потому что это я. Да и вообще, этот ивент, как и любой другой, должен быть зрелищным, и хотя бы из-за этого стоит посмотреть на него.

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

     

    Оставлю призывалку @Totoro, чтобы он ответил, стоит ли (и если да, то как) лишать ботов автономности.

     


     

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


  9. Игроки настраивают и уходят. Сервер даёт сигнал, и роботы двигаются сами. Никакого внешнего контроля нет (разве что можно досрочно игру прекратить, тогда надо вернуться).


  10. Энергия - это само собой. Уголёк ссыпать в бонусные контейнеры и по центру заряжалка со скоростью 1/15 от максимума.

     

    А крафт, я думаю, - это лишнее. Динамита обычного точно не будет. Чего там ещё крафтить тогда?


  11. Карта определённо будет не одноэтажная. Высота где-то блоков 4-5 минимум.

     

     

    Винтовочка — затея интересная, однако я не знаю, как её реализовать. Если дать лазерную копалку из IC2, то роботы или ничего не вскопнут, или нафиг разнесут всю арену.

    Хотя нужно узнать, ломаются ли прозрачные блоки этим лазером. Так-то я планирую из стекла препятствия делать, чтобы было видно, что за ними. Если ломать не будут (вроде было такое) — определённо тогда я за. Ещё и пару каких-нибудь ящиков поставить. Прикольная затея!

     

    По поводу подрывания. Можно дать специальные бомбочки, которые подрываются сигналом по сети. Слать сообщение на сервер роботы будут, правда, а он уже там подорвёт сразу все такие кастомные бомбочки. Это было бы круто, да.

     

    Другой вопрос: как генерировать арену? Точнее, блоки внутри неё. На каждый раунд я не буду бегать со стеклом и судорожно ставить там ящики. Нужно генерировать сервером.

     

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


  12. Пусть — это не идея. То, что висит щас, родилось за 3-4 часа обсуждения. Нужен, если хотите что-то другое, конкретно принцип. Как у меня описано в правилах. Начало игры, процесс игры и условие конца. Что можно, что нельзя. Я пока слабо представляю, что именно ты хотел сказать.

     

    Ну и не забывайте, что играть игрокам, а не мне. Им пилить проги и выигрывать. То, что сейчас есть, сделать реально, сложность чуть выше первого этапа. То, что ты говоришь, игроки не сделают. Я для напоминания даю ссылку на самый первый топик: http://computercraft.ru/topic/4-


  13. С бомбочкой ещё идея есть: микроконтроллер, который отправляет сообщение на сервер с координатами, а тот уже имитирует взрыв.

     

    Заставлять слать сообщения я бы не хотел совершенно.


  14. 3sZCF59.png

     

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

    Месяц назад, как вы помните, у нас проходил первый этап Unreal Tournament (у нас даже топик остался) — песочница.
    Суть была такова: роботы по сигналу выползали из укрытия и начинали собирать монетки из появляющихся сундуков, а затем они относили всё на базу.
    Получился ивент эпически крутым: 4 участника и много зрителей.

    Подробнее почитать можете в топике, опять же.


    С сегодняшнего дня начинается обсуждение второго этапа Unreal Tournament.

    Этап 2: Deathmatch

    Ориентировочное время проведения второго этапа — середина апреля.
    У нас есть полтора месяца на подготовку арены и написания софта.

    Участники второго этапа: @electronic_steve, @FluttyProger, @astral17, @Totoro.
    Оставить заявку можно:

    Правила

    GCDY9Yq.png

     

    Правила второго этапа просты.
    Все участники играют против всех. Весь этап будет разбит на несколько матчей, по четыре участника. Каждый участник будет вести команду из 8 роботов.
    У каждого робота будет в арсенале запас из 1 бомбы и лазерной винтовки.
    После сигнала сервера роботы выползают из своих баз и выходят на поле. Цель роботовубить своих соперников, не повредив своих. Сделать они могут бомбой — она может быть по таймеру (тогда взрыватель должен успеть удрать от неё до того, как она взорвётся) или по сигналу (все одинаковые, взрываются по сигналу любой команды и сразу все) — или лазерной винтовкой — но тут нужна прямая видимость.
    На поле будут в случайных местах генерироваться дроп (в виде выкинутых предметов) с дополнительными плюшками: уголь для пополнения энергии, бомбы и т.д.
    Та команда, которая последняя останется в живых, побеждает.

    Робот может получить дисквалификацию за:

    • Ломание блоков арены. При этом можно уничтожать роботов и ящики.
    • Фальстарт. Если начнёт двигаться до сигнала сервера.
    • Забагованность и тормоза. Если программа случайно или намеренно создаёт жуткие тормоза или просто направлена на вредительские цели. :) Тут, конечно, решать будет админ.

    Ориентировочное время раунда — от старта до конца игры — 15 минут (если 3 из 4 команд сдохнут раньше — раунд, соответственно, закончится раньше).
    Каждые 10 секунд сервер будет рассылать сообщение для синхронизации времени.
    После финального сообщения раунд считается завершённым, и тут же происходит обновление счёта.

    Технические детали
    По части модов и версий ориентируемся на MC 1.10.2, OC 1.6, CX 1.6.2, OpenGlasses 1.4.

    Генерация лута будет происходить с помощью дебаг-карты.
    Чтобы роботы узнали о расположении бонуса, после генерации сервер будет слать сообщение с его координатами по беспроводной сети.

    Все роботы будут иметь одинаковую конфигурацию и чистую OpenOS 1.6 на борту. Однако разрешается писать разные программы для разных роботов.

    Арена не будет известна заранее. Нужно использовать какие-либо существующие (или пилить самому) библиотеки для поиска пути.

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

     

     

    sIbq8Wr.png

     

    Подготовка
    К ивенту нам необходимо подготовить несколько вещей.

     

    • [Готово] [2017-02-26] Определиться с правилами. Для этого и создана эта тема. Пишите сюда ваши идеи и вопросы.
    • [Готово] [2017-03-08] Подготовить арену. Надо построить поле, подходящее по размеру для четырёх команд по восемь роботов. Построить заграждения на арене для усложнения игры. Однако слишком ударяться в хардкор не надо. Сверху оградить стеклом, чтобы не дать роботам шанса удрать. Поставить где-нибудь компьютер центрального сервера. Обустроить как-то площадку для просмотра.
    • [Готово] [2017-03-16] Написать софт для сервера. Сервер должен уметь объявлять начало матча по сети, генерировать бонусы, рассылать сообщения с их координатами и считать живых роботов.
    • [Готово] Собрать заявки участников.
    • [Готово] [2017-04-15] Провести игру.

     

    Обновления
    Здесь находятся ссылки на посты для ориентирования. Под каждой ссылкой вкратце рассказана суть.
    Если вы планируете участвовать в обсуждении, обязательно читайте обновления.

    • [2017-02-26] Ссылка.
      • Правила
      • Софт
      • Арена
      • Планы
      • Люди
      • Обновления
    • [2017-03-08] Ссылка.
      • Арена
      • Итоговая сборка
      • Казусы
      • Сервер
    • [2017-03-17] Ссылка.
      • Сервер
      • Комплектация робота
      • Арена
      • Сборка
      • Сигналы сервера
    • [2017-03-30] Ссылка.
      • Плазмаган
      • Лончер
      • Сайт
    • [2017-04-08] Ссылка.
      • Бомбы
      • Геолайзер
      • Стрим
      • Готовность участников
      • Ориентировочное расписание
      • Бета-тест
      • Сборка
    • [2014-04-13] Ссылка.
    • [2014-04-14] Ссылка.
    • [2014-04-15] Ссылка.

    Проблемные вопросы

    • Что из себя будет представлять бомба?

      Мы можем превратить роботов в очередных исламистов, которые будут собою подрывать других.
      Или поставить блок динамита — но тогда трудно регулировать задержку до взрыва.
      Или микроконтроллер со взрывающейся карточкой — но здесь очень маленький радиус поражения (хотя можно отредактировать мод).


      Ориентировочно, будет два вида бомбочек — подрывающиеся по таймеру и по сигналу. Это будут микроконтроллеры, которые посылают сообщение на сервер с координатами и типом бомбы. А сервер уже рисует частицы и играет звуки, разнося роботов.
       

    • Какие бонусы будут появляться?

      Помимо бомбочек дополнительных — тут и так всё понятно.


      Бомбы двух видов, уголь для подзарядки, лазеры.
       

    • Как находить роботов на арене сервером?

      Желательно не загромождать арену никак. Камеры сбоку, какие-нибудь геолайзеры. Не знаю.
      Сюда же включается и вопрос о дифференцировании роботов по командам. Как серверу определить, чей данный робот?


      Сервер будет слать сообщение "кто жив?", на которое роботы должны ответить, указав свой цвет.
       

    • Какая комплектация робота?

      Здесь, однако, затруднений особых не будет. Определимся по ходу обсуждения.


      sIbq8Wr.png


    Ну что, посражаемся? :D

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