4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как написать текстовую онлайн игру

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

Бен Сервисс (Ben Serviss), программист, геймдизайнер и игровой продюсер из Нью-Йорка, в своем блоге описал этапы создания текстовой игры. Мы с его разрешения перевели текст и делимся им с вами.

Сочинять тексты — сложно. Сочинять тексты для интерактивной игры со множеством вариантов ответов — еще сложнее.

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

Скажем, у вас есть описание текстовой игры. Вы знаете, о чем она, кто главные персонажи, какие основные события происходят в каждой главе и что за способности есть у игрока. Все составные части игры у вас на руках. Время начать писать — но вы в ступоре. Как написать историю, в которой может случиться что угодно? С чего вообще начать?

Я недавно выпустил свою первую полноценную текстовую игру для Choice of Games под названием The Last Monster Master (в ней примерно 250 000 (!) слов). В процессе я пришел к определенным базовым схемам, — они помогли написать игру глава за главой. Я использовал отличный (и бесплатный) Chat Mapper, чтобы создать каждую нелинейную главу. Затем я перевел окончательный вариант текста в ChoiceScript, собственный язык программирования Choice of Games, удобный для создания текстовых игр.

Скриншот из игры The Last Monster Master

Я упростил процесс, разбив работу над каждой главой на шесть этапов. В Chat Mapper есть очень удобная функция — она позволяет присваивать свой цвет каждому текстовому блоку. Я использовал эту фичу, чтобы отслеживать ключевые моменты работы с текстом, — изменял цвет каждый раз, как заканчивал этап (это можно увидеть на приведенных ниже скриншотах)

Этап 1. Текстовые заготовки (без цветового маркера)

Статья в тему:  Как сделать доту 1 на русском

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

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

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

В приведенной ниже схеме из The Last Monster Master один из монстров игрока застрял в дереве во время атаки. Игрок может использовать телепатию или навык чтения языка тела, чтобы помочь монстру отразить атаку, или подбежать и помочь напрямую.

Этап 2. Ревизия текстовых заготовок (цвет — желтый)

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

Статья в тему:  Можно ли продать сундуки в доте 2

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

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

Этап 3. Текст в первом приближении (цвет — оранжевый)

Теперь, когда структура игры улучшена и реорганизована, можно наконец-то заняться тем самым текстом, который увидит игрок. Этот этап — не особенно сложный, но и тут важно не терять из вида конечную цель.

Не заботьтесь о том, что не имеет отношения непосредственно к тексту. На этом этапе вас не должны волновать варианты выбора, структура этапов и так далее. Именно эта часть самая интересная — и она же отнимает больше всего времени.

Этап 4. Проверка текста (цвет — фиолетовый)

Выжили после того, как написали целую главу? Отлично! Дальше все пойдет быстрее. Включаем режим беспощадного редактора.

Прочитайте написанный вами текст. Будьте безжалостны. Проверьте все, что относится к тесту — грамматику, пунктуацию, будьте точны в выборе слов, описании персонажей или мест и так далее. Повторюсь: сосредоточьтесь на тексте. Заставьте его зазвучать.

Этап 5. Варианты (цвет — голубой)

Со структурой разобрались, текст выглядит пристойно. Теперь пройдитесь по всей главе еще раз. Ищите все места, где возникает вариативность, особенно те, где меняется статус игрока или где от него зависит поворот сюжета. Возможно, на этом этапе придется добавить варианты взаимодействия с уникальными артефактами, персонажами, появляющимися только один раз — и так далее.

Статья в тему:  Как начать играть в world of warships

Оцените повороты сюжета с точки зрения их уместности и влияния на игровой баланс.

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

Например, если сила игрока должна быть на уровне в 45 единиц, чтобы вышибить деревянную дверь в четвертой главе, то логично, что в шестой главе ему понадобится 65 единиц, чтобы выбить металлическую дверь (то есть, соответственно, статус реквизитов должен расти вместе со статусом игрока).

