admin / 09.10.2018

Как сделать текстовую игру

Загрузка

Как создать текстовую онлайн игру и через что можно ее создать?

Спрашивает egor stepanov21 янв. 2012
Люди подскажите как и через какую программу можно создать текстовую онлайн игру типо легенда наследие драконов
Создать текстовую игру Вы можете в Game Maker

Game Maker — один из самых известных конструкторов игр.
Создавать игры в нём достаточно просто, это не требует предварительного знакомства с каким либо из языков программирования.

Игра в GameMaker строится как набор игровых объектов, поведение которых задаётся путём программирования реакции на события. Программировать можно, используя графическое представление программ (близкое к блок-схемам) в режиме drag-n-drop. Например, для того чтобы начать условный оператор, нужно перетащить на панель действия восьмиугольник с иконкой, обозначающей тип проверки, а затем, возможно, ввести какие-либо значения в появившуюся форму. Имеется в нём и скриптовый язык GML похожий на JavaScript.

Рассчитан в основном он на создание двухмерных (2D) игр любых жанров. Также подойдёт для создания различных презентаций и т. п. Начиная с 6-й версии появилась ограниченная возможность работать с 3D. Может быть рекомендован для изучения программирования детьми.
Чтобы создать текстовую игру на ГМ, достаточно одного объекта, одной комнаты любых размеров и вот этих команд:
show_message('Привет!') — выводит на экран сообщение (в данном случае "Привет!").
команда=show_message_ext('','Да','','.') — выводит на экран сообщение с вариантами для выбора (максимум тремя). Вместо "команда" вписываем переменную и потом пользуемся ей для проверки варианта выбора. Пример:

otvet=show_message_ext('Хочешь поесть?','Да','Нет','Не знаю…')
if otvet=1 {show_message('Угощайся, друг!')}
if otvet=2 {show_message('Ну как хочешь.')}
if otvet=3 {show_message('Подумай как следует!')}

команда=get_integer('Вопрос',0 (это кол-во по умолчанию)) — выводит на экран строку, в которую игрок должен вписать число. "Команда" проверяет вписанное число. К примеру:

zub_number=32
zub=get_integer('Сколько зубов тебе выбить?',0)
zub_number-=zub

команда=get_string('Вопрос','' (это вписанное по умолчанию)) — выводит на экран строку, в которую игрок должен вписать любые символы. "Команда" проверяет вписанное. К примеру:

name=get_string('Как вас зовут?','Безымянный')
show_message('Что ж, привет, '+string(name))

Также может пригодиться:
команда=show_menu('',0) — выводит список возможных вариантов (разделяются символом |). Команда — выбранный вариант. В отличии от show_message_ext, начинается с нуля! К примеру:
show_message('Выбери оружие!')
otvet=show_menu('Пистолет|АК|Дробовик',0)
if otvet=0 {oruzhie='Пистолет'}
if otvet=0 {oruzhie='АК'}
if otvet=0 {oruzhie='Дробовик'}

И, наконец, вот команды для окраски вашей текстовой игры:
message_button(спрайт) — кнопка ответа теперь — ваш спрайт
message_size(width,height) — ваш размер окна (стандартный размер — 400 на 300)
message_background(фон) — фон окна меняется на ваш.

Надеюсь, этот урок поможет вам в создании текстовой игры. Желаю удачи!

What is Ren’Py?

Ren’Py is a visual novel engine – used by thousands of creators from around the world – that helps you use words, images, and sounds to tell interactive stories that run on computers and mobile devices. These can be both visual novels and life simulation games. The easy to learn script language allows anyone to efficiently write large visual novels, while its Python scripting is enough for complex simulation games.

Ren’Py is open source and free for commercial use.

Why Ren’Py?

Where does it run?

Where do I get it?

Who is it sponsored by?

To ask questions that aren’t appropriate for a public forum, or to find a speaker for your visual novel-related conference or con, please contact us via email.

The latest version of Ren’Py is 7.0 «For all mankind.», released on June 01, 2018.

How do I keep in touch?

The best places to ask questions about Ren’Py are the Lemma Soft Forums, the Ren’Py Discord, and the #renpy IRC channel.

We make news about Ren’Py available on a number of social platforms:

Twitter: You can follow Ren’Py’s lead developer @renpytom for release announcements, development news, and general commentary on life.

Создание текстовых игр — есть ли простые инструменты?

Facebook: We announce new releases on our Facebook page.

Featured Games

Ren’Py has been used to create over 1,500 visual novels, games, and other works. You can find them at the official Ren’Py Games List, and the list of Games made with Ren’Py on itch.io.

Here are just a few of the games made with Ren’Py.

RenPy.

Создание текстовой игры

Урок 1. Базовые команды

от BPS
Прочее   renpy

Автор: lolbot

Курс посвящен не столько Ren'Py вообще, сколько моддингу everlasting_summer-1.2. Однако данные знания будут полезны и при создании игр на данном движке.

Целевая аудитория: желающие попробовать себя на роль сценариста и/или редактора.

Требуемые навыки: уметь редактировать текстовые файлы, обладать зачатками разума.

Что нам понадобится?Текстовый редактор, поддерживающий:
— Unicode, в частности UTF-8
UTF-8 — многобайтная кодировка, стандарт юникода de facto. Русские символы кодируются 2 байтами, что хорошо видно ниже.

Если поддержки нет, вы скорее всего увидите что-то такое:
 
— Как CR/LF, так и Unix end of line
В разных ОС разные традиции кодирования переноса строк. В DOS и Windows используются 2 байта — CR и LF, в Linux — 1 байт LF.

Если поддержки нет, вы скорее всего увидите что-то такое:
 
— (желательно) замену табуляции на 4 пробела
Под Windows я использую AkelPad, под Linux — Kate

Как грузится Ren'Py?1. Компилирует все файлы *.rpy в папке /game/. Результат = *.rpyc-файлы
2. Загружает все *.rpyc-файлы из папки /game/
Вывод: если подложить .rpy-файл в любое место в папке /game/, то он подгрузится
Кстати, имя файла ни на что не влияет.

Структура rpy-файла- Текстовый, человекочитаемый файл
— 1 команда = 1 непустая строка файла
— Исключение — блоки
— Блок имеет команду-шапку на первой строке.
— А также команды-строки, входящие в него
— Которые тоже могут быть блоками
— Вложенные команды — на 4 пробела правее

Базовые команды label, jump и returnlabel <метка> — единственный в этом уроке блок
Команды внутри него выполняются сверху вниз
jump <метка> — переход к 1-й команде соответствующего блока
return — возврат к главному меню игры.

Базовые команды: описания и реплики"Вот так оформляется текст от имени автора"
th "Вот так оформляются мысли Семёна, те самые, которые с ~ по краям"
me "Реплика вслух от имени Семёна"

ОСТОРОЖНО: длинная строка не поместится в отведенную в игре рамочку.

Формат имя "Текст"

un — Лена (Уныл-тян)
dv — Алиса (Двач-тян)
us — Ульяна (CCCР-тян)
sl — Славя
mi — Мику
uv — Юля (ЮВАО-тян)
el — Электроник
sh — Шурик
mz — Женя (Мицгёл)
mt — Ольга Дмитриевна (Мод-тян)
cs — Виола (Коллайдер-сама)
pi — Пионер

Эпизодические говорящие:
all — Пионеры
voice — Голос
voices — Голоса
dreamgirl — …
kids — Малышня
lk — Луркмор-кун
dy — Голос из динамика
message — Сообщение
odn — Одногруппникscene <фон> — очистить сцену и показать фон
Список фонов
show <персонаж> <спрайт> — показать спрайт
Список спрайтов
hide <персонаж> — скрыть персонажа. При смене фона hide можно не делать, scene скроет их.

play music <музыка> — начать играть музыку.
Список музыки
stop music — прекратить играть музыку.

# <коммент> — такие строки Ren'Py игнорирует
Пустые строки не влияют на выполнение кода, просто делают его понятнее визуально.

label test:
    рlау music music list["sunny_day"]
    scene ext_house_of_mt_day
    "Я вышел из домика с намерением прогуляться."
    th "Интересно, разгадаю ли я загадку этого лагеря сегодня?"
    # Как бы ни так, ололол
    show mt rаge pioneer
    mt "Так, ты почему не был на линейке?"
    jump test2

Возможные ошибки
Tab characters are not allowed in Ren'Py scripts. — где-то табуляция вместо пробелов.
is not terminated with a newline. (Check strings and parenthesis.) — не закрыта кавычка
intendation mismatch — проверьте, всегда ли отступаете по 4 пробела
expexted statement — неправильная команда
При передаче show/scene необъяленного изображения предупреждение возникнет лишь во время игры. Сверху появится надпись "Undefined images" и имя изображения.

При попытке передать play неправильную музыку, ошибка возникнет во время игры. Игра упадет с ошибкой KeyError: '<музыка>'


$регистрация модификации
Для того, чтобы появилась возможность запуска модификаций, нужно зарегистрировать ваш мод. Вставляем следующий код в начало rpy-файла:
init:
    $ mods ["<ник>__<название_метки_перехода>"] = u"<Название мода>"

Для запуска нужно перейти в меню "Моды и сценарии" и выбрать <Название мода>, после чего произойдет переход к метке <название_метки_перехода>.
Например:
init:
    $ mods ["student1__lesson2_task1"] = u"Сцена 1"
label student1__lesson2_task1:

Обратите внимание, ник нужно отсекать ДВУМЯ подчеркиваниями __

.rpy с заданиями сохраняем в %gamedir%\game

Подсистема для их запуска
— Версия 1.1: требуется скачать и установить мод-пак.

Далее: Новая игра -> Моды и пользовательские сценарии
— Версия 1.2: modloader встроен в игру. Настройки -> Моды и пользовательские сценарии


1. «Гуманитарная помощь»
Юичка не умеет писать гру-скрипты и прислала сценарий в виде txt-файла.
Задача: реализовать в кодё всё её фантазии, описанные в lesson1_task1.txt. Результатом должен быть rpy-файл, начинающийся с метки lesson1_task1
2. «Пьяный сценарист»

Повышенная концентрация этилового спирта в крови Мугички, иногда вызывает у неё приступы дислексии. Иногда после её изменений игра перестаёт работать.
Задача: поправить ошибки в lesson1_task2.rpy. Результатом должен быть гру-файл, начинающийся с метки lesson1_task2
3. «Вот здесь я и живу»

Вы — Азунян. Напишите что-нибудь интересное!
Примерная тема: одна из девочек решила пригласить Семёна посмотреть на свою комнату.
Задача: результатом должен быть гру-файл, начинающийся с метки lesson1_task3
Минимальный размер файла: 50 строк.


  © aNNiMON (Melnik Software)
Онлайн: 31 (3/28)
 

RenPy. Урок 1. Базовые команды

от BPS
Прочее   renpy

Автор: lolbot

Курс посвящен не столько Ren'Py вообще, сколько моддингу everlasting_summer-1.2. Однако данные знания будут полезны и при создании игр на данном движке.

Целевая аудитория: желающие попробовать себя на роль сценариста и/или редактора.

Требуемые навыки: уметь редактировать текстовые файлы, обладать зачатками разума.

Что нам понадобится?Текстовый редактор, поддерживающий:
— Unicode, в частности UTF-8
UTF-8 — многобайтная кодировка, стандарт юникода de facto. Русские символы кодируются 2 байтами, что хорошо видно ниже.

Если поддержки нет, вы скорее всего увидите что-то такое:
 
— Как CR/LF, так и Unix end of line
В разных ОС разные традиции кодирования переноса строк. В DOS и Windows используются 2 байта — CR и LF, в Linux — 1 байт LF.

Если поддержки нет, вы скорее всего увидите что-то такое:
 
— (желательно) замену табуляции на 4 пробела
Под Windows я использую AkelPad, под Linux — Kate

Как грузится Ren'Py?1. Компилирует все файлы *.rpy в папке /game/. Результат = *.rpyc-файлы
2. Загружает все *.rpyc-файлы из папки /game/
Вывод: если подложить .rpy-файл в любое место в папке /game/, то он подгрузится
Кстати, имя файла ни на что не влияет.

Структура rpy-файла- Текстовый, человекочитаемый файл
— 1 команда = 1 непустая строка файла
— Исключение — блоки
— Блок имеет команду-шапку на первой строке.
— А также команды-строки, входящие в него
— Которые тоже могут быть блоками
— Вложенные команды — на 4 пробела правее

Базовые команды label, jump и returnlabel <метка> — единственный в этом уроке блок
Команды внутри него выполняются сверху вниз
jump <метка> — переход к 1-й команде соответствующего блока
return — возврат к главному меню игры.

Базовые команды: описания и реплики"Вот так оформляется текст от имени автора"
th "Вот так оформляются мысли Семёна, те самые, которые с ~ по краям"
me "Реплика вслух от имени Семёна"

ОСТОРОЖНО: длинная строка не поместится в отведенную в игре рамочку.

Формат имя "Текст"

un — Лена (Уныл-тян)
dv — Алиса (Двач-тян)
us — Ульяна (CCCР-тян)
sl — Славя
mi — Мику
uv — Юля (ЮВАО-тян)
el — Электроник
sh — Шурик
mz — Женя (Мицгёл)
mt — Ольга Дмитриевна (Мод-тян)
cs — Виола (Коллайдер-сама)
pi — Пионер

Эпизодические говорящие:
all — Пионеры
voice — Голос
voices — Голоса
dreamgirl — …
kids — Малышня
lk — Луркмор-кун
dy — Голос из динамика
message — Сообщение
odn — Одногруппникscene <фон> — очистить сцену и показать фон
Список фонов
show <персонаж> <спрайт> — показать спрайт
Список спрайтов
hide <персонаж> — скрыть персонажа. При смене фона hide можно не делать, scene скроет их.

play music <музыка> — начать играть музыку.
Список музыки
stop music — прекратить играть музыку.

# <коммент> — такие строки Ren'Py игнорирует
Пустые строки не влияют на выполнение кода, просто делают его понятнее визуально.

label test:
    рlау music music list["sunny_day"]
    scene ext_house_of_mt_day
    "Я вышел из домика с намерением прогуляться."
    th "Интересно, разгадаю ли я загадку этого лагеря сегодня?"
    # Как бы ни так, ололол
    show mt rаge pioneer
    mt "Так, ты почему не был на линейке?"
    jump test2

Возможные ошибки
Tab characters are not allowed in Ren'Py scripts.

— где-то табуляция вместо пробелов.
is not terminated with a newline.

Как создать игру на Андроид с нуля — осваиваем азы гейм девелопмента

(Check strings and parenthesis.) — не закрыта кавычка
intendation mismatch — проверьте, всегда ли отступаете по 4 пробела
expexted statement — неправильная команда
При передаче show/scene необъяленного изображения предупреждение возникнет лишь во время игры. Сверху появится надпись "Undefined images" и имя изображения.

При попытке передать play неправильную музыку, ошибка возникнет во время игры. Игра упадет с ошибкой KeyError: '<музыка>'


$регистрация модификации
Для того, чтобы появилась возможность запуска модификаций, нужно зарегистрировать ваш мод. Вставляем следующий код в начало rpy-файла:
init:
    $ mods ["<ник>__<название_метки_перехода>"] = u"<Название мода>"

Для запуска нужно перейти в меню "Моды и сценарии" и выбрать <Название мода>, после чего произойдет переход к метке <название_метки_перехода>.
Например:
init:
    $ mods ["student1__lesson2_task1"] = u"Сцена 1"
label student1__lesson2_task1:

Обратите внимание, ник нужно отсекать ДВУМЯ подчеркиваниями __

.rpy с заданиями сохраняем в %gamedir%\game

Подсистема для их запуска
— Версия 1.1: требуется скачать и установить мод-пак. Далее: Новая игра -> Моды и пользовательские сценарии
— Версия 1.2: modloader встроен в игру. Настройки -> Моды и пользовательские сценарии


1. «Гуманитарная помощь»
Юичка не умеет писать гру-скрипты и прислала сценарий в виде txt-файла.
Задача: реализовать в кодё всё её фантазии, описанные в lesson1_task1.txt. Результатом должен быть rpy-файл, начинающийся с метки lesson1_task1
2. «Пьяный сценарист»

Повышенная концентрация этилового спирта в крови Мугички, иногда вызывает у неё приступы дислексии. Иногда после её изменений игра перестаёт работать.
Задача: поправить ошибки в lesson1_task2.rpy. Результатом должен быть гру-файл, начинающийся с метки lesson1_task2
3. «Вот здесь я и живу»

Вы — Азунян. Напишите что-нибудь интересное!
Примерная тема: одна из девочек решила пригласить Семёна посмотреть на свою комнату.
Задача: результатом должен быть гру-файл, начинающийся с метки lesson1_task3
Минимальный размер файла: 50 строк.


  © aNNiMON (Melnik Software)
Онлайн: 34 (3/31)
 

Создание визуальных новелл далеко не такое сложное дело, как может показаться. И поможет нам в этом деле движок RenPy: http://renpy.org. С одной стороны, движок простой и будет понятен даже для начинающих. С другой стороны, движок достаточно мощный и позволяет создавать реально крутые игры. Для начала движок нужно скачать и установить. Ничего сложного в этом процессе нет, все настройки по умолчанию хороши. Вот так выглядит главное окно RenPy:

