LINUX.ORG.RU
ФорумTalks

[бред?] Солиптическая(?) «Цивилизация»


0

0

Навеяно темой про "Цивилизацию".

(Вступление. Кого пугает обилие букв, переходите к следующему абзацу.) Все известные мне стратегические игры, где требуется открывать случайную карту, устроены в этом отношении одинаково. Генерируется карта, по ней разбрасываются клады и ловушки, расставляются игроки. В процессе игры и игрок-человек (в сетевой игре — не один), и управляемые компьютером привязаны к той местности, куда их забросило в начале, хоть и не видят, где находятся. Можно проиграть сколько-то ходов, открыть часть карты, потом вернуться к старой игре, снова открыть часть карты, и она будет та же. Если где-то увидеть город противника, вернуться на ход после его основания, снова пройти к нему — тот же город будет там же. Скорее всего, с тем же населением и постройками — если у компьютерных игроков есть хоть какой-то искусственный интеллект, а не полный рэндом. Даже если вернуться до основания города, если компьютер ориентировался на ту же карту и не было случайных событий (деревень, варваров, столкновений с соседями, землетрясений/пожаров/пиратов), результат, скорее всего, будет близким.

А что если от этого отказаться? Пускай элемент карты генерируется в момент его открытия. Сделал шаг — открыл море. Перезагрузился, повторил шаг — на месте моря — болото. Разумеется, вероятность получить болото или море определяется соседними квадратами и площадями болот и морей, заданными для карты.

В таком случае для игроков задаются только координаты, а какие земли лежат между их точками старта — неизвестно. Можно пойти дальше и задать каждому игроку только расстояния до полюсов (которые определяют климат). И на каждом шаге смотреть пересеклись ли их осмотренные территории (вероятность возрастает с увеличением открытой площади).

Следующий шаг — вообще не генерировать заранее карты для компьютерных игроков. Пусть будут какие-то обобщённые статистические показатели: население, число городов, длина дорог, количество библиотек, вероятность осмотра деревень при их нахождении вблизи города N лет... И генерировать всё в рамках показателей по мере осмотра карты игроком-человеком.

Результат? С одной стороны, становится невозможен чит, открывающий всю карту. Нельзя и посмотреть карту в файле сохранённой игры. С другой стороны, можно перезагрузками добиваться желаемой карты. Можно получить при старте хорошую местность (скажем, 3 коровы) и многократно переигрывать эту игру, оказываясь каждый раз в другом мире.

Смысл в этом? Кому-то эта задачка будет интересна.

Пробовал ли кто-нибудь когда-нибудь создать подобную игру? Приходилось ли вам с такой игрой сталкиваться?

★★★★★
Ответ на: комментарий от DonkeyHot

> Интересно было бы варить их в независимых системах координат, и определять взаимное расположение "при встрече".

Именно.

> Только не понятно как определить факт таковой :).

Простейший случай: карта в форме тора, нет ни экватора, ни полюсов, у каждого игрока выпуклая территория. При каждом шаге вероятность попасть на карту другого игрока равна (площадь карты другого игрока)/(площадь всей неизвестной первому карты). Если невыпуклая — дополнить до выпуклой.

Если как в Цивилизации карта — цилиндр, и заранее заданы расстояния до полюсов, то число взаимных расположений 2 игроков получается равно ширине карты. По мере освоения число вариантов будет сокращаться, пока не выпадет пересечение.

>> перезагрузками добиваться желаемой карты

> Это легко решается: генератор "псевдослучайных" чисел, "затравливающийся" действиями игроков. Т.е. сходил так же -- та же карта, по другому - другая. В результате перебор потребует смены "стратегии", т.ч. не-cheating.

Так сделано, например, в 3-ей "Цивилизации". И гораздо топорнее — в "Колонизации". Лично мне такой подход не нравится :)

question4 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Во Вселенной Frontier были десятки тысяч (если не сотни тысяч - не думаю, что кто-то считал или расшифровывал код) звёзд в каждой галактике. У каждой звезды в среднем под десяток планет. У планет - спутники...

У каждого небесного тела были свои уникальные параметры. Начиная от орбитальных данных, кончая составом атмосферы и уникальным именем.
>на ранних 286-х машинах с мегабайтом памяти :)

Я, кстати, задаюсь вопросом, если всё то же самое написать на java, то можно ли будет это запустить на 286?

darkshvein ☆☆
()
Ответ на: комментарий от darkshvein

>> Frontier ... на ранних 286-х машинах с мегабайтом памяти :)

> Я, кстати, задаюсь вопросом, если всё то же самое написать на java, то можно ли будет это запустить на 286?

А чем компилировать джаву под 286?

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

>Лично мне такой подход не нравится

А вот почему? Есть другой способ анулировать магический save/load?

DonkeyHot ★★★★★
()
Ответ на: комментарий от darkshvein

>>А чем компилировать джаву под 286?

> Во первых было слово "если".

Понятно.

> А во вторых это та же самая архитектура x86

Есть 386 и есть всё, что было до него. Разница огромная. Тот же линукс для полноценной работы требует не ниже i386. Поиск в гугле не дал для разных вариантов «java 286» ничего интересного.

question4 ★★★★★
() автор топика
Ответ на: комментарий от darkshvein

> Неужели у 286 процессора есть такие супер инструкции, которых нет у core quad?