Этап 6. Экспорт и игровая логика (цвет — зеленый)

Время поместить почти готовую главу в программу, которую вы используете непосредственно для разработки игры. К счастью, Chat Mapper экспортирует файлы в формате XML, JSON, Excel и Rich Text, — что дает вам возможность выбирать. В случае с The Last Monster Master я просто скопировал каждый ключевой элемент в файл ChoiceScript, видоизменив их по мере необходимости.

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

Другие методы

Представленный вариант — не единственный подходящий для создания нелинейных текстовых игр, однако в случае с моим проектом он сработал. В зависимости от того, какого стиля разработки вы придерживаетесь и тех программ, которые вы используете, можно попробовать экспортировать текст в игру на более ранних этапах — чтобы в нее можно было сыграть как можно раньше. Добавлю, скрипты для Chat Mapper можно писать с помощью Lua, — а значит, игровую логику можно задавать прямо в программе.

Статья в тему:  Игра онлайн как достать соседа 1

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

Создай свою текстовую игру онлайн за 5 минут!

Создать текстовую игру онлайн стало просто как никогда.

Не надо обладать навыками программирования, чтобы написать свою первую простенькую игрушку уже через 5 минут!

Не будем тянуть кота за хвост, приступим к созданию своей новой текстовой игры!

Комментарий разработчика.

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

Урок 1. Создаем текстовую игру онлайн с полного нуля.

Итак, от простейшего к простому.

Написать Аперо-игру – это значит написать “код”, который понимает платформа Аперо.

Что же из себя представляет “код” для Аперо?

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

Код для Аперо – это обычный текст, размеченный особым образом.

В процессе обучения сразу пробуйте выполнять примеры, которые мы будем разбирать.

Статья в тему:  Как создать неподвижного бота в доте 2

Для этого создай тестовую онлайн игру для обучения здесь, назови например “Обучение” и описание, например: “Это моя игра, в ней я научусь создавать свои текстовые игры онлайн на платформе Аперо”. (Доступно только зарегистрированным пользователям)

Нажми кнопку “Создать!”, и игра появится в твоем списке разработки здесь. После этого появится блок для редактирования исходного кода, туда ты будешь вводить свой код. Там уже есть базовый исходный код для примера, но его можно удалить.

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

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

Вывод текста

Давай напишем текст. Просто введи любое слово или предложение в форму для ввода исходного кода. Можешь в несколько строк (через enter). Например так:

После этого нажми кнопку “Тестовый запуск игры!” и узнаем, что же увидел бы игрок после начала этой текстовой игры.

Как видишь, в правом блоке появился точно такой же текст.

Платформа действует так: Начиная с первой строчки перебирает все по очереди и выводит их пользователю.

Статья в тему:  Что собирать clinkz в доте

Но мы не пишем книги, мы учимся создавать текстовые игры, и поэтому показывать весь текст игроку сразу мы не хотим.

Чтобы остановить платформу нужно написать так:

Обрати внимание на первый символ в строке “” – это косая черта, наклоненная влево. Ее так же называют “обратный слэш”.

Это специальный символ для платформы, чтобы она понимала, что это команда, а не обычный текст. Если слово “СТОП” в коде было бы написано без обратного слэша, то платформа просто вывела бы его пользователю на экран как обычный текст.

Чтобы понять, как работает команда стоп, выполним следующий пример:

После этого нажми кнопку “Тестовый запуск игры!” и посмотри на результат выполнения.

Платформа показывает игроку первую строчку, потом встречает команду СТОП и прекращает выполнение. Все просто.

Само слово “СТОП” тоже не будет видно пользователю в процессе игры, это служебная информация.

Локации

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

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

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

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

Не забывай в конце каждой локации писать строчку с командой СТОП.

Напишем парочку локаций:

В коде выше есть две локации с именами “Первая локация” и “Вторая локация”.

