Вход
Приветствую Вас Гость
 

Совместная разработка игр на QSP

Тут очевидно звёзды сошлись.

Вопросы dmvikar и попытка редизайнить свой сайт заставили ознакомиться с git и github; перелопачивание старого QSP-кода заставило пожалеть об отсутствии системы контроля версий в QGen; а Pseudopod показал, что оказывается можно разрабатывать игры на QSP и не в QGen. Ещё до кучи я возобновил своё знакомство с Python, ну а поскольку моим любимым текстовым редактором уже многие годы остаётся Sublime Text, всё это вылилось в попытку написать скрипт вроде того, что предлагал evp когда-то (https://qsp.org/тема:совместная разработка игр на QSP).

И к моему удивлению заработал сначала скрипт, а потом мне даже удалось превратить это в почти самостоятельную Build System (ну, конечно, многое придётся прописать руками).

Получился QSP-Builder for Sublime Text и умеет он: собирать из разрозненных файлов в формате TXT2GAM файлы ".qsp" и запускать их в плеере. Таким образом осуществляется как бы прямой запуск игры (на основе только что написанных файлов) из Sublime Text. Для конвертирования правда требуется заранее установить утилиту TXT2GAM, ну и само собой плеер так же должен быть установлен заранее. В общем, кому интересно, прошу ознакомиться. Надеюсь в будущем это снимет неудобства совместной разработки игр на QSP.

О проблемах, замечаниях и предложениях просьба отписываться в соответствующую тему на форуме qsp.su, или на aleksversus@mail.ru. За другими ресурсами мне тяжело будет следить.

Разработка QSP-игр в Sublime Text

Выбор редактора, или Почему Sublime Text?

Всем новичкам в разработке игр на QSP я предлагаю начинать с Quest Generator, так как он удобен, прост и интуитивно понятен. Пишешь локации, запускаешь игру нажатием на кнопку - тестируешь.

Однако со временем выявляются разного рода недостатки, присущие Quest Generator'у. И эти недостатки подталкивают нас к поиску более удобного и функционального редактора.

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

По-идее нам подходит VS Code, так как это очень удобное IDE с уже встроенными инструментами для взаимодействия с системами контроля версий (по нажатию пары кнопок можно делать коммиты и отправлять их в репозиторий), но пока не доделано расширение Псевдопода, лично для меня VS Code остаётся не очень удобным редактором, и я использую его разве что для проверки ошибок в различных играх.

Ещё на заре появления QSP была создана утилита TXT2GAM, которая позволяет разрабатывать игру в виде текстового файла (исходника) в любом текстовом редакторе, а потом конвертировать исходник в готовый файл игры. Но, к сожалению, мало какой текстовый редактор мог похвастаться адекватной подсветкой кода QSP.

Я решил остановиться на Sublime Text, поскольку этот редактор позволяет даже мне, не особо шарящему в программировании, написать собственную подсветку синтаксиса, имеет выход на консоль и собственный Python-интерпретатор. К тому же я давно пользуюсь данным редактором для обычной писательской деятельности, и настолько привык к нему, что уже не представляю, может ли быть что-то удобнее.

Если вы не знаете, как пишутся игры на QSP в формате TXT2GAM, ознакомьтесь с уроками от ELMORTEM: https://qsp.org/index.php?option=com_content&view=article&id=91&Itemid=56

Работа в Sublime Text по сравнению с Quest Generator имеет ряд преимуществ:

  • Контроль версий. Поскольку все части игры хранятся в виде текстовых файлов (исходного кода), они легко обрабатываются системами контроля версий, например GIT. Таким образом, вы можете проследить все этапы создания вашей игры, и быстрее находить ошибки.
  • Совместная разработка. Вы можете организовать общий репозиторий, например на GitHub, и разрабатывать игру командой, при этом можно легко отследить, кто и какие изменения вносит в проект.
  • Удобство модульной разработки. Вы можете одновременно в одной программе работать над всеми модулями вашей игры, или открывать для каждого модуля своё окно, или пользоваться любыми иными возможностями Sublime Text, а затем собрать и запустить игру, нажав всего одну комбинацию клавиш. QBST (см. раздел QSP-Builder for Sublime Text) соберёт все нужные вам файлы ".qsp" и запустит игру в плеере по нажатию пары клавиш.
  • Один редактор - много плееров. В специальном файле проекта можно для каждой игры указать собственный плеер. Таким образом, одну игру вы можете разрабатывать например для qSpider, одну для Quest Navigator, а другую для классики. И вам не придётся ставить себе три Quest Generator с разными настройками для плееров.
  • Sublime Text. Sublime Text умеет подсвечивать HTML, JavaScript и CSS, что очень сильно облегчает разработку игр для Quest Navigator и qSpider. Если вам сильно не хватало проверки орфографии в QGen, то здесь вы можете себе её сделать. Поиск и замена лишь по определённым файлам и папкам (а значит и локациям)? В Sublime Text есть и это. Сложно придумать, что умеет QGen и не умеет Sublime Text — гораздо проще придумать, что умеет ST и не умеет Quest Generator.

QSP-Builder for Sublime Text

QSP-Builder for Sublime Text (далее QBST, билдер) — это python-скрипт, который:

  1. собирает из разрозненных файлов формата TXT2GAM файл игры в формате TXT2GAM;
  2. конвертирует полученный файл в файл игры в формате ".qsp" (QSP-файл)
  3. запускает указанный файл игры в плеер QSP

Порядок работы с проектом

  1. Проект организуется по папкам. В корневой папке проекта должен лежать файл "project.json", который и содержит в себе инструкции по сборке проекта. (см. раздел project.json).
  2. Все рабочие файлы проекта пишутся в формате TXT2GAM и сохраняются с расширениями ".qsps", ".qsp-txt" или ".txt-qsp", предпочтительно указывать первое расширение. В качестве исключения можно указывать иные расширения, но в таком случае необходимо будет указывать пути до конкретных файлов (см. раздел "project.json"). Sublime Text по умолчанию работает с файлами кодировки UTF-8, поэтому и билдер написан под данную кодировку. Если кодировка в конечном файле игры нарушена, значит вы работаете с исходниками в кодировке отличной от UTF-8, смените кодировку исходников на UTF-8.
  3. После редактирования и сохранения файлов можно выбрать один из режимов сборки:
    • "QSP - qsp-build" — собрать файлы согласно инструкции и сконвертировать в ".qsp"
    • "QSP - qsp-run" — запустить стартовый файл, указанный в проекте "project.json", в плеере.
    • "QSP" — собрать файлы согласно инструкции и запустить стартовый файл в плеере.

Подсветка синтаксиса QSP

Для того, чтобы в ваших файлах формата TXT2GAM с расширениями ".qsps", ".qsp-txt", или ".txt-qsp", автоматически подсвечивался код QSP, необходимо установить пакет подсветки синтаксиса QSP в ваш Sublime Text.

Рядом с релизом QBST я буду публиковать и обновлённый файл подсветки для Sublime Text, который вы всегда можете найти в том же репозитории:

Совместная разработка и контроль версий

Для более подробных сведений о совместной разработке, вам необходимо ознакомиться с системами Git, github, и иными, более подробно. Здесь приводятся лишь основные моменты, с которых могут начать новички.

Контроль версий

Для контроля версий разрабатываемой игры необходимо установить на своём компьютере Git. Нижеследующие пункты взяты из инструкции https://htmlacademy.ru/blog/boost/frontend/git-console и ориентированы на пользователей Windows:

  1. Скачиваем установщик со страницы https://git-scm.com/download/win

  2. Устанавливаем программу, и при установке можем отметить или снять пункты "Windows Explorer integration":

    • "Git Bash Here" — пункт контекстного меню, который запустит косноль git bash в указанной папке
    • "Git GUI Here" — пункт контекстного меню, который запустит git с графическим интерфейсом в указанной папке
  3. Ещё при установке можно выбрать редактор по умолчанию. Я выбирал Sublime Text, и если вы уже установили Sublime Text и теперь впервые устанавливаете Git, то так же выбирайте его. Остальные пункты можно оставить без изменения.

  4. После установки Git можете добавить user.name и user.email для всех своих проектов через командную строку Windows или Git CMD, хотя в принципе это не обязательно. См. https://htmlacademy.ru/blog/boost/frontend/git-console

  5. Для пробы можете создать новый репозиторий. Для этого:

    • создайте любую пустую папку. Например, я храню все проекты на диске D: в папке "projects", поэтому для нового репозитория я создал папку "new_rep" ("D:\projects\new_rep").

    • откройте командную строку Windows или Git CMD и перейдите в указанный каталог с помощью команды "cd": cd "D:\projects\new_rep"

    • инициализируйте создание нового репозитория (данная команда создаст репозиторий, даже если в папке уже есть содержимое): git init

Собственно это всё, что нужно для контроля версий. В интернете есть много информации о работе с Git, и в принципе, если вам удобно вести контроль версий, используя консоль, то вам будет достаточно Git Bash. Кое-кому удобен даже Git GUI. Однако...

Sublime Merge

...если вы откроете один из файлов вашего проекта (репозитория) в Sublime Text, то в строке состояния вы увидите особую отметку, которая показывает число изменённых файлов проекта. Если вы добавите новый файл в тестовый репозиторий "new_rep", то эта отметка будет выглядеть, как "master|1|" — то есть 1 изменение в master-ветке проекта.

master-1

Дело в том, что Sublime Text автоматически подхватывает списки изменений из Git (условно говоря). Если вы щёлкнете по отметке об изменениях, Sublime Text предложит вам скачать Sublime Merge. Обязательно скачайте и установите, так как Sublime Merge в совокупности с Sublime Text является более удобным Git-клиентом.

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

Любое или все изменения можно закоммитить (зафиксировать в истории изменений), используя Sublime Merge. Для этого отмечаете нужные файлы и изменения в них, вводите текст коммита и нажимаете кнопку "Commit". Если вы ещё не указывали "user.name" и "user.email", Sublime Merge предложит вам сделать это.

Совместная разработка

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

Всем разработчикам придётся зарегистрировать по одному аккаунту на github. Один из разработчиков должен создать репозиторий для совместной разработки игры. При этом можно выбрать опцию "Private" (репозиторий будет доступен для просмотра вам и выбранным людям) или "Public" (репозиторий смогут просматривать все).

Разработчик, создавший репозиторий, должен выслать приглашения остальным разработчикам. Это делается в разделе GitHub "Settings" — "Manage Access"

Когда у всех разработчиков появляется доступ к репозиторию, каждому нужно зайти в Sublime Merge открыть меню "File" - "Clone Repository", откроется вкладка, в которой нужно указать URL репозитория и другие параметры доступа, например SSH-ключ.

Заключение

Данное руководство будет пополняться подробностями по мере возникновения вопросов. На самом деле тема Совместной разработки слишком обширна, чтобы осветить её здесь хоть сколько-нибудь подробно. Я и сам не вполне разобрался со многими вопросами. Но, если у вас есть, что спросить, пишите на aleksversus@mail.ru, помогу чем смогу, а ваши вопросы помогут улучшить текст данного руководства.

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

Текст в этом разделе является лишь сокращённым вариантом текста из Readme-файла в репозитории:

Наверх