Постараемся обсудить здесь различные архитектуры, которые используются для управления ботами в EVE.
История темы
Глава 1. Соло-боты
Часть 1. Вермишель
Данная архитектура представляет собой последовательно заданную логику поведения системы, текущее состояние в которой определяется по тому участку в коде, где на данный момент сосредоточено управление.
Основное отличие "вермишели" состоит в том, что выходов из состояния в котором пребывает система, за исключением прописанных внутри уже имеющегося блока не предусмотрено.
Добавление новой логики, заключается в расширении ветвлений внутри тех или иных под-блоков путем написания нового кода для обработки слежения за этими ветвлениями.
Другими словами:
[list type=decimal]
[*]"вермишель" помнит свое состояние, потому что находится в нем физически (в коде)
[*]для перехода в другое состояние должно произойти событие которое ожидает "вермишель", иначе оно останется в текущем состоянии навсегда
[*]добавление в "вермишель" таймеров выхода не только сильно загромождает код, но и делает его поддержку и расширение достаточно трудоемким
[*]в случае возникновения ошибок интерфейса или аналогичных проблем бот неработоспособен или "бото-очевиден"
[*]"прозрачность" логики, зачастую, способствует легкому вхождению новичка в разрабатываемую проблему
[/list]
Часть 2. Сенсорный автомат
Данная архитектура относится к разновидности конечных автоматов, в котором отсутствует специфическая задача на запоминание текущего состояния системы.
Создается таблица (функция) переходов, каждая строка которой наполняется уникальным набором состояний датчиков и внутренних переменных.
В процессе бесконечного цикла сначала определяется состояние датчиков наблюдения, после чего выбирается (case) в таблице соответствующее поведение системы.
В случае, если текущее состояние не осознано функцией переходов, генерируется исключение, которое разработчик использует для дальнейшего наполнения таблицы.
Другими словами:
[list type=decimal]
[*]у нас нет специфического хранилища для состояния системы, т.е. мы не помним где мы были до этого конкретно
[*]у нас нет названий для состояний и соответствующей логики для обработки диаграмм переходов
[*]мы можем хранить состояния некоторый учитываемых нами в таблице переменных
[*]набор текущих состояний датчиков и учитываемых переменных влияет на выбор функцией переходов поведения системы в данный момент
[*]если запустить бот в произвольном местонахождении вероятность корректного поведения зависит от наполнения таблицы переходов
[*]в случае возникновения ошибок интерфейса или аналогичных проблем поведение бота зависит от наполненности таблицы переходов
[*]для адекватного наполнения и тестирования таблицы переходов, мы должны использовать дополнительные инструменты (иначе утонем в сотнях строк текста состояний системы)
[*]измененное состояние сознание для облегченного восприятия функции переходов не всегда доступно для новичка
[/list]
Часть 3. Гибридные боты
Вид пытающийся сочетать в себе перечисленные выше архитектуры.
Жизнеспособность, при учете затраченных усилий, вызывает сомнения в смысле подобного подхода.
Глава 2. Мульти-боты на одной машине
Глава 3. Мульти-боты в сети
Внимание! Тема находится в процессе формирования. Прошу всех, кому есть чем поделиться или что посоветовать, поспособствовать наполнению темы.
История темы
Придя на данный раздел форума почти каждый имеет, или загорается желанием попробовать свои силы в написании ботов для EVE-Online.
Некоторые, приходят сюда, чтобы "нахаляву" найти здесь работающий бот и не прилагая дополнительных усилий использовать его.
К счастью, вторая категория, благодаря патчам ССР и содержащихся в них изменениям всё чаще стала "обламываться" в своих законных стремлениях
И хотя большинство целей начинающих ботоводов удовлетворит "косметический ремонт" уже представленных на форуме ботов, надеюсь, что наиболее активная часть сообщества "стремится к большему"
Чтобы осуществить это желание приходится задуматься об архитектуре своего проекта.
Некоторые, приходят сюда, чтобы "нахаляву" найти здесь работающий бот и не прилагая дополнительных усилий использовать его.
К счастью, вторая категория, благодаря патчам ССР и содержащихся в них изменениям всё чаще стала "обламываться" в своих законных стремлениях

И хотя большинство целей начинающих ботоводов удовлетворит "косметический ремонт" уже представленных на форуме ботов, надеюсь, что наиболее активная часть сообщества "стремится к большему"

Чтобы осуществить это желание приходится задуматься об архитектуре своего проекта.
Глава 1. Соло-боты
Часть 1. Вермишель
Данная архитектура представляет собой последовательно заданную логику поведения системы, текущее состояние в которой определяется по тому участку в коде, где на данный момент сосредоточено управление.
Основное отличие "вермишели" состоит в том, что выходов из состояния в котором пребывает система, за исключением прописанных внутри уже имеющегося блока не предусмотрено.
Добавление новой логики, заключается в расширении ветвлений внутри тех или иных под-блоков путем написания нового кода для обработки слежения за этими ветвлениями.
Другими словами:
[list type=decimal]
[*]"вермишель" помнит свое состояние, потому что находится в нем физически (в коде)
[*]для перехода в другое состояние должно произойти событие которое ожидает "вермишель", иначе оно останется в текущем состоянии навсегда
[*]добавление в "вермишель" таймеров выхода не только сильно загромождает код, но и делает его поддержку и расширение достаточно трудоемким
[*]в случае возникновения ошибок интерфейса или аналогичных проблем бот неработоспособен или "бото-очевиден"
[*]"прозрачность" логики, зачастую, способствует легкому вхождению новичка в разрабатываемую проблему
[/list]
Часть 2. Сенсорный автомат
Данная архитектура относится к разновидности конечных автоматов, в котором отсутствует специфическая задача на запоминание текущего состояния системы.
Создается таблица (функция) переходов, каждая строка которой наполняется уникальным набором состояний датчиков и внутренних переменных.
В процессе бесконечного цикла сначала определяется состояние датчиков наблюдения, после чего выбирается (case) в таблице соответствующее поведение системы.
В случае, если текущее состояние не осознано функцией переходов, генерируется исключение, которое разработчик использует для дальнейшего наполнения таблицы.
Другими словами:
[list type=decimal]
[*]у нас нет специфического хранилища для состояния системы, т.е. мы не помним где мы были до этого конкретно
[*]у нас нет названий для состояний и соответствующей логики для обработки диаграмм переходов
[*]мы можем хранить состояния некоторый учитываемых нами в таблице переменных
[*]набор текущих состояний датчиков и учитываемых переменных влияет на выбор функцией переходов поведения системы в данный момент
[*]если запустить бот в произвольном местонахождении вероятность корректного поведения зависит от наполнения таблицы переходов
[*]в случае возникновения ошибок интерфейса или аналогичных проблем поведение бота зависит от наполненности таблицы переходов
[*]для адекватного наполнения и тестирования таблицы переходов, мы должны использовать дополнительные инструменты (иначе утонем в сотнях строк текста состояний системы)
[*]измененное состояние сознание для облегченного восприятия функции переходов не всегда доступно для новичка
[/list]
Часть 3. Гибридные боты
Вид пытающийся сочетать в себе перечисленные выше архитектуры.
Жизнеспособность, при учете затраченных усилий, вызывает сомнения в смысле подобного подхода.
Глава 2. Мульти-боты на одной машине
Глава 3. Мульти-боты в сети
Внимание! Тема находится в процессе формирования. Прошу всех, кому есть чем поделиться или что посоветовать, поспособствовать наполнению темы.