Статья в тему:  Как заработать монеты в игре лото онлайн

Сначала код выполняется начиная с Первая локация и до команды СТОП

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

КНОПКА

Кнопка создается так:

Что же произойдет после запуска? На экране появится кнопка с текстом “Перейти на вторую локацию“, которая будет видна игроку. А если он на нее нажмет, то попадет на локацию с именем “Вторая локация“, которая должна быть объявлена ниже.

Добавляй хотя бы одну кнопку на каждой локации. Учти, если локация с именем, указанной в кнопке не объявлена в исходном коде, то появится ошибка. Поэтому для каждой кнопки должна существовать локация, на которую ведет эта кнопка.

А теперь вспомним, чему мы научились в этом уроке, и закрепим все это в следущем примере.

Запустим и посмотрим, что получится!

Кнопки работают, при нажатии мы можем перемещаться по локациям.

Уже даже этого достаточно, чтобы создавать свои простенькие текстовые онлайн игры! А теперь попробуй сам! Потренируйся, создай несколько локаций, создай в них по несколько кнопок, а не одну! На этом первый урок заканчивается, спасибо! В следующем уроке мы научимся создавать переменные и условия для развилок! [Урок 2. Создаем развилки в текстовых играх в разработке]

Опыт разработки текстового квеста под мобайл

Когда 10 — дольше, чем 90

В этой статье я расскажу, как разработать и опубликовать игру в жанре текстовый квест. Все изложенное в материале основано на опыте работы над Mr. President — сатирическим симулятором президента Африканской республики.

Статья в тему:  Как уменьшить потерю пакетов в онлайн играх

Расскажу об инструментах, которыми пользовалась наша команда и оставлю ссылки на полезные ресурсы.

Допустим, у вас уже есть интересная задумка. Начните с построения сюжетного дерева. Для этого идеально подойдет программа Microsoft Visio. Переставляя блоки, вы можете менять игровые события местами, не теряя при этом центральную нить повествования.

Рекомендую прочитать книгу, которая лично мне помогла написать сценарий игры. Это «Анатомия истории», Джона Труби.

Я изучил и протестировал наиболее распространенные программы для создания диалогов, и лучшей, на мой взгляд, является Twine. Она позволяет использовать переменные и экспортировать диалоги в JSON.

Twine позволяет создавать простые формулы типа:

set: $shotgun to 1

И проверять условия:

if: $shotgun is 1 go-to: «B50»

Вы можете создать сложный сюжет, в котором учитываются любые предыдущие действия игрока. В начале игры персонаж подобрал дробовик? Будет чем застрелить босса в финальной сцене. Главное не запутаться. Лучше сразу документировать все переменные, описывать, где они применяются и на что влияют.

Каким бы крутым автором вы себя не считали, найдите хорошего редактора. Со временем взгляд замыливается и бывает трудно заметить, что с предложением «Она люибла игарть на роляе и кормлиа голбуей с руки» что-то не так.

Любой текст, который вы пишите, проходит через призму субъективного восприятия. Многое кажется очевидным вам, но совсем не очевидно игроку. Мозг заполняет пустоту в описании своим личным опытом, и когда мы слышим словосочетание «вкусная еда» — у нас возникают разные ассоциации. И если это важно по сюжету, постарайтесь конкретизировать образ.

Статья в тему:  Как правильно настроить обс для доты

Редактор — это ключевая фигура на этапе написания сценария, и если вы найдете такого человека, считайте, что вам крупно повезло.

Рекомендую прочитать книгу замечательного литературоведа Норы Галь «Слово живое и мертвое». Это по-настоящему полезная книга, изучить которую должен каждый уважающий себя автор.

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

