Я тут прикинул, если писать на хаскелле и на хаскелоидов же в качестве целевой аудитории ориентироваться, то рабочий прототип можно уложить пару сотен строчек.
Бота можно описать такой функцией:
bot
:: Serializable memory
-- состояние текущей и соседних клеток, боты которые их занимают и т.п.
=> Environment
-- состояние бота, которым управляет система (типа жизни, инвентаря, скилов)
-> BotState
-- user defined состояние бота, тут можно запоминать свои предыдущие действия и их последствия
-> memory
-- случайное число, источник рандомности
-> Int
-- что бот решил делать на этом шаге + новое состояние памяти
-> (BotAction, memory)
Дружественные боты могут друг с другом общаться: либо прямым доступом к user defined состоянию, либо через сообщения в BotAction. Т.е. можно создавать команды.
Бонусы такие: - игроки получают в распоряжение выразительный язык для описания поведения ботов; - при этом (теоретически) можно получить гарантии того, что боты ничего деструктивного с системой сделать не смогут (надо только подумать, что делать c unsafePerformIO); - очень быстро можно написать прототип и постепенно дорабатывать его.
Самое сложное придумать хороший геймплей. А самое интересное -- написать способный держать кучу ботов движок на хаскелле.
no subject
Бота можно описать такой функцией:
Дружественные боты могут друг с другом общаться: либо прямым доступом к user defined состоянию, либо через сообщения в BotAction. Т.е. можно создавать команды.
Бонусы такие:
- игроки получают в распоряжение выразительный язык для описания поведения ботов;
- при этом (теоретически) можно получить гарантии того, что боты ничего деструктивного с системой сделать не смогут (надо только подумать, что делать c unsafePerformIO);
- очень быстро можно написать прототип и постепенно дорабатывать его.
Самое сложное придумать хороший геймплей.
А самое интересное -- написать способный держать кучу ботов движок на хаскелле.