Как раз наоборот, у него нет очень полезных инструкций. Например, аппаратной поддержки многозадачности.

question4 ★★★★★
() автор топика

Триста лет в Цивилизации галочка имеется "генерировать случайное семя карты", что дает при каждой перезагрузке абсолютно другую карту. Ну, в рамках внешних условий. А насчет тупого интеллекта...Когда на меня варварские гренадеры полезли, я как-то засомневался.

heilnull ★★
()
Ответ на: комментарий от delilen

>так все это круто конечно, но ты представляешь себе сколько это будет жрать ресурсов? А теперь подумай что стоит у среднестатистического хоумюзера..

У хоумюзера, статистически, двусполовинойядерный проц и игровая видяха. И памяти более 2гб. Хватит на Марс слетать, приближенное Оппенгеймера посчитать за неделю и все в фоновом режиме. Задачи расчета какого-то там случайного моделирования карты из двух десятков условий - фигня.

heilnull ★★
()
Ответ на: комментарий от heilnull

> "генерировать случайное семя карты"

"Generate random seed on reload"? Разве оно меняет неоткрытую карту или даже расположение ресурсов?

> А насчет тупого интеллекта... Когда на меня варварские гренадеры полезли, я как-то засомневался.

А они как-то согласовано действовали? Или как обычно случайно блуждали, атакуя ближайшего противника? Само появление варваров-гренадёров означает, что где-то на планете есть цивилизация, способная строить гренадёров или вплотную подошедшая к этому открытию. И всё. На высоких уровнях большая скорость развития науки у компьютерных противников объясняется бонусами. У них всё стоит на 20-30% дешевле.

question4 ★★★★★
() автор топика

интересней было бы, если карта менялась во время игры, в невидимых игроку областях. было болото, вернулся -- а там уже горы.

timth ★☆
()
Ответ на: комментарий от question4

Я играл на Terra, и довольно поздно полез в Америку. А там не было компьютерного игрока, но было два варваских города. Они хорошо развились. Когда я построил свой город в Америке (где-то 1800гг), они полезли сначла Булавоносцами, потом, лет через 50, гренадерами. В одном из варварских городов был построен "Колосс Родосский". Меня это убило насмерть.

heilnull ★★
()
Ответ на: комментарий от timth

> интересней было бы, если карта менялась во время игры, в невидимых игроку областях. было болото, вернулся -- а там уже горы.

Есть же игры с "туманом войны" и разрушаемым ландшафтом?

question4 ★★★★★
() автор топика
Ответ на: комментарий от heilnull

> В одном из варварских городов был построен "Колосс Родосский". Меня это убило насмерть.

Город был изначально варварский, или его отбили у какой-то из цивилизаций? Может Колосса построили раньше? Если нет, то это означает, что город удачно расположен, и там с начала игры что-нибудь строили. Про сниженные цены я уже говорил.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

>Есть же игры с "туманом войны" и разрушаемым ландшафтом?

с рандомно изменяющимся при покидании территории не видел

timth ★☆
()
Ответ на: комментарий от timth

> с рандомно изменяющимся при покидании территории не видел

X-COM. На первом ходу осмотрел сарай и пошёл дальше. Через 5 ходов возвращаюсь — дымящаяся воронка. Судя по трупам, сектоид промахнулся, кидая гранату :)

Ещё в "цивилизациях" есть заболачивание при парниковом эффекте (сам ни разу не видел).

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

Ещё была какая-то игра (только видел описание), где играешь за бога. И можно поднимать-опускать местность, на которой живёт твой народ и вражеский народ. И вражеский бог занят тем же. Как-то так.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

>Спасибо, но я слышал про гораздо более старую

«The Realms», вроде. Т.е. «Realms» в названии точно было. Первая RTS, ещё задолго до Dune 2. Но на oldgames/dosgames не нашёл такую. Точно не «Lord of Realms» и не «Realms of Arcania» :)

KRoN73 ★★★★★
()
Ответ на: комментарий от question4

>Скорее всего, я имел в виду Populous

Мля! Точно, он! Переклинило меня с названием :)

KRoN73 ★★★★★
()
9 июля 2009 г.

На gamedev.ru подсказали, что подобная генерация карты блоками "на лету" используется в игре “Wiggles”. (Она же “Diggles: The Myth of Fenris”, она же «Гномы»). Нашёл, попробовал. Насколько я понял из 1-ой части, благодаря такому подходу найти определённые ключевые пещеры можно только после выполнения соответствующих квестов. Но это требует потенциально бесконечной карты (не проблема, но невозможно в "Цивилизации", где размер планеты задан заранее).

Границы карты раздвигаются, и новые блоки генерируются, когда гном получает задание прокопать туннель в ещё не созданной области. Размеры блоков составляют, на первый взгляд, от пары десятков до пары сотен клеток. Между генерацией карты и её открытием могут пройти несколько часов реального времени, что затрудняет создание идеальной карты через save-load. Зато очень удобно вернуться к моменту, когда уже пройден какой-то муторный этап, и переиграть на сильно отличающейся карте.

Игра в целом скорее не понравилась из-за непродуманного и неудобного интерфейса: например, автоперемотке списка гномов в начало на каждый чих, невозможности менять скорость хода времени, часто всплывающей необходимостью микроуправления. Но это — недостатки реализации конкретной программы, либо жанра стратегии с непрямым управлением. Преодолимые.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.