При работе в одиночку я допускаю некий творческий беспорядок, но в команде с материалами должен быть полный порядок. Приучите себя и других автоматически синхронизировать рабочие файлы в облаке. Для этого подойдет Google Disc с установленным на компьютере Google Sync. Это позволит избежать ситуации, когда макеты накроются медным тазом после того, как дочка дизайнера прольет молоко на ноутбук (да, увы, был такой печальный опыт).

Я писал дизайн-документ, используя Google Docs. Возможно, что для более сложных проектов вы захотите использовать Вики-сервисы. Как вариант: бесплатный движок Dokuwiki, который можно развернуть на собственном Веб-сервере.

На этапе программирования синхронизируйте проект с Git — например, Bitbucket. Опытным разработчикам мои советы покажутся очевидными, но я уверен, многие пилят проекты локально, а потом обмениваются исходниками через файлообменник. Или я ошибаюсь? Напишите в комментариях, кто как работает с файлами проекта.

Самый очевидный вариант: опубликовать объявление на фриланс. Максимально сузив категорию проекта до «Рисунки и иллюстрации», я ждал что мне начнут писать художники, но нет. Откликнулись видеодизайнер, проект-менеджер и даже веб-программист. Я много работаю с фрилансом и без проблем нахожу технических специалистов, но подобрать толкового художника я не смог. И когда я почти отчаялся, то наткнулся на ресурс Artstation. Здесь люди выставляют свои работы и открыты для сотрудничества. Если вы, как и я, столкнетесь с проблемой поиска художника — отправляйтесь на Artstation.

Статья в тему:  Можно ли продать сундуки в доте 2

Очень долго я рассматривал в качестве кандидата Corona. Из плюсов: движок кросс-платформенный. Минус: не самая дружелюбная среда разработки. Обсудив вопрос с программистом, мы решили разрабатывать на HTML5, а потом с помощью PhoneGap портировать на мобилки. Спорное решение, но конкретно в нашем случае мы сумели нивелировать недостатки этого фреймворка.

Написанные в Twine диалоги можно экспортировать в JSON. Для этого есть готовые скрипты, но нам пришлось доработать обработчик, чтобы он корректно форматировал формулы и переменные.

При публикации игры в Google Play мы использовали новый формат Android App Bundle (с расширением .aab). С его помощью можно существенно уменьшить размер приложения. При установке игры на телефон загружается только то, что нужно конкретному устройству.

Этап новых фич. Когда игра готова на 90% и вам кажется, что осталось «вот совсем чуть-чуть», возникает неотвратимое желание добавить в игру новую фичу (ведь без нее игроки точно не поймут всей крутизны задумки). В этот момент ответственный за релиз должен проявить себя как супер-адекватный человек. В начале разработки мы закладываем 10-15% на введение нового функционала. Это нормально. Но лучше сто раз подумайте, прежде чем переписать одну из ключевых механик.

Этап отторжения. Затем начинается фаза, когда перестает нравиться абсолютно все — от интерфейса до диалогов. Я начал выбрасывать из игры целые сюжетные ветки и в очередной раз переделывать иконки.

Статья в тему:  Как создать неподвижного бота в доте 2

Этап багов. Если после предыдущей стадии от игры еще хоть что-то осталось, то добро пожаловать на этап багов.

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

Я считаю, что у инди нет права на ошибку. Инди-разработчик, как сперматозоид, движется в потоке ему подобных. Чтобы достигнуть заветной цели, вы должны быть упорнее и требовательнее к себе. Если вы решитесь и примете замечания, то все пойдет по кругу: правки — баги — тестирование — замечания — правки.

Если вы прошли через все круги производственного ада, то публикация игры в App Store или Google Play покажется вам летней прогулкой в парке. Просто честно отвечайте на вопросы, особенно те, что касаются возрастного рейтинга.

Кстати, вот такая интересная особенность регионального рейтинга:

Если Австралия дала нам 18+ за намеки с сексуальным подтекстом, то для Европы и России это 12+.

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

Скачать игру Mr. President можно бесплатно в Google Play.

