Игровая площадка, как добавить файл

Обновлено: 16.05.2024

Весь игровой контент в Tabletop Playground организован в виде пакетов. Пакет — это набор шаблонов объектов, моделей, текстур, сценариев и игровых состояний. Вы можете создавать новые пакеты с помощью редактора и загружать их на mod.io.

Игра с пакетами

При запуске новой игры вы обычно выбираете сохраненное состояние или таблицу из пакета. Затем этот пакет становится активным для вашей игры, и все игроки, желающие присоединиться к вашей игре, также должны установить этот пакет. Некоторые пакеты входят в состав Tabletop Playground и всегда активны, например пакеты Dice и Cards.

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

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

Чтобы получить новые пакеты, перейдите на mod.io и войдите в свою учетную запись Steam. Затем вы можете подписаться на любой доступный пакет. Пакеты с подпиской будут загружены при запуске игры. Вы также будете автоматически получать обновления из пакетов, на которые вы подписаны.

Создание пакетов

При использовании редактора вы всегда будете работать с пакетом. Если вы хотите создать новую игру, вы сначала создаете для нее пакет с подходящим именем. Новая папка будет создана в вашем каталоге Tabletop Playground (в PersistentDownloadDir). Все содержимое пакета будет храниться в этой папке. Например, когда вы выбираете текстуру для объекта в редакторе, файл текстуры копируется в папку «Текстуры» в каталоге пакета.

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

Загрузка пакетов

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

Вы также можете сделать пакет скрытым, если не хотите, чтобы люди видели его на странице mod.io. Частные пакеты по-прежнему можно загрузить в игре при выборе сервера, использующего пакет, в браузере серверов. Наконец, обновление пакета работает так же, как и первоначальная загрузка.

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

Макет папки

Каждый пакет хранится в папке. Пакеты, которые вы создаете в редакторе, хранятся в папке с игрой в TabletopPlayground/PersistentDownloadDir. Пакеты, загруженные с mod.io, находятся в TabletopPlayground/PersistentDownloadDir/.modio/mods.

Главная папка пакета содержит файл manifest.json, эскиз пакета, файл JSON для каждого шаблона объекта в пакете и несколько вложенных папок. В файле manifest.json содержится некоторая информация о пакете, например его имя и уникальный идентификатор. Если вы хотите скопировать пакет, вам нужно использовать функции редактора, а не просто копировать папку, чтобы скопированному пакету и его объектам были назначены новые идентификаторы.

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

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

Просмотр модулей и общих файлов

Если на игровой площадке есть модули и общие файлы, вы можете просмотреть их на игровой площадке.


В приложении Swift Playgrounds на Mac откройте игровую площадку, затем нажмите в левом верхнем углу, чтобы открыть боковую панель.

Страница игровой площадки с боковой панелью и списком модулей открытый, показывая, что на игровой площадке есть один модуль кода с именем MyFiles с шестью файлами Swift в нем». ширина=

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

Файлы в каждом модуле отображаются под именем модуля.

Добавить модуль

На многих игровых площадках можно добавлять модули.

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


На открытой игровой площадке в приложении Swift Playgrounds на Mac нажмите в левом верхнем углу, чтобы открыть боковую панель.

На боковой панели наведите курсор на Исходный код и нажмите рядом с ним.

Новый модуль без названия появляется под другими модулями.

Введите имя нового модуля и нажмите клавишу Return.

Добавить файл

Вы можете добавлять файлы Swift на некоторые игровые площадки, в том числе на игровые площадки с ограниченным режимом.


На открытой игровой площадке в приложении Swift Playgrounds на Mac нажмите в левом верхнем углу, чтобы открыть боковую панель.

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

Новый файл без названия появляется под другими файлами в модуле.

Введите имя нового файла и нажмите клавишу Return.

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

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

Переименовать модуль или общий файл

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


На открытой игровой площадке в приложении Swift Playgrounds на Mac нажмите, чтобы открыть боковую панель.

На боковой панели нажмите имя, которое хотите изменить, удерживая клавишу Control, затем выберите «Переименовать».

Введите новое имя и нажмите клавишу Return.

Удалить модуль или общий файл

ВНИМАНИЕ! Если вы удалите модуль или общий файл Swift, вы не сможете вернуть его обратно. Содержащийся в нем код исчезнет, ​​а команды в других файлах, ссылающиеся на удаленный, работать не будут.


На игровой площадке в приложении Swift Playgrounds на Mac нажмите, чтобы открыть боковую панель.

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

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

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

Я хочу привести два примера: загрузка файла .txt и загрузка файла .json. Мы даже можем объединить их и работать с перечислением.

Создать новую игровую площадку

Чтобы было с чем играть, мы сначала создаем новую игровую площадку. Мы можем сделать это в Xcode, используя File-New-Playground. Я дам своему чудесное имя Загрузка.

Скриншот, как создайте новый проект Plaground в Xcode». /><br /></p>
<p> Как создать новый проект Playground в Xcode</p>
<h2>Создайте файл для работы</h2>
<p>Во-первых, вам нужно импортировать файл в каталог Resources вашей игровой площадки. Вы можете сделать это, щелкнув правой кнопкой мыши папку «Ресурсы», как показано ниже. Затем вы можете назвать его sample.txt или sample.json в зависимости от типа файла, который вы хотите загрузить.</p>
<p><img class=

Как создать новый файл в папке "Ресурсы" на игровой площадке.

(Если вам сложно найти файлы для опробования, здесь вы можете найти образец текстового файла, а здесь образец файла json. Просто скопируйте содержимое в файл, и все готово.)

Загрузить файл(ы)

Теперь перейдем к проблеме загрузки файла. Они расположены в части Bundle.main нашей маленькой песочницы, которая является нашей игровой площадкой. Затем мы можем получить URL-адрес файла с помощью функции Bundle.main.url. Затем мы можем использовать инициализатор с параметрами String(contentsOf:encoding), чтобы преобразовать его в String .

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

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

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

Обобщите нашу функцию для любого типа файлов

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

Сначала мы создадим перечисление FileExtension . Мы хотим использовать необработанные значения для случаев перечисления, поэтому нам нужно объявить тип String . Затем мы можем объявить случаи для наших типов файлов. На самом деле мы можем объявить столько типов, сколько захотим, поэтому мы могли бы просто расширить это для xml , html или других фантастических типов файлов, которые мы все любим и которыми наслаждаемся.

Хватит бреда о типах файлов и переходим к коду:

Это небольшое перечисление теперь позволяет нам расширить нашу функцию загрузки, чтобы получить еще один параметр с именем ofType, который имеет тип FileExtension. Мы можем использовать необработанное значение этого параметра для передачи параметру withExtension вызова URL. Это дает нам следующую функцию:

Теперь мы можем вызывать функцию для файлов .txt или .json, указав соответствующее расширение. Вот примеры обоих вызовов:

Обзор

Xcode Playgrounds предлагает отличный способ поэкспериментировать с множеством различных функций. Возможность загружать контент из файлов дает нам отличный способ повторять код в безопасной среде или даже просто экспериментировать.

С помощью простого кода в этом небольшом руководстве мы можем сделать это быстро и многократно.

Если вы сами используете Xcode Playgrounds, я хотел бы услышать от вас, какие вещи вы ими освещаете. Не стесняйтесь, пишите мне в Твиттере или пишите мне в ЛС. Я надеюсь, что вы найдете эту статью полезной.

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

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

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

Использование ресурсов с Github

Вы могли использовать GitHub со ссылкой, сгенерированной сайтом RawGit, для обеспечения правильного типа MIME. К сожалению, этот сайт закрыт.

Любые существующие ссылки на файлы с использованием RawGit можно обновить с помощью Raw Git до jsDelivr. Изменения должны быть внесены в ссылки RawGit до октября 2019 г.

Чтобы использовать jsDelivr с файлом:

убедитесь, что ваш репозиторий git открыт для всех

скажем, у вас есть файл с именем myFile.babylon на github, перейдите к этому файлу в своем репозитории и щелкните номер фиксации.

замените /commit/ на @

(необязательно) добавив имя файла в конец, теперь у вас есть прямой доступ к загрузке

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

Из нашего репозитория MeshesLibrary, используя PBR_Spheres.glb:

Загрузка ресурсов из библиотеки мешей Babylon.js

с использованием страниц GitLab

Вы должны настроить свои собственные страницы Gitlab.

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

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

Его можно использовать следующим образом:

Загрузка ресурсов из Dropbox

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

Загрузка ресурсов из Imgur

Встроенные объекты

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

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

Загрузка встроенного ресурса

Файлы JavaScript

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

Читайте также: