Полтергейст 37 Опубликовано 11 Января 2015 Пути по-любому (вообще) нужны - как-то ведь нужно хранить последовательности точек. Если от них отказаться, придётся делать альтернативу, в итоге получится то же самое по смыслу, и не факт, что вновь изобретённый велосипед будет лучше старого. Проблема не в самих путях, а в возможностях работы с ними - в движке нет штатной возможности создавать дополнительные пути из скриптов, чтобы потом обращаться к ним также, как к путям из all.spawn. Кроме этого, без путей невозможно перемещение в оффлайне. С другой стороны, полноценного перемещения по путям в оффлайне в движке тоже нет (если точнее, оно заблокировано) - можно послать кого-то в любую точку пути, но узнать, какая точка прописана следующей - нельзя. И раз уж начал об оффлайне, то по моему мнению, offline alife всё-таки нужен. Если жизнь будет останавливаться за пределами онлайн-радиуса, играть будет намного менее интересно. Думаю, что вместо переписывания заново лучше дополнить существующую реализацию - вместо имитации оффлайн-торговли (то есть, по сути - уничтожения лишнего лута) можно сделать, чтобы NPC не только брали что-то из тайников, но и клали туда излишки. Это помогло бы сильно упростить treasure_manager - так можно частично вырезать спавн вещей в тайник при нахождении информации о нём, а если ещё информацию выдавать только с тех NPC, которые реально туда что-то положили - это вообще отлично. Что до оффлайн-боёв - это тоже можно оставить и подправить. В оригинале NPC при выборе смарта не учитывают соотношение уже находящихся в нём дружественных/враждебных сил (а также просто находящихся поблизости), поэтому постоянно попадают в переделки. Ну а то, что они возле переходов между уровнями попадают в пробку и устраивают в ней побоище - это скорее проблема навигации между уровнями, чем offline alife. Увеличение количества переходов (доступных для NPC, а не только для игрока) частично решит эту проблему. Частично - потому что при наличии нескольких точек перехода с уровня A на уровень B повлиять на выбор точки перехода скриптами не так-то просто. 1 1 Поделиться этим сообщением Ссылка на сообщение
Полтергейст 37 Опубликовано 12 Января 2015 Либо в некоторых местах есть мясорубка (скрытая от игрока), либо мясорубки нет Оттого, что мясорубки не будет в оффлайне, она никуда не исчезнет. Она будет постоянно возобновляться при приближении игрока и прекращаться при его уходе на большое расстояние. От этого как раз и создаётся впечатление, что все вокруг "пляшут вокруг игрока" и совершают какие-либо действия только когда игрок рядом. Особенно сильно это заметно при частом респавне. Кроме тех способов разруливания этой ситуации, о которых я писал выше, можно ещё попытаться улучшить ведение игровой статистики и увеличить её влияние на поведение NPC. Например - собирать информацию о плотности населения в смартах, количестве "мясорубки" в каждом из них. На основании этих данных NPC могут сообразить, куда можно пойти, куда ходить опасно, а куда вообще никогда лучше не соваться. Опять же, здесь сильно мешают ограничения движка - нельзя штатным способом проверить вхождение в рестриктор в оффлайне, но при наличии нужных костылей или правок движка и это реализуемо. Что касается тайников - можно сделать так, чтобы NPC ничего не перекладывали без надобности. Чтобы либо брали и тащили с собой, если им это надо, или оставляли предмет в тайнике, если он им не нужен. Кроме этого можно попытаться сделать так, чтобы действия NPC с тайниками зависели от известной им информации о его предыдущем владельце (например - чтобы боялись обчищать неизвестно чьи тайники, что и игрока обезопасит от них). Поделиться этим сообщением Ссылка на сообщение
Полтергейст 37 Опубликовано 12 Января 2015 а по каким таким алгоритмам ты реализуешь нужные и не нужные НПС вещи? В примитивном виде это сделано в amk_offline_alife, но там просто задано неизменное ограничение на количество предметов. Если же эти ограничения сделать динамическими (например - в зависимости от количества еды и денег у NPC), может что-то и получится более-менее реалистичное. Если это ещё и будет влиять на выбор маршрута передвижения, будет ещё лучше. а что если делать возможным сохранится только возле своего схрона? Можно поступить проще - разрешить сохранение в любом месте, которое защищено от выброса, и при условии отсутствия врагов рядом. А что до тайников, тут надо подумать о том, каким должно быть отношение NPC к тому, чтобы украсть чужое. При этом оно должно быть одинаковым ко всем, включая игрока. Если всё общее и кто что хочет, тот и берёт - тогда игрок тоже сможет брать чужое, если нет - тогда и беспокоиться о сохранности вещей в людных местах не нужно. Можно сделать промежуточный вариант, чтобы была небольшая вероятность того, что кто-то незаметно для всех заберёт чужие вещички. И ещё добавить общие ящики, куда NPC будут складывать то, что им не очень нужно, но может понадобиться другим. Поделиться этим сообщением Ссылка на сообщение
Полтергейст 37 Опубликовано 13 Января 2015 Если только не сделать такой вариант, что если у него плохая репутация то его захотят застрелить Что-то подобное в движке уже сделано - отношения между NPC на заданную величину зависят от их репутации. Остаётся только добавить действия, которые позволят поднять репутацию (для снятия "чёрной метки"), кроме тех, что уже существуют. Игроку разумеется можно брать чужое А вот с этим можно поспорить. - по мне так лучше было бы или ухудшать игроку репутацию, или повышать цены при торговле, если он берёт чужое без спросу (особенно если знает, чьё оно), не оставляя взамен чего-нибудь сопоставимого по ценности. Разумеется, это не должно распространяться на вражеские тайники. Поделиться этим сообщением Ссылка на сообщение