Статья в тему:  Что собирать clinkz в доте

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

Apero – Новинка 2015. Создание текстовых игр-квестов в режиме онлайн со своего мобильного устройства или в браузере ПК. Не требует установки. Бесплатно.

Урок 1. Создаем текстовую игру онлайн с полного нуля

Написать Аперо-игру – это значит написать “код”, который понимает платформа Аперо.

Что же из себя представляет “код” для Аперо? Код для Аперо – это обычный текст, размеченный особым образом.

Создаем тестовую игру

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

Нажми кнопку “Создать!”, и игра появится в твоем списке разработки здесь. После этого появится блок для редактирования исходного кода, туда ты будешь вводить свой код. Там уже есть базовый исходный код для примера, но его можно удалить.

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

Таким образом происходит создание текстовой игры на сайте онлайн.

Игра с нуля

Вывод текста

Давай напишем текст. Просто введи любое слово или предложение в форму для ввода исходного кода. Можешь в несколько строк (через enter). Например так:

После этого нажми кнопку “Тестовый запуск игры!” и узнаем, что же увидел бы игрок после начала этой текстовой игры.

Как видишь, в правом блоке появился точно такой же текст.

Платформа действует так: Начиная с первой строчки перебирает все по очереди и выводит их пользователю.

Статья в тему:  Как исследовать корабли в world of warships

Поскольку мы учимся создавать текстовые игры, то показывать весь текст игроку сразу мы не хотим. Чтобы остановить платформу нужно написать так:

Обрати внимание на первый символ в строке “” – это косая черта, наклоненная влево. Ее так же называют “обратный слэш”.

Это специальный символ для платформы, чтобы она понимала, что это команда, а не обычный текст. Если слово “СТОП” в коде было бы написано без обратного слэша, то платформа просто вывела бы его пользователю на экран как обычный текст.

Чтобы понять, как работает команда стоп, выполним следующий пример:

После этого нажми кнопку “Тестовый запуск игры!” и посмотри на результат выполнения.

Платформа показывает игроку первую строчку, потом встречает команду СТОП и прекращает выполнение. Все просто.

Само слово “СТОП” тоже не будет видно пользователю в процессе игры, это служебная информация.

Локации

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

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

Полные правила объявления локации здесь.

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

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

Не забывай в конце каждой локации писать строчку с командой СТОП.

Статья в тему:  Игра онлайн как достать соседа 1

Напишем парочку локаций:

В коде выше есть две локации с именами “Первая локация” и “Вторая локация”.

Сначала код выполняется начиная с Первая локация и до команды СТОП

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

Кнопка создается так:

Что же произойдет после запуска? На экране появится кнопка с текстом “Перейти на вторую локацию“, которая будет видна игроку. А если он на нее нажмет, то попадет на локацию с именем “Вторая локация“, которая должна быть объявлена ниже.

Добавляй хотя бы одну кнопку на каждой локации. Учти, если локация с именем, указанной в кнопке не объявлена в исходном коде, то появится ошибка. Поэтому для каждой кнопки должна существовать локация, на которую ведет эта кнопка.

А теперь вспомним, чему мы научились в этом уроке, и закрепим все это в следующем примере.

Запустим и посмотрим, что получится!

Кнопки работают, при нажатии мы можем перемещаться по локациям.

Уже даже этого достаточно, чтобы создавать свои простенькие текстовые онлайн игры!

Пишем игру на Python

Прежде чем мы начнём программировать что-то полезное на Python, давайте закодим что-нибудь интересное. Например, свою игру, где нужно не дать шарику упасть, типа Арканоида. Вы, скорее всего, играли в детстве во что-то подобное, поэтому освоиться будет просто.

Логика игры

Есть игровое поле — простой прямоугольник с твёрдыми границами. Когда шарик касается стенки или потолка, он отскакивает в другую сторону. Если он упадёт на пол — вы проиграли. Чтобы этого не случилось, внизу вдоль пола летает платформа, а вы ей управляете с помощью стрелок. Ваша задача — подставлять платформу под шарик как можно дольше. За каждое удачное спасение шарика вы получаете одно очко.

Статья в тему:  Как уменьшить потерю пакетов в онлайн играх

Алгоритм

Чтобы реализовать такую логику игры, нужно предусмотреть такие сценарии поведения:

  • игра начинается;
  • шарик начинает двигаться;
  • если нажаты стрелки влево или вправо — двигаем платформу;
  • если шарик коснулся стенок, потолка или платформы — делаем отскок;
  • если шарик коснулся платформы — увеличиваем счёт на единицу;
  • если шарик упал на пол — выводим сообщение и заканчиваем игру.

Хитрость в том, что всё это происходит параллельно и независимо друг от друга. То есть пока шарик летает, мы вполне можем двигать платформу, а можем и оставить её на месте. И когда шарик отскакивает от стен, это тоже не мешает другим объектам двигаться и взаимодействовать между собой.

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

Весь кайф в том, что мы всё это задаём один раз, а потом объекты сами разбираются, как им реагировать друг на друга и что делать в разных ситуациях. Мы не прописываем жёстко весь алгоритм, а задаём правила игры — а для этого классы подходят просто идеально.

Статья в тему:  Как начать играть в world of warships

По коням, пишем на Python

Для этого проекта вам потребуется установить и запустить среду Python. Как это сделать — читайте в нашей статье.

Начало программы

Чтобы у нас появилась графика в игре, используем библиотеку Tkinter. Она входит в набор стандартных библиотек Python и позволяет рисовать простейшие объекты — линии, прямоугольники, круги и красить их в разные цвета. Такой простой Paint, только для Python.

Чтобы создать окно, где будет видна графика, используют класс Tk(). Он просто делает окно, но без содержимого. Чтобы появилось содержимое, создают холст — видимую часть окна. Именно на нём мы будем рисовать нашу игру. За холст отвечает класс Canvas(), поэтому нам нужно будет создать свой объект из этого класса и дальше уже работать с этим объектом.

Если мы принудительно не ограничим скорость платформы, то она будет перемещаться мгновенно, ведь компьютер считает очень быстро и моментально передвинет её к другому краю. Поэтому мы будем искусственно ограничивать время движения, а для этого нам понадобится модуль Time — он тоже стандартный.

Последнее, что нам глобально нужно, — задавать случайным образом начальное положение шарика и платформы, чтобы было интереснее играть. За это отвечает модуль Random — он помогает генерировать случайные числа и перемешивать данные.

Запишем всё это в виде кода на Python:

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

Шарик

Сначала проговорим словами, что нам нужно от шарика. Он должен уметь:

  • задавать своё начальное положение и направление движение;
  • понимать, когда он коснулся платформы;
  • рисовать сам себя и понимать, когда нужно отрисовать себя в новом положении (например, после отскока от стены).
Статья в тему:  Как заработать монеты в игре лото онлайн

Платформа

Сделаем то же самое для платформы — сначала опишем её поведение словами, а потом переведём в код. Итак, вот что должна уметь платформа:

  • двигаться влево или вправо в зависимости от нажатой стрелки;
  • понимать, когда игра началась и можно двигаться.

А вот как это будет в виде кода:

Можно было не выделять счёт в отдельный класс и каждый раз обрабатывать вручную. Но здесь реально проще сделать класс, задать нужные методы, чтобы они сами потом разобрались, что и когда делать.

От счёта нам нужно только одно (кроме конструктора) — чтобы он правильно реагировал на касание платформы, увеличивал число очков и выводил их на экран:

У нас всё готово для того, чтобы написать саму игру. Мы уже провели необходимую подготовку всех элементов, и нам остаётся только создать конкретные объекты шарика, платформы и счёта и сказать им, в каком порядке мы будем что делать.

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

Посмотрите, как лаконично выглядит код непосредственно самой игры:

Что дальше

На основе этого кода вы можете сделать свою модификацию игры:

  • добавить второй шарик;
  • раскрасить элементы в другой цвет;
  • поменять размеры шарика; поменять скорость платформы;
  • сделать всё это сразу;
  • поменять логику программы на свою.

Как написать сюжет квеста для текстовой игры

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

Статья в тему:  Как правильно настроить обс для доты

Ни один по-настоящему хороший игровой квест не обходится без правильного оригинального сюжета. Нередко начинающие мастера игры пускают свои приключения на самотёк, боясь что их упрекнут в том, что они поставили своих игроков на «сюжетные рельсы», что значит лишили возможности влиять на сюжет. Открою небольшую тайну, оказаться хорошим для всех у вас не получится. Тот кто захочет на вас обидится за что-либо, скорей всего это сделает в любом случае, сколько бы свободы вы ему не дали. Из-за всего этого у начинающих квестоплётов и мастеров игры нет ничего кроме некой завязки, которая частенько бывает куда как символической. Я сейчас говорю не о расписывании по ролям заранее известного сюжета, а про настоящий квест, где пишут игроки от лиц своих заранее выбранных персонажей и не знают о том как будут развиваться события наперёд. Итак, участники определены, завязка придумана, а дальше все отпускается на самотёк.

Не делайте так. Это одна из главных ошибок начинающих мастеров игры.

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

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

Статья в тему:  Как сделать доту 1 на русском

Десятилетиями народ кормят одними и теми же гамбургерами. Дайте человеку его любимое блюдо, только не забудьте приправить ваше блюдо новым соусом и подать на новой красивой тарелке. Поздравляю! Мы написали концепт квеста, состоящую из пяти простых предложений. Теперь давайте проверим её на ком-либо, убедитесь что вас понимают. Если основная идея не понятна, не цепляет, не интригует, не продолжайте.

Простейшая формула: Герой или герои (А) должен или должны сделать что-то-либо и ещё кое что (Б), иначе случится нечто непоправимое (В).

Где: А — участники квеста, Б1, Б2 и Б3 – что-то-либо и ещё кое-что, что должны совершить герои, В – нечто непоправимое, чего герои не хотят допустить ни в коем случае.

Пример: Крестьянский паренёк Люк с захолустной пустынной планеты должен повстречать старого рыцаря, поедающего ему тайну Силы. Узы семьи перестают держать Люка на планете и он отправляется в путешествие. Знакомиться с Ханом и Чуббакой, после чего они вместе спасают принцессу, попутно понимая, что Звезда Смерти должна быть уничтожена, иначе уже ничто не помешает Галактической Империи править Далёкой-далёкой галактикой. Люк, Хан и Чуббака уничтожают Звезду Смерти. Хэппи энд.

«Б1» «Б2» «Б3» и т. д. Чаще всего являются «повторными точками», когда действие развивается. Развиваете идею и разложите её по сюжетным точкам. Это действительно непросто, но интересно.
Если вы не видите конца вашего приключения, не знаете чем всё должно завершиться, не приступайте к написанию собственно квеста. Даже самые лучшие игроки не способны вытянуть заранее структурно провальный квест. Если ведущий не знает к какой цели он ведёт своих игроков, игроки и подавно уж будут как тот квартет в басне Крылова.
Мои квесты очень редко занимают больше одной страницы А4. Общий сюжет и структура приключения там помещаются. Всё остальное дело игроков и мастерского вдохновения. Мне этого вполне достаточно.

Статья в тему:  Игра онлайн как достать соседа 1

Я надеюсь, эта статья оказалась полезной и интересной. Если остались вопросы или хотите развития темы – пишите в комментариях.

Ставьте большой палец вверх и подписывайтесь, если понравилась статья.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: