А вообще настает смерть сингл играм. Сейчас приходит время онлайн игр и взаимоотношений игроков. Пока не будет искуственного интеллекта мечты о нелинейном сингле остануться мечтами...
Хотя постойте... У меня только что родилась идея. Реализовать сложно, но это будет чем-то очень специфическим. Идея такова: чтобы создать действительно нелинейную игру, необходимо думать так, как думали бы создатели большой многовариантной головоломки. Или как создатели шахмат, которые и сами не знают, сколько же вариантов решений может быть у их детища. Они думают над другим: как связать действие и последствия друг с другом.
Для этого надо создать большую сеть взаимосвязанных компонентов. Очень большую. Дело осложняется тем, что для текстовой игры каждый компонент надо прописывать (хотя при достаточно умелом применении скриптов можно и нужно сделать их самоизменяющимися) Где каждый компонент - отдельный квест, нпс или элемент мира. И с каждым из этих компонентов связано огромное количество факторов, присущих и другим квестам, нпсам, элементам. Решая квест тем или иным способом игрок меняет множество факторов, совершенно случайным для себя образом влияет на неявные счетчики и добивается некторого успеха, результата. Факторы, измененные игроком в процессе игры влияют на окружающий мир, слегка изменяя каждый его аспект. И соответсвенно условия решения и задания других квестов меняются в зависимости от факторов их вызвавших. Каждому квесту могут быть присущи требования и сила влияния на каждый из факторов при решении или провале квеста (что может считаться и в процентной велечине). Он запускается при соответсвии нескольких параметров заданным величинам, и тогда игрок может взяться за его выполнение. А результат решения конкретного квеста может как создать новую связь между компонентами, так и оборвать ее, изменив факторы влияния.
Таким образом мы создаем почти бесконечное количество решений. Главное - сделать факторы видимыми и существенными для игрока. Чтобы каждое отличие хотя бы одного фактора меняло бОльшую часть системы. Чобы при каждом новом прохождении игрок сталкивался бы с новыми ситуациями, так как создать туже ситуацию можно только при стечении множества обстоятельств (+можно же включить рандомники). Ситуации могут быть похожи на ту что игрок встречал раньше, но чем сильнее будет различие факторов, тем сильнее будут различаться условия квеста, задачи, цели, причины.
В общем... Это слишком гениально и сложно чтобы описать в общих словах.

Я еще сам не могу точно описатьвсе что хочу сказать... Это экспромт, писал чтобы самому не забыть... Пока вот попробую привести еще и пример:
в мире существуют факторы (самые простые примеры, их может быть ТОННА: преступность, погодные условия, население, культура, количество магов, количество денег у торговцев, вещей у игрока в кармане, его параметров, параметров случайно сгенерившегося НПСа...) которые влияют на компоненты мира: ассортимент товаров, количество воров в городе, магических аномалий, исследованных территорий, на установившиеся связи сежду городами/государствами/фракциями... всего чего угодно. В соответсвии с этим квесты изменяются (например если преступность низка то у НПСа украли только кошелек, а если нет - статуэтку и собаку

которые и предстоит разыскать игроку )или вовсе исчезают/появляются.
Прописаны лишь возможные ситуации, а их комбинации генерятся в зависимости от факторов
соответсвенно расположение украденных вещей и время кражи будут рандомны. также как и персонаж, подвергнувшийся краже т.е. практически полный рандом, исключая базовые диалоги.
а написать множество базовых диалогов - задача простая, главное много рук и голов. А их наполненность уже не так и влияет

Но все это реализовать ЧЕРТОВСКИ сложно по причине необходимости отладки логики возмодных ситуаций... но можно. Хотя бы на 100 элементов, где связанными являются до 10 компонентов. Получится такой тонель 10^N*100 элементов

Который приведет к концу игры. Хотя я могу ошибаться, сейчас просто идет активный мывслительный процесс, поэтому излагаю все подряд в той форме в которой все приходит в голову