ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Механизм "живой" вселенной | страница 1 |
 |
Страница 1 из 1 |
|
|
|
Канал Игры Мечты: «Механизм "живой" вселенной» |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Привет всем!
Вот о чем я хочу поговорить:
Хочу создат алгоритм динамической вселенной, создать иллюзию жизни в ней. Для применения в играх.
Есть карта вселенной, будь то сектора или звездные системы или любые другие единицы (тер-рии для наземного сеттинга). Пусть такой сектор называется RUnit.
RUnit - узел графа вселенной. Между узлами есть взвешенные ребра, как транспортные связи.
Каждый RUnit имеет свойства типа ценность и сколько людей(или каких-то еще тварей) там могут проживать. Ценность, скорее всего состоит из массива конкретных ресурсов - как товары в Х. Так мы можем создать что-то вроде торговли.
Окей, теперь перейдем к политике.
На этом графе могут образовываться страны (CUnit`ы). У них могут быть разные свойства: форма правления, уровень технологий (определяется не RUnit` ами), стратегия развития (мирная, воинственная) и т. п. Каждая страна стремиться к улучшению своего состояния.
Это можно делать через колонизацию незанятых RUnit`ов, захват чужих и торговля. Все зависит от Дипломатии - соотношения свой-чужой между странами.
Система дипломатии зависит от страны - её стратегии развития. Мирная страна будет воевать только когда не будет ресурсов и торговать невозможно.
Большие страны со временем распадаются в результате революций, гражданских войн.
Могут быть объявлены альянсы, союзы и т.п.
Я надеюсь общая идея ясна.
Предлагаю развить идею. Сразу оговорюсь - прошу только теорию, которая может быть реализована, витание в облаках не приветствуется. Нужно сделать не максимально точную симуляцию, а максимально правдоподобную.
_________________ MOV topka, C++
Последний раз редактировалось: Jurec (16:44 07-09-2011), всего редактировалось 2 раз(а) |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
Jurec : |
Мирная страна будет воевать только когда не будет ресурсов и торговать невозможно.
|
В этом случае она будет немедленно уничтожена. Воевать без ресурсов - самоубийство. Неудачный алгоритм.
Можно на псевдорандоме попробовать. Раз в период по всему листу стран кидать кубики на действие по отношению к соседней стране (агрессия, союз, торговля, нет действия х 5), к соседнему незанятому кластеру (колонизировать, занять, оставить). Будет быстро имитировать кипучую деятельность.
Если можно позволить себе небыстро - вводить систему весов для каждого узла (вес по ресурсам (целесообазность колонизации), по агрессии (целесообразность отбивать у противника), по союзу (целесообразность заключать союз), по экономике (целесообразность торговли)) плюс шум с переменной амплитудой плюс условие максимизации вместе с внутренними параметрами каждой страны - и кидать на нейросеть каждой страны. Нехай выбирает и учится максимизировать. Может получиться муравейник.
Шум нужен, чтобы в результате не образовалась стагнация, а то ведь найдёт идеальное решение и/или зациклится...
_________________ Трещит земля как пустой орех
Как щепка трещит броня |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Guest : |
Воевать без ресурсов - самоубийство. Неудачный алгоритм.
|
Согласен.
Guest : |
Если можно позволить себе небыстро
|
Можно, симуляция одного шага может происходить за некоторое время.
Guest : |
Шум нужен, чтобы в результате не образовалась стагнация
|
Или шум можно реализовать случайным событием - например техногенной катастрофой, которая уничтожит RUnit.
_________________ MOV topka, C++ |
|
|
Guest
2075 EGP
              Рейтинг канала: 5(167) Репутация: 376 Сообщения: 27975 Откуда: Моск. Зарегистрирован: 12.10.2004
 |
|
Jurec : |
Или шум можно реализовать случайным событием - например техногенной катастрофой, которая уничтожит RUnit.
|
Резкие скачки весов при уничтожении узла ИМХО вызовут треш и угар в системе (сильный расколбас устоявшихся решений при изменении графов - мы же аж целую точку со всеми её связями сносим!), плюс большой шанс ликвидации CUnit'a, владевшего узлом.
Можно делать более "мягкий" вариант - каким-то рандом-событием менять один или несколько из весов узла. Неурожайный год - пополамит экономику. Падение метеорита - удваивает ресурс, но четвертит экономику. Смена правительства/принадлежности на несколько шагов удваивает как союз, так и агрессию (затем она плавно снижается). Техногенная катастрофа пополамит всё, но это уже жесть.
Зануление или резкий спад веса узла может спровоцировать появление "пустошей" - если вес стоимости занятия узла (или вес покидания узла! Ужас какой.) будет больше веса самого узла (ну или веса удержания узла. Для простоты считаем, что вес CUnit'a равен сумме весов входящих в него RUnit'ов).
На самом деле интересно будет даже просто следить за тем, как система в целом будет реагировать на "трогания" отдельных узлов. Особенно если система включает в себя много простых либо мало, но сложных правил.
Вообще, разбросать правила, поле входных данных с переходами и несколько стартовых точек - и вот вам уже подобие старой игрушки Life...
добавлено спустя 20 секунд:
А уж как это визуально будет выглядеть...
_________________ Трещит земля как пустой орех
Как щепка трещит броня
Последний раз редактировалось: Guest (17:40 07-09-2011), всего редактировалось 2 раз(а) |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Вариантов что будет происходить случайно - может быть много. + даже может быть контролироваться через инет, где разработчики могут добавлять и менять уже имеющиеся.
А идея игры может быть даже такая что игрок - это просто человек в этом мире. Например, пилот в Х-серии. Поднявшись до верха рейтинга он может участвовать в политике.
Но исходя из этого нужно еще больше детализировать систему. Нужно ввести военный флот. На дальнем расстоянии от игрока - бои считать приблизительной оценкой. Ну а в поле зрения - добавлять разные события, чтоб не было что-то вроде стенка на стенку каждый бой.
Плюс в случае той же катастрофы (например, звезда системы превращается в сверхновую) игрок может учавствовать в спасении людей.
А значит нужно ввести мародерство, миссии.
_________________ MOV topka, C++ |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Яркий пример в тему вспоминается пока что только 1: Sid Meier's Pirates! (1987) http://en.wikipedia.org/wiki/Sid_Meier's_Pirates!
В игровом пространстве 3-4 страны, под флагом которых могут быть города (неск десятков).
Каждый город характеризуется запасом золота, некоторым запасом товаров (неск. видов), и гарнизоном/фортом (уровень защиты города), количеством жителей.
В игре игрок может грабить города (уничтожение/сокращение гарнизона, обнуление денег в городе, уменьшение товаров (сколько увезет) ), изменять принадлежность стране (если серьезно захватит).
В то же время происходят рандомно события (7 - messages). Это грабеж пиратов города или атака от инков (тжс что и игрок), нахождение new gold mine (увеличение $ города), malaria strikes - уменьшение населения, смена губернатора, захват города другой страной, ..
Т.е. события происходят рандомно время от времени, о них нужно узнавать в новостях (встречаясь с другими кораблями или в таверне города). При всем этом города постоянно живут, увеличивают свое благосостояние и усиливают гарнизон защиты (пока их не ограбят).
Это все введено с вписыванием в игровую механику (т.к. игрок свободный капитан корабля, который может быть пиратом, торговцем, охотником за пиратами, поданным какой-то страны, искателем сокровищ и т.д.)
Здесь для результативной игры за событиями нужно следить. Хотя например в других так не чувствуется. X-COM Apocalypse организации города взаимодействуют между собой, но игрока это не особо волнует. Чуть лучше, но ~ такая же ситуация в Civ.
_________________ μηδείς αγεωμέτρητος εισίτω |
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
Jurec : |
Предлагаю развить идею. Сразу оговорюсь - прошу только теорию, которая может быть реализована, витание в облаках не приветствуется. Нужно сделать не максимально точную симуляцию, а максимально правдоподобную.
|
Это для сингла или он-лайн? Если сингл - то можно кое в чём упростить даже. Например в тех секторах, которые игрок давно не посещал, можно о них забыть и не просчитывать - когда игрок там появится сгенерить всё заново. "Коэффициент давности" придётся подбирать исходя из конкретных параметров "потоков" между юнитами, или для каждого юнита будет +1 параметр, для КД, зависящий от того, насколько там игрок "наследил": если мало - то всё устаканится быстро, если игрок своими действиями что-то сильно сместил в чью-то сторону - держим и считаем всё максимально долго, добавляя рандомный коэффициент по чуток, пока воздействие игрока не сползёт к нулю, и мы снова можем "забыть" об этих юнитах - когда юзер снова появится в этом районе - сгенерим всё по новой.
Естественно - для мультиплеера это не подойдёт.
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
Minx
1011 EGP
        Рейтинг канала: 6(332) Репутация: 139 Сообщения: 10548 Откуда: Gomel, Belarus Зарегистрирован: 19.11.2005
 |
|
Jerry Rezet : |
Естественно - для мультиплеера это не подойдёт.
|
С чего это? Может есть области без игроков или какие-то из них засыпают например на ночное время (когда игроки спят).
Но вообще идея больше похожа на преждевременную оптимизацию.
_________________ μηδείς αγεωμέτρητος εισίτω
Последний раз редактировалось: Minx (15:29 09-09-2011), всего редактировалось 1 раз |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Первоначально у меня была идея синглплеера с возможностью коннекта на сервер за новой логикой. Типа DLC.
Но тут особо оптимизировать ничего не надо- расчеты не сложные
_________________ MOV topka, C++ |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Теперь вот какой вопрос - как должна проходить симуляция?
Если на RUnit`е нет другой жизни и есть благоприятные условия - там может появится жизнь за N_life ходов.
За Nspace ходов могут (если есть ресурсы) появится технологии для космических полетов.
Далее идет колонизация..
Что дальше? Как колонии должны развиваться? Как вообще должна идти симуляция развития? Пусть пока без других рас.
_________________ MOV topka, C++ |
|
|
mc_
408 EGP
   Рейтинг канала: 1(8) Репутация: 41 Сообщения: 2841