Слева список проектов, справа опции активного проекта (в списке проектов выделен синим). Чтобы создать свою игру нужно кликнуть “Добавить новый проект” под списком проектов. Далее движок задаст несколько простых вопросов. Помните, имя игры должно быть на английском языке.

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

Apero: создание текстовых игр-квестов

Мне нравятся тёмные цветовые схемы для написания текстов, так что тема Dessert меня просто спасает. Вот как выглядит Editra после некоторой настройки у меня:

По коду тут тоже всё достаточно просто. В строке 7 определяем персонажа с именем “Эйлин”, имя которого будет писаться текстом цвета #c8ffc8 (цвета можно взять в любом графическом редакторе, например, GIMP или Photoshop). Для краткости написания персонаж назначен на короткое имя “e”. В 13 и 15 строке буквально написано: персонаж “e”(Эйлин) говорит на экране то, что указано в кавычках. Строки, начинающиеся со знака решётки (#) являются комментариями разработчика и на ход выполнения не влияют.

Сделаем немного графики для игры. По умолчанию разрешение нашей игры 800х600. Эту настройку можно поменять в файле options.rpy, но для первой игры такое разрешение оптимально. Поэтому нужно создать в Comipo панель размером 800х600. При изменении размера с помощью перетаскивания мышью возле панели пишется, какого она размера:

Пускай в игре мы хотим воссоздать вот такую сценку:

Экспортируем слои по одному. Начинаем с фонового изображения, подбираем чтобы высота была примерно 600, ширина 800. Подробнее для начинающих это описано в уроке про экспорт. Остальные слои экспортируем с теми же настройками. Вот так у меня выглядит экспортированный слой с рыцарем:

Для начала представим себе сюжет новеллы. Я вижу новеллу примерно так (левый клик работает):

А вот так выглядит код для RenPy:

Код создания персонажей уже был рассмотрен. Здесь мы в строках 1 и 5 создаём новых персонажей: m и dex. Нововведением являются состояния персонажа и картинки для каждого состояния. Например, для персонажа m задано состояние oho, ему соответствует картинка Mala-o.png (строка 2).

Игра начинает выполнение с метки label start: (11 строка). Далее показываем, что сначала у нас всё будет происходить на чёрном экране (scene black). Строки 13 и 14 — просто текст, который будет показан на экране. Модификатор with показывает модификатор (анимацию), с которым будет отображаться данный объект. Анимаций много, применяться могут чуть ли не к чему угодно.

Строка 16: show dex norm at left with dissolve. Читается так: показать персонажа dex в состоянии norm, слева, с анимацией плавного появления. Строка 17 — также просто отображение текста, но так как перед текстом у нас есть имя персонажа, то оно тоже будет отображено.

Строки 23 и 24 — анимация обмена мест Мали и Дэкса. В этих строках используется команда show, но так как персонаж уже есть на экране, то к нему просто будет применена анимация.

По сути — всё, наша первая игра готова. Она имеет небольшой исходный код, не очень сложна для понимания. Здесь кроется ещё одна хитрость в изучении RenPy — изучать его надо постепенно, по одной добавляя новые фишки, и смотря как они влияют. Хорошим подспорьем является Руководство для начинающих. Ещё много полезных ссылок можно найти в русской Wiki проекта.

Удачи при создании игр!

Вернуться к урокам по Comipo

Теги материала : Для начинающих

  • screen view_test:

  •     hbox:

  •         spacing 30# Расстояние, между баром и боксом.

  •         xsize 800# Размер, дабы не растекалось по всему экрану.

  •         ysize 600

  •         align (.5,.5)# Центруем

  •         viewport id"view_id123": # Вьюпорт обязательно с id, дабы можно было прицепить к нему бар.

  •             xfill False

  •             yfill False

  •             mousewheel True# Разрешаем прокрутку мышью.

  •             vbox:

  •                 for i inxrange(50): # Помещаем нужные нам объекты.

  •                     textbutton "Кнопка %d"%i

  •         vbar value YScrollValue("view_id123")# Бар, как второй элемент hbox-а.

  • label start:

  •     call screen view_test

  • FILED UNDER : IT

    Submit a Comment

    Must be required * marked fields.

    :*
    :*