Навеяно темой про "Цивилизацию".
(Вступление. Кого пугает обилие букв, переходите к следующему абзацу.) Все известные мне стратегические игры, где требуется открывать случайную карту, устроены в этом отношении одинаково. Генерируется карта, по ней разбрасываются клады и ловушки, расставляются игроки. В процессе игры и игрок-человек (в сетевой игре — не один), и управляемые компьютером привязаны к той местности, куда их забросило в начале, хоть и не видят, где находятся. Можно проиграть сколько-то ходов, открыть часть карты, потом вернуться к старой игре, снова открыть часть карты, и она будет та же. Если где-то увидеть город противника, вернуться на ход после его основания, снова пройти к нему — тот же город будет там же. Скорее всего, с тем же населением и постройками — если у компьютерных игроков есть хоть какой-то искусственный интеллект, а не полный рэндом. Даже если вернуться до основания города, если компьютер ориентировался на ту же карту и не было случайных событий (деревень, варваров, столкновений с соседями, землетрясений/пожаров/пиратов), результат, скорее всего, будет близким.
А что если от этого отказаться? Пускай элемент карты генерируется в момент его открытия. Сделал шаг — открыл море. Перезагрузился, повторил шаг — на месте моря — болото. Разумеется, вероятность получить болото или море определяется соседними квадратами и площадями болот и морей, заданными для карты.
В таком случае для игроков задаются только координаты, а какие земли лежат между их точками старта — неизвестно. Можно пойти дальше и задать каждому игроку только расстояния до полюсов (которые определяют климат). И на каждом шаге смотреть пересеклись ли их осмотренные территории (вероятность возрастает с увеличением открытой площади).
Следующий шаг — вообще не генерировать заранее карты для компьютерных игроков. Пусть будут какие-то обобщённые статистические показатели: население, число городов, длина дорог, количество библиотек, вероятность осмотра деревень при их нахождении вблизи города N лет... И генерировать всё в рамках показателей по мере осмотра карты игроком-человеком.
Результат? С одной стороны, становится невозможен чит, открывающий всю карту. Нельзя и посмотреть карту в файле сохранённой игры. С другой стороны, можно перезагрузками добиваться желаемой карты. Можно получить при старте хорошую местность (скажем, 3 коровы) и многократно переигрывать эту игру, оказываясь каждый раз в другом мире.
Смысл в этом? Кому-то эта задачка будет интересна.
Пробовал ли кто-нибудь когда-нибудь создать подобную игру? Приходилось ли вам с такой игрой сталкиваться?