Зарегистрирован: 09.04.2010
 |
|
Основной ресурс - жратва (точнее, жизнеобеспечение). Чать населения производит жратву (колхозники, ага) с заданной эффективностью. Допустим, 1.5, то есть каждые двое колхозников обеспечивают жратвой еще одного человека, занятого в другой области.
Эти свободные от колхозов люди и двигают прогресс. В том числе растет эффективность производства жратвы (например, было 1,5, стало 2,7), что позволяет больше народу высвободить на науку.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Окей. Что такое наука? Что в неё может входить?
_________________ MOV topka, C++ |
|
|
Jerry Rezet
581 EGP
  Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005
 |
|
Jurec : |
Окей. Что такое наука? Что в неё может входить?
|
Всё . Шютко..
добавлено спустя 12 минут:
По порядку на что влияет:
1) Т.к. идёт рассчёт грузо/пассажиропотоков между юнитами - то наука может влиять на их эффективность - количество грузов (грузоподъёмность/пассажировместимость), скорость оборота финансов между R и C юнитами.
2) Пушки/оружие: их эффективность определяет обороноспособность юнитов, - количество, качество и интенсивность боевых действий между С-юнитами.
3) На организационные вопросы наука тоже влияет - чем выше организация, тем меньше коррупция, выше эффективность добычи ископаемых, пищи, эффективность использования энергии и прочее в том же духе - короче повышается экспорт из юнита, причём высокотехнологичный экспорт - у которого высокая стоимость, но низкая грузоёмкость. В менее развитых юнитах обратно - высокая грузоёмкость, но низкая стоимость (руда, ископаемые, писча), следовательно и низкая доходность при увеличенном грузопотоке.
Соотетственно - чем выше организационная составляющая юнита, тем меньше в нём коррупции -> меньше бандитизма и преступности -> т.к. "честным трудом", типа, больше заработать можно, т.к. хайтек более прибылен при высокой организованности юнита, а лоутек (даже отбор хайтека пиратами) заведомо менее прибылен: хайтек требует только ресурсов и зарплаты при несопоставимо более высокой ценности, а захват влечёт издержки на ремонты и вооружение, которое тоже в целом, является хайтеком.
4) Грузопотоки, опять же - наука влияет и на транспорт: быстрее, выше (или дальше), сильнее (грузоподъёмней, то бишь) - то есть чем лучше развит транспорт, тем с более дальними юнитами он может торговать/взаимодействовать, скорость транспорта выше - быстрее оборот грузов и финансов соответственно, и тем больший объём грузов юнит сможет экспортировать/импортировать. А следовательно - быстрее развиваться, т.к. легче может получить доступ к ресурсам других юнитов (купить, обменять, добыть в арендуемой ресурсоёмкой местности - хайтекам легче добывать ресы даже у других юнитов - у них издержки меньше, -> лоутеки больше прибыли могут получить за ренту с хайтеков за пользование месторождениями, чем если бы они сами их добывали, например).
Как-то так..
добавлено спустя 6 минут:
mc_ : |
Основной ресурс - жратва (точнее, жизнеобеспечение). Чать населения производит жратву (колхозники, ага) с заданной эффективностью. Допустим, 1.5, то есть каждые двое колхозников обеспечивают жратвой еще одного человека, занятого в другой области.
|
Даже при нынешнем уровне технологий, для обеспечения жратвой в условном колхозе может работать всего лишь 5% населения, которые обеспечивают едой все остальные 95%. Хайтек технологии (если у нас игра про будущее), в принципе, могут позволить и меньше людей на добычу жратвы кидать. Таким образом эффективность 1.5 (150% обеспечения) на человека - это если уже совсем со средневекового лоутека стартовать.
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
Последний раз редактировалось: Jerry Rezet (03:52 12-09-2011), всего редактировалось 4 раз(а) |
|
|
|
|
|
Канал Игры Мечты: «Механизм "живой" вселенной» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Самое большое чувство - это чувство абсолютного *пох*а! (void*)
|
» Механизм "живой" вселенной | страница 1 |
|