RU

Текстовые игры жанров ужасы, мистика.

BIZIcool #699 09.11.2012 11:51 40 comments 23330 views

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

И вопрос, считается ли текстовая игра большого размера дурным тоном? Если в игре куча иллюстраций, есть музыкальное сопровождение, и сама игра расчитана на глубокий сюжет и длительное прохождение - и весит игра 10-20мб (имеется ввиду нелинейный сюжет+ возможность исследовать мир).

Edited at 09.11.2012 11:54 (13 years ago)

Для начала рекомендую все же написать игру, а потом уже мучиться вопросами оформления.

Nex:

Для начала рекомендую все же написать игру, а потом уже мучиться вопросами оформления.

Это да, я просто проверил возможные реализации идеи, что бы было на что расчитывать в будущем.

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

как на локации действию допустим “Поднять молоток” приписать, что бы молоток добавлялся в инвентарь, при повторном попадании на локацию молотка уже небыло

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

при нажатии на “молоток” в инвентаре всплывало сообщение, в котором бы выводилась краткая информация про молоток и изображение с ним.

В стартовой локации пишем

$ONOBJSEL = 'ONOBJSEL'
USEHTML = 1

Создаем локацию “ONOBJSEL”, в ней пишем

IF $SELOBJ = 'Топор':
    MSG '<img src=topor.png> Новый топор.'
ELSEIF $SELOBJ = 'Ботинок':
    MSG '<img src=botinok.png> Ботинок без шнурков.'
ELSEIF $SELOBJ = 'Молоток':
    MSG '<img src=molotok.png> Молоток.'
END
UNSEL

Большое спасибо. А как организовать одноразовые локации? То есть один раз её посетив у тебя больше не было возможности её посещать? Или выводилось сообщение о том, что она недоступна?
И ещё один вопрос по той же тематике, допустим ты переходишь с локации 1 на локацию 2, всё стандартно, снова возвращаешься на локацию 1, потом снова на локацию 2, но локация 2 уже изменена (там новое описание, список действий, но так что бы менялась только сама локация - первая локация осталось неизменной).

А как организовать одноразовые локации? То есть один раз её посетив у тебя больше не было возможности её посещать? Или выводилось сообщение о том, что она недоступна?

Делается точно так же, как и с однократным взятием предмета - пример в учебнике.

Для этого используется “флажок” - переменная, которой присваивается значение “1”. По умолчанию у любой переменной значение “0”. В нужный момент мы присваиваем ей значение “1”, а в том месте, где делается переход на локацию, делаем проверку.

Локация “Коридор”:

'Перед тобой дверь в кладовую.'
IF был_кладовая = 1:
    'Ты уже был там. Ничего интересного.'
ELSE
    'Может, стоит заглянуть туда?'
    ACT 'Войти в дверь':
        GOTO 'Кладовая'
    END
END

Локация “Кладовая”:

был_кладовая = 1
ACT 'Вернуться':
    GOTO 'Коридор'
END

Также см. FAQ: Как сделать действие, которое появляется при выполнении определенного условия?

допустим ты переходишь с локации 1 на локацию 2, всё стандартно, снова возвращаешься на локацию 1, потом снова на локацию 2, но локация 2 уже изменена (там новое описание, список действий, но так что бы менялась только сама локация - первая локация осталось неизменной).

Точно так же делается с помощью флажка, только проверка осуществляется на другой локации.

Локация “1”:

'Локация 1'
ACT 'Перейти на локацию 2':
    GOTO '2'
END

Локация “2”:

IF был_локация2 = 0:
    'Локация 2 - ты здесь впервые.'
    ACT 'Вернуться на локацию 1':
        GOTO '1'
    END
    был_локация2 = 1
ELSE
    'Локация 2 - ты здесь уже был. Внезапно ты замечаешь переход на локацию 3! Вот удача!'
    ACT 'Перейти на локацию 3':
        GOTO '3'
    END
END

Nex:

Для этого используется “флажок”

Я подозревал, что ко всему причастен “флажок”, но это и к лучшему, спасибо, буду пилить дальше.

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

Nex:

флажок и условия - базовая вещь для любой хорошей текстовой игры. Они используются повсеместно

Я заметил, без них можно создать только чисто линейную игру, а с ними хоть целую вселенную с квестами, боями и кучей всяких вкусностей.

Совсем тупой и кеповский вопрос, как при попытке перехода на определённую локацию вызвать сообщение? Ну допустим локация называется “активировать магический портал”, чтобы перейти в инвентаре должны быть “магический свиток” и “чешуя дракона”, если их нет, то выводится сообщение “Не выполнено условие”. И наоборот, что бы когда ты нашел “чешую дракона” и “магический свиток” всплыло сообщение, что мол “условие выполнено, в добрый путь”.

BIZIcool,
я недавно давал ссылку из FAQ: Как сделать действие, которое появляется при выполнении определенного условия?
См. второй пример, второй способ - “условие внутри действия”.

ACT 'Активировать магический портал':
    IF OBJ 'Магический свиток' AND OBJ 'Чешуя дракона':
        'Условие выполнено, в добрый путь.'
        CLA
        ACT 'Активировать!':
            GOTO 'Активация'
        END
    ELSE
        'Не выполнено условие.'
    END
END

=.= НЕ совсем правильно сформулировал вопрос, как делать соответсвия условиям я разобрался, мне больше интересно как сделать чтобы сообщение выводилось не просто в области игры, а всплывала отдельным окошечком. Я видел подобные исполнения в других играх, но они под поролем. И так, чтобы сообщение о возможной активации портала появлялось не просто при его попытке активации, а при самом выполнении условия, т.е. не важно в какой локации ты находишься выводится сообщение “Ты собрал всё необходимое для создания портала”. Некая напоминалочка, зачем мы собирали ингредиенты.

мне больше интересно как сделать чтобы сообщение выводилось не просто в области игры, а всплывала отдельным окошечком

Это делается с помощью оператора MSG. См. справку.

чтобы сообщение о возможной активации портала появлялось не просто при его попытке активации, а при самом выполнении условия, т.е. не важно в какой локации ты находишься выводится сообщение “Ты собрал всё необходимое для создания портала”. Некая напоминалочка, зачем мы собирали ингредиенты.

В стартовой локации пишем:

$ONOBJADD = 'ONOBJADD'

В локации “ONOBJADD” пишем:

IF OBJ 'Магический свиток' AND OBJ 'Чешуя дракона':
    MSG 'Условие выполнено, в добрый путь.'
ELSE
    MSG 'Не выполнено условие.'
END

Nex:

Это делается с помощью оператора MSG. См. справку.

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

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

Log in or Register to post comments.