Entry tags:
Идея игры Third Life
Уже очень давно жду, не могу дождаться, игру Spore.
А тем временем у меня появилась идея игры, которая немного напоминает Spore, но при этом вполне может быть запрограммирована очень небольшими силами. Игра эта - некая смесь Second Life, Core Wars, клеточного автомата, Википедии и Твиттера. (Звучит безумно, я понимаю).
Название игры Third Life образовано так: Conway's Life + Second Life = Third Life.
Идея ещё далеко не до конца продумана, но в первом приближении её можно описать так:
На бесконечном двухмерном поле, разделённом на клетки, живут точки. (Всё это, конечно, web-based, так что любой пользователь, зашедший на сайт, видит поле и может принимать участие в игре).
Точки создаются пользователями, которые дают им имена. Кроме того, пользователи создают множество различных "поведений", которые описываются на некоем примитивном языке с помощью набора изначально заданных basic commands. Все поведения хранятся в единой базе данных, которую можно редактировать, то есть "поведение" - это как бы статья в Википедии - любой пользователь может всегда изменить поведение, но все версии сохраняются.
Кроме того, у точек есть "эмоции" (которые можно обозначать разными цветами). "Эмоции" тоже создаются пользователями и хранятся в базе данных эмоций.
Эмоции влияют на поведения, то есть поведение может меняться под воздействием текущей эмоции, а сами эмоции меняются в зависимости от контекста. Контекст - это внешние обстоятельства: встреча с другой точкой, разговор с соседней точкой, эмоция или поведение соседней точки и т.п.
Точки могут вести блог (нечто вроде Твиттера), где они коротко описывают происходящие с ними события. Таким образом, пользователи, могут следить за точками как самом поле, так и просто читая их "блог".
(Комическое расширение идеи - социальная сеть точек, где у каждой точки есть страница в Фейсбуке, и друзья-точки, которые повстречались на поле).
Идея "поведений" и "эмоций" в общих чертах такова. Изначально задан набор из нескольких примитивных команд (например, random walk, stay, go to, set emotion, say, blog). Поведения можно составлять из примитивных команд и из других поведений, постепенно создавая сложные, многоступенчатые поведения. Чтобы все точки не вели себя одинаково, игроки могут разрешать или запрещать своим точкам пользоваться теми или иными поведениями из базы данных. Кроме того, в каждое поведение можно ввести фактор случайности.
Простое поведение можно описать, например, так (жирным шрифтом выделены ключевые слова):
behavior A:
on meeting:
if neighbor is happy:
say "hello"
blog "I've met a very happy person today named <имя соседней точки>..."
if neighbor is angry:
run away
set emotion scared
Здесь:
- on meeting - это событие "встреча с другой точкой". У каждой точки есть набор событий, на которые она реагирует.
- neighbor - это обозначение соседней точки.
- happy, angry - это эмоции, которые существуют в базе данных. Сама по себе эмоция ничего не обозначает, но смысл ей придают те поведения, которые основываются на значении слова.
- say - это основная команда, которая просто выводит на экран данные слова (около произносящей их точки).
- blog - это основная команда, которая помещает данный текст в блог точки.
- run away - может быть командой, составленной из более примитивного набора go + направление движения + скорость.
- set emotion - это основная команда, которая меняет эмоцию (и цвет) точки.
Заметим также, что переключение эмоции может служить триггером к произведению какого-то нового дейтствия. Например, set emotion scared, может вызвать следующее:
on my emotion set to scared:
sleep 5 hours
где sleep - это ещё какое-то поведение, описанное в базе данных.
Из нескольких поведений можно составлять ещё более сложные поведения, например:
behavior ABC:
if my emotion is sad:
use behavior A
if my emotion is cool:
use behavior B
else:
use behavior C
Постепенно поведения и их взаимосвязи становятся настолько сложными, что пользователь уже перестаёт управлять и вообще следить за "правильностью исполнения", а просто наблюдает за событиями, происходящими с точками, или ограничивается чтением блога.
Избежать совсем уж хаотичного и непредсказуемого поведения должен помочь "эффект Википедии": коллективный разум пользователей должен изменять или удалять нерациональное поведение. Таким образом, семантика эмоций и поведений должна постепенно возникать из постоянно уточняемой базы данных. Очень важно подчеркнуть, что изначально заданный набор основных команд должен быть как можно более примитивным.
Мы получаем некий клеточный автомат, которые подчиняется очень сложным правилам (в отличие от обычного клеточного автомата). Кроме того, правила эти постоянно уточняются пользователями (то есть, "автомат" разрешает вмешательство извне), а также этот автомат умеет рассказывать наблюдателям о происходящих событиях человеческим языком.
Можно даже сказать, что симбиоз клеточного автомата с пользователями постепенно создаёт семантическую сеть, которая этим автоматом и управляет.
Проблема, которую я здесь сразу вижу, такова: очень сложно, если вообще возможно, реализовать действительно интересное поведение на основе единственного значимого события в жизни точки - то есть, на встречах с другими точками. Для того, чтобы разнообразить жизнь точек, нужны ещё и объекты другого мира, а именно - предметы, поселения и, возможно, деньги. Тогда точки могут обмениваться предметами (которые также влияют на их поведение), строить города и дома (закрашивать области доски разными цветами и давать им названия), а также предлагать друг другу работу и платить друг другу деньги, на которые, в свою очередь, можно покупать предметы, дома и земли.
Опять же, всё это должно быть не заранее задано, а постепенно вноситься пользователями в базу данных. Всё, что здесь требуется - это несколько новых примитивных команд, например: build, create, name, give, take.
Но всё равно, такое расширение очень усложняет игру.
В общем, вот такая идея. Буду рад любым мыслям по этому поводу.
no subject
no subject
но только язык нельзя
no subject
no subject
я тебе тут мальнькую штучку нарисовал
http://setupmac.com/images2/hbcatpad.mov
no subject
Приезжай давай скорей в гости.