Вообще, это будет продукт математического моделирования с применением механизмов Марковских ПроцессовAsesino писал(а):(если я правильно прочитал первый пост) это будет всё-таки просто мультиплеерный рогалик, а не ММОРПГ
Разработка сетевого Rogue-Like
Модератор: Jolly Roger
- reincarnation
- Сообщения: 33
- Зарегистрирован: 25 ноя 2006, 22:24
- Откуда: Москва
Это уже более интересно, но менее понятно. Как марковские цепи с рогаликами у вас связаны?quasist писал(а):Вообще, это будет продукт математического моделирования с применением механизмов Марковских ПроцессовAsesino писал(а):(если я правильно прочитал первый пост) это будет всё-таки просто мультиплеерный рогалик, а не ММОРПГ
Когда я начал объяснять это своему научному руководителю(профессор мат анализа), то он устроил всей группе контрольную по марковским процессамreincarnation писал(а): Это уже более интересно, но менее понятно. Как марковские цепи с рогаликами у вас связаны?
Речь идёт о вероятности перехода чего-то из одного состояния в другое. Это описывается матрицей (NхN квадратной стохастической): в строчку/столбик вероятности перехода из данного состояния(их N) в одно из N других.
Такими матрицами будет описано на сервере поведение монстры, системы спавна, генератора уроней и.т.д.
Плюсы - конечный алгоритм и простота редактирования
- Максим Кич
- Администратор
- Сообщения: 1642
- Зарегистрирован: 03 дек 2006, 20:17
- Откуда: Витебск, Беларусь
- Контактная информация:
Интересно, честно говоря. С особенным удовольствием я бы почитал про применение цепей Маркова для генерации уровней, потому что лично мне не совсем понятно, что в таком случае будет считаться состоянием.quasist писал(а):Такими матрицами будет описано на сервере поведение монстры, системы спавна, генератора уроней и.т.д.reincarnation писал(а): Это уже более интересно, но менее понятно. Как марковские цепи с рогаликами у вас связаны?
Плюсы - конечный алгоритм и простота редактирования
Dump the screen? [y/n]
К примеру у системы "фрагмента" генератора 4 состоянияМаксим Кич писал(а):Интересно, честно говоря. С особенным удовольствием я бы почитал про применение цепей Маркова для генерации уровней, потому что лично мне не совсем понятно, что в таком случае будет считаться состоянием.
0-рисует корридор по направлению
1-поворот корридора на 90градусов влево
2-поворот корридора нп 90градусов вправо
3-поставить дверь или декорацию
имеется матрица(вероятности переходов в другие состояния в строке)
30% 20% 20% 30% -рисует корридор по направлению
80% 0% 0% 20% -поворот корридора на 90градусов влево
60% 0% 20% 20% -поворот корридора нп 90градусов вправо
30% 35% 35% 0% -поставить дверь или декорацию
И дать этому шагов 20...
Надеюсь в процессе написания диплома, у меня появются более впечатляющее нароботки.
Хе-хе, копаясь на форуме TIGSource, нашёл платформенную игрушку (в разработке), в которой уровни генерятся с помощью тех самых Markov Chains Вот здесь.
Последний раз редактировалось Asesino 27 май 2008, 16:34, всего редактировалось 1 раз.
- reincarnation
- Сообщения: 33
- Зарегистрирован: 25 ноя 2006, 22:24
- Откуда: Москва
Я правильно понимаю, что в случае, например, поведения монстров, изменение состояния будет происходить в зависимости от внешних(по отношению к монстру) воздействий, например, ударили его или нет, есть ли рядом другие монстры и т.п.? В этом случае мы получаем скорее не марковскую цепь, а недетерминированный конечный автомат.quasist писал(а):Когда я начал объяснять это своему научному руководителю(профессор мат анализа), то он устроил всей группе контрольную по марковским процессамreincarnation писал(а): Это уже более интересно, но менее понятно. Как марковские цепи с рогаликами у вас связаны?
Речь идёт о вероятности перехода чего-то из одного состояния в другое. Это описывается матрицей (NхN квадратной стохастической): в строчку/столбик вероятности перехода из данного состояния(их N) в одно из N других.
Такими матрицами будет описано на сервере поведение монстры, системы спавна, генератора уроней и.т.д.
Плюсы - конечный алгоритм и простота редактирования
Смотря, что принимать за "время"(ему не обязательно быть непрерывным). И "внешние взаимодействия" можно описать как изменения коофициентов матрицы(они тоже могут меняться с течением времени).reincarnation писал(а):Я правильно понимаю, что в случае, например, поведения монстров, изменение состояния будет происходить в зависимости от внешних(по отношению к монстру) воздействий, например, ударили его или нет, есть ли рядом другие монстры и т.п.? В этом случае мы получаем скорее не марковскую цепь, а недетерминированный конечный автомат.quasist писал(а):Когда я начал объяснять это своему научному руководителю(профессор мат анализа), то он устроил всей группе контрольную по марковским процессамreincarnation писал(а): Это уже более интересно, но менее понятно. Как марковские цепи с рогаликами у вас связаны?
Речь идёт о вероятности перехода чего-то из одного состояния в другое. Это описывается матрицей (NхN квадратной стохастической): в строчку/столбик вероятности перехода из данного состояния(их N) в одно из N других.
Такими матрицами будет описано на сервере поведение монстры, системы спавна, генератора уроней и.т.д.
Плюсы - конечный алгоритм и простота редактирования
Вероятности в матрице AI могут быть заданы функционально, скажем, от числа врагов, которых монстр видит, от здоровья монстра и.т.д.
Это звучит тока страшно.
- reincarnation
- Сообщения: 33
- Зарегистрирован: 25 ноя 2006, 22:24
- Откуда: Москва
Это не страшно, я просто говорю, что есть более подходящая модель происходящего.quasist писал(а):Смотря, что принимать за "время"(ему не обязательно быть непрерывным). И "внешние взаимодействия" можно описать как изменения коофициентов матрицы(они тоже могут меняться с течением времени).reincarnation писал(а):Я правильно понимаю, что в случае, например, поведения монстров, изменение состояния будет происходить в зависимости от внешних(по отношению к монстру) воздействий, например, ударили его или нет, есть ли рядом другие монстры и т.п.? В этом случае мы получаем скорее не марковскую цепь, а недетерминированный конечный автомат.quasist писал(а): Когда я начал объяснять это своему научному руководителю(профессор мат анализа), то он устроил всей группе контрольную по марковским процессам
Речь идёт о вероятности перехода чего-то из одного состояния в другое. Это описывается матрицей (NхN квадратной стохастической): в строчку/столбик вероятности перехода из данного состояния(их N) в одно из N других.
Такими матрицами будет описано на сервере поведение монстры, системы спавна, генератора уроней и.т.д.
Плюсы - конечный алгоритм и простота редактирования
Вероятности в матрице AI могут быть заданы функционально, скажем, от числа врагов, которых монстр видит, от здоровья монстра и.т.д.
Это звучит тока страшно.
Без формул, недерминированным конечным автоматом называется автомат, на вход которого в дискретном времени поступают сигналы из некоторого конечного алфавита(в данном случае внешние раздражители). Автомат в каждый момент времени находится в некотором состоянии из конечного списка. Соответственно, выход(дальнейшее поведение) и состояние, в которое перейдет автомат на следующем шаге, определяется по входному сигналу и текущему состоянию автомата. Для недерминированного автомата это происходит недетерминированно, т.е. для каждого входного символа и каждого текущего состояния есть возможные пары (выход, новое состояние) с присвоенными им вероятностями.
На roguelikedevelopment.org, помнится, были статьи про "State Machine AI", это по идее то же самое, но без вероятностей, поведение на каждом шаге детерминированно.
Да хоть машиной Тьюринга всё в своём проекте реализуй. Цитировать статью из курса теории алгоритмов - не самое нужное в разработке рогуелайков. Что ты имеешь в виду тогда под недетерменированым поведением на каждом шаге?(или ты привинтил к своему компу реальный генератор чисел)reincarnation писал(а):Без формул, недерминированным конечным автоматом называется автомат, на вход которого в дискретном времени поступают сигналы из некоторого конечного алфавита(в данном случае внешние раздражители). Автомат в каждый момент времени находится в некотором состоянии из конечного списка. Соответственно, выход(дальнейшее поведение) и состояние, в которое перейдет автомат на следующем шаге, определяется по входному сигналу и текущему состоянию автомата. Для недерминированного автомата это происходит недетерминированно, т.е. для каждого входного символа и каждого текущего состояния есть возможные пары (выход, новое состояние) с присвоенными им вероятностями.
На roguelikedevelopment.org, помнится, были статьи про "State Machine AI", это по идее то же самое, но без вероятностей, поведение на каждом шаге детерминированно.
У меня дипломная работа про марковские големы... ...процессы, рогуелайк значит на них и будет
- Максим Кич
- Администратор
- Сообщения: 1642
- Зарегистрирован: 03 дек 2006, 20:17
- Откуда: Витебск, Беларусь
- Контактная информация:
А если принять во внимание тот факт, что всё по-любому пляшет от двух факторов:quasist писал(а):Ни что не успокаивает посреди Сессии, как программирование
Сегодня дошёл до очерезной идеи. Поскоку игроку приходит вся информация на каждый ход: всё что он видит, его координаты, сообщения, параметры игрока. То записывая их, можно потом организовать реплей. Пакет одного хода занимает ~512 байт.
1. Значение RNG
2. Ввода игрока
то, на каждый ход требуется максимум 2 байта (код клавиатуры - 1 байт, плюс по биту на состояния shift, ctrl и alt). Плюс, начальное значение RNG (или несколько таких значений, если для каких-то целей используется несколько разных генераторов, что, имхо, как минимум странно). Кстати, всюду, где мне удалось расковыряться с записью демок используется именно такая схема.
Dump the screen? [y/n]
Это скорее про исходящий трафик, который обычно для реплея не нужен. Ход игрока будет определятся индеском умения(скилла, действия) и "заканчиваться" направлением.Максим Кич писал(а):А если принять во внимание тот факт, что всё по-любому пляшет от двух факторов:
1. Значение RNG
2. Ввода игрока
то, на каждый ход требуется максимум 2 байта (код клавиатуры - 1 байт, плюс по биту на состояния shift, ctrl и alt). Плюс, начальное значение RNG (или несколько таких значений, если для каких-то целей используется несколько разных генераторов, что, имхо, как минимум странно). Кстати, всюду, где мне удалось расковыряться с записью демок используется именно такая схема.
Никакие shift, ctrl и alt у меня использоваться не будут.
Даже если сделать так, чтобы всё генерилось(одинаковое в реплее и в игре)и ходы были по 2 байта, то возникает проблема "апгрейда" самого генератора, когда старые реплеи станут не совместимыми.
КТОМУ ЖЕ! (тока щас дошло) КАК ГЕНЕРАТОР СЛУЧАЙНЫХ ЧИСЕЛ ВОСПРОИЗВЕДЁТ В РЕПЛЕЕ ДЕЙСТВИЯ ДРУГИХ ИГРОКОВ ИМЕЯ ВСЕГО 2 БАЙТА???
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 44 гостя