Вначале был хаос. Из хаоса родилась идея. Идея трансформировалась в новый Мир. Мир где живут злобные существа, где они поедают друг-друга. Где нет ни дня, ни ночи. Тут нет эмоций, есть только холодный расчет. И лишь избранный уничтожит все и всех…
А теперь по существу:)
Предыстория:
golodnyj и
intr13 решили написать эмулятор мира, в котором будут жить и взаимодействовать программы-существа.
Терминология:
- Мир - игровое пространство состоящее из квадратных областей (у каждой области четыре прямых и четыре диагональных соседа). Области мира объединяются в прямоугольник по периметру которого расположены непроходимые области.
- Область (область мира) - основной базовый элемент мира, в один момент времени в области может находиться только одно существо.
- Существо - основной житель мира, который может и должен в нем жить. Существо это агент, который появляется в мире после его инициализации.
- Существа организованны в команды (могут из разных типов существ).
- Эмрельд - на каждой карте есть один эмеральд, владение которым может остановить игру.
Как это работает:
- Вы настраиваете какие существа и команды существую в мире.
- Вы создаете игровой мир.
- Происходит инициализация всех существ игрового мира. Существа представляют собой обычные Java-классы, которые должны реализовать специальный интерфейс.
- Запускается процесс эмуляции игрового мира, во время которого существа злобно поедают друг друга.
- Выводится результаты эмуляции игрового мира.
Пример простого агента:
Далее будет приведен простого существа, которое делает всего одну полезную вещь: ест! Не правда ли вам знакомы подобные особи ;)
public class EatAgent implements Agent {
// Инициализация существа
public void init(InitAgentContext initAgentContext) {
int power = initAgentContext.getStartingPoints() / 2;
initAgentContext.setStartingPoints(power, initAgentContext.getStartingPoints() - power);
}
// Процесс совершения хода существом
public void turn(AgentContext agentContext) {
agentContext.setAction(EatAction.getInstance());
}
}
Вывод результатов эмуляции:
Пока у нас нет интерфейса для эмеральдов, но вы можете помочь нам его сделать ;) А сейчас после запуска эмеральдов вы увидите следующий текст:
[0:46:35] Start application - Crown of emeralds
Status:
turn - 8
maxTurn - 1000
Living agents [3]:
AgentInfo:uid[third],class[SimpleAgent],level[14],turns[7],
power[5],energy[4],maxEnergy[5].
AgentInfo:uid[second],class[SimpleAgent],level[12],turns[8],
power[5],energy[2],maxEnergy[5].
AgentInfo:uid[first],class[SimpleAgent],level[5],turns[7],
power[5],energy[5],maxEnergy[5].
Dead agents:[0]:
[0:46:35] End application - Crown of emeralds
Из приведенного выше мы видим:
- Я (intr) больной человек и не сплю в 46 минут первого :)
- Максимальное число ходов 1000, но эмуляция закончилась на 8 ходу.
- Количество живых агентов равно трем, мертвых агентов нет :)
- Победил агент third, набрав 14 уровень
Вместо заключения:
Мы написали базовый вариант игрового мира со своими правилами и законами, но мы не хотим закрывать проект от всех заинтересованных лиц. Поэтому в ближайшее время будет открыта вся информация по данному проекту и предоставлен доступ к исходному коду проекта. Нам нужны как разработчики существ так и разработчики ядра системы.
Вы хотите участвовать в проекте?
П.С. Чуть не забыл: мы ищем парочку бета-тестеров и описанный проект создан в рамках сообщества программистов Иркутска