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

Alex

Администраторы
  • Публикации

    3 168
  • Зарегистрирован

  • Посещение

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


  1. Мне более реальной кажется карта, строящаяся при помощи черепах-строителей

    Ну вот же, решение под носом было! Одна голова хорошо, а две лучше. Я уже мозг сломал с этими поршнями. Конечно не вариант, что они сверху торчат. С черепашками эпичнее и гибче получиться. Только три уровня - перебор, будет затруднен обзор нижнего уровня, я думаю, ну и размеры арены фактически увеличиваются сильно. Плюс для черепашки на среднем уровне придется детектить и компарить все направления, что снизит динамику боя и возможно под черепахой пролетит целый рой других черепах, пока она детектит блоки вокруг себя, крутиться вправо и влево, а на 1 и 3 уровне ее сенсорам один уровень будет вообще не доступен. Но я очень хочу многоуровневость. Если нет пути к координате на одном уровне - поменяй уровень и проверь снова (можно делать замкнутую фигуру, типа цилиндра например, только с одним входом на определенном слое - это штаб) Вопрос, сориентируется ли команда и поставит на вход защитника;). Кто первый найдет на карте ключевые точки - тот и победит. Я думаю два уровня -конечный вариант. Но так как волновой алгоритм работает в двумерном дискретном рабочем поле, придется делать как бы две карты для каждого слоя и их потом увязывать. Я думаю, технически это реализуемо. Нужно только, чтобы черепаха всегда проверяла два варианта прохода в двух слоях-таблицах.

     

    По поводу шеренги - зрелищно, но технически сложнее реализовать. Огромный поток данных на один компьютер, и как это все разбивать на столбцы, карты разной ширины и длины ведь будут, много возни с установкой 15-20 черепах и загрузкой в них ПО.

     

    Можно сделать проще для нас пока. Так как слоя два, а карты симметрично-зеркальные относительно центральной линии и размер карт будет приблизительно 15 на 30 плюс-минус, то есть 15 на 15 одна половина поля, хватит 2-х черепах, которые строят зеркально-диаметрально две половинки карты. То есть у нас будет массив карты с единицами и нулями. По моим скромным подсчетам время постройки ~ 7.5 минут. Рандомно можно кидать песочек в пустые места карты. Пока программисты возятся возле своих черепах, зрителю есть чем развлечься. Ну а с массивом для одной черепахи вообще проблем не будет (ни с постройкой ни с считыванием) Нужно только для одной из черепах вводить аргумент, который скажет - отзеркалить нужно диаметрально, пожалуйста:)

     

    Камня хватит, 450 штук надо, если забить полностью карту. Мы можем взять 960 (15 стаков ) камня-бэдрока и 64(стак) песка. Ну и на спавне кусочек карты чистый, небольшая площадка там будет я думаю 5х5 например.Так что все норм, запас есть огромный.

     

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


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

    type_arena = {width, length , amount_fighters ...} Массив черепашка должна получать от компьютера-судьи перед командой "Бой начался!" Так она будет знать, в какой режим боя она попала, сколько у нее товарищей (amount_fighters-1) , размеры и тип арены.

     

    Так как она стоит на спавне(для каждого типа арены есть спавн для каждого бойца, обозначенный снизу определенным типом блока) в стандартном положении, анализируя, например, цвет шерсти под собой и зная размеры арены, GPS координаты и определив направление, черепаха может сформировать в своем маленьком мозге таблицу карты, заполонить ее(таблицу) непроходимыми блоками по умолчанию. Ведь она пока не знает, что там, стена, пустота, сундук или еще что-то. В процессе разведки местности и постепенного продвижения к врагу участки карты в таблице заменяются на 0 - пустота, 1- стена, 2 - свой флаг, 30-пустой сундук, 31-сундук с углем, и прочее.

     

    Найдя сундук с углем, она проверяет(насколько позволяет ей размер своего инвентаря) количество угля в нем, берет себе сколько-то и орет своим мол, ребята, по таким-то координатам найден уголь, разбирай, пока враг не забрал:). Допустим, черепашка, которая несется с флагом врага к себе на базу, такую инфу игнорирует, но записывает ее в стек, как вероятное действие после выполнения текущего более важного. То есть должна быть таблица последующих отложенных действий. Поступающую инфу в таблицу нужно вставлять в определенное место в зависимости от его важности и "веса", а выполнять с первого. Если стек действий пустой - исследуй карту, например. Также нужно подумать, как написать функцию генератор-действий, которая в фоне с какой-то вероятностью и периодичностью генерирует действия и принуждает черепашку начать что-то делать, или прекратить текущее не приоритетное действие и начать другое(как мысли у человека;)) Кстати, после определения своего места на арене и координат арены блоки-идентификаторы точки спавна можно выкинуть, и освободить тем самым инвентарь. А это до 5 мест в инвентаре!

     

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


  3. Конкурсы скорее всего замедлят проект,так как они связаны с какими-то временными рамками. Поощрения и награды возможно выдавать в процессе непрерывной безостановочной работы над проектом. Вопросы, требующие решения, записал в шапке топика, список будет уточняться в процессе.


  4. Если хотите реально вникнуть в проект, неужели нет 20 мин глянуть видео внизу. Там все разжевал, и показал, не надо "многа букав читать", ребенку своему и то не так подробно объясняю. Я думал, народ читать не любит, а тут и видео уже смотреть влом.:) В видео четко рассказано как генерируется арена, кто ее генерирует, и знают ли про нее черепахи и игроки заранее.


  5. Приветствую вас, дорогие читатели!

     

    Эта тема открывает новый проект, который посвящен разработке программного обеспечения для боевых роботов-черепах из мода ComputerCraft, с помощью которых планируется смоделировать игру Unreal Tournament.

     

    Это битва команд, состоящих из роботов и программистов на аренах, где для победы нужно будет за определенное время уничтожить вражеских роботов, или захватить флаг. (флаги на базах, флаг в центре, прорыв "малыми силами", "подрыв базы" и прочее). Проект затронет все аспекты программирования в рамках мода ComputerCraft.;)

     

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

     

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

     

    Вот небольшой ролик на youtube, в котором я затронул лишь малую часть проекта:

    https://www.youtube.com/playlist?list=PLrGgY-Jtfx4wVBd8MyV_dJ4ccf9FPSXvN

     

    ПЕРЕЧЕНЬ ВОПРОСОВ, ТРЕБУЮЩИХ НЕОТЛАГАТЕЛЬНОГО РЕШЕНИЯ!

    • Как генерировать карту из нескольких уровней (будет ли многоуровневость) - РЕШЕНО
    • Определение типов арен (размеры, разметки, кол-во бойцов, старт. точки)- НЕ РЕШЕНО
    • Определение режимов боя, времени боя, условий победы - НЕ РЕШЕНО
    • Начальный инвентарь, начальный запас топлива - НЕ РЕШЕНО
    • Есть ли на карте склады с топливом и другими предметами - НЕ РЕШЕНО
    • Как хранятся флаги (в сундуке или в виде установленных блоков) - НЕ РЕШЕНО
    • Режим использования радиоэфира, строгие ли частоты - НЕ РЕШЕНО
    • Схема радиообмена (сформулировать направления команд и сообщений) - НЕ РЕШЕНО
    • Механизм принятия решений черепахой (с учетом коэффициентов "стоимости" и важности того или иного решения с учетом обстановки на поле боя) - НЕ РЕШЕНО (ПРИОРИТЕТ)
    • Что является стимулом для черепахи искать флаг, продолжать битву, какой приоритет на смену исследуемой зоны (местности) - НЕ РЕШЕНО (ПРИОРИТЕТ)
    • Механизм боя - НЕ РЕШЕНО
    • Поиск кратчайших путей в лабиринтах арены (волновой алгоритм) - НЕ РЕШЕНО (ПРИОРИТЕТ)
    • "Поднятие" (исследование) карты, обмен разведданными - НЕ РЕШЕНО (ПРИОРИТЕТ)
    • Контроль боевых потерь и его влияние на тактику - НЕ РЕШЕНО
    • Тактика на начало боя, как распределить задачи между бойцами - НЕ РЕШЕНО (ПРИОРИТЕТ)
    • Защита от радиоперехвата (протоколы передачи данных) - НЕ РЕШЕНО
    • Контроль правильности и честности соревнований - НЕ РЕШЕНО
    • Начальные данные (что известно на момент начала сражения, уникальные условия, случайные условия) - НЕ РЕШЕНО
    • Чем вооружены черепахи в начале боя - НЕ РЕШЕНО
    • Внесение элементов неожиданности в ход боя - НЕ РЕШЕНО
    • Установка дополнительного оборудования для зрителей (мониторы, динамики и прочее), оформление арен (всех типов), стандартизация спавнов для черепах- НЕ РЕШЕНО
    • Выработка стилей оформления арен (античный тип, футуристический и др.) - НЕ РЕШЕНО
    • Создание правил участия в соревнованиях, формирование понятий лиги, званий, наград. Правила проведения чемпионатов (как завершающий этап проекта) - НЕ РЕШЕНО
    РЕШЕНО- это значит, что выработаны четкие тезисы, написан код или псевдокод, или на крайний случай выработана мат. модель решения вопроса.

    НЕ РЕШЕНО - не соблюдено ни одно из условий статуса "решено"

     

     

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

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