shaihulud

+24
с 2018

Check out one of my tools is 'Charon - Game Data Editor' - https://www.gamedevware.com/

1 подписчик
21 подписка

Ну у тебя там игровая сущность в конфиге:
```
type = "Crab-1"
tags = "Enemy,Drone,Target"
```
Зачем ей условная компиляция, она же одинакова на всех платформах. Для eval достаточно либы для парсинга выражений для твоего языка, уже всё написано. #include не нужон с каким нибудь CastleDB ведь он менеджит все данные сам.

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

Ответить

А зачем редактировать конфиги к игре руками и писать код для десериализации, когда есть на выбор визуальные редакторы со встроенными генераторами кода?

Ответить

Добавил ссылку в статью, это оказывается не запрещено правилами. Если будут вопросы, то я могу ответить тут или в дискорде - https://discord.com/invite/MeAPbpucYh

Ответить

Инструмент, чтобы забивать игровые данные/игровые конфиги, является заменой Excel и таблиц.

Настраиваешь структуру под свой проект, всякие предметы/квесты/диалоги/врагов, забиваешь данные, генерируешь код на C#/TypeScript и загружаешь эти данные себе в игру.

Всё это можно делать руками и без инструментов, но это приводит к ошибкам/опечаткам и занимает много времени.

Ответить

Там есть кнопка "Экспорт" -> "XLSX", потом редактирование всех шансов уже силами Excel. И есть импорт обратно. Все есть в UI.

ГД же не каждый 30 секунд это делают, так что не обломаются нажать на пару кнопок. Для совсем ленивых можно сделать 2 батника с экспортом всего в Excel, и импортом обратно. В доке есть описание CLI.

1
Ответить

Сжальтесь над сирыми, расскажите как ваш пример с ачивками будет реализован в БД и как его потом поддерживать?

1) Иду и качаю последнюю версию: https://www.nuget.org/api/v2/package/GameDevWare.Charon/2019.3.8
2) Распаковываю в C:\work\charon
3) Создаю пустой файл "c:\work\charon\mygamedata.json"
3) Запускаю C:\work\charon\gamedevware.charon.2019.3.8\tools\Charon.exe SERVE "c:\work\charon\mygamedata.json" --launchDefaultBrowser
4) Браузере накидываю сущность Achievement, RewardItem, Item
5) Заполняю ачивку
6) получаю mygamedata.json с ачивками

по желанию можно сгенерить еще C# код, для загрузки этого JSON и доступа к ачивкам:

Charon.exe GENERATE CSHARPCODE "c:\work\charon\mygamedata.json" --output "c:\work\charon\mygamedata.cs"


Потратил реально минут 10 на это, пришлось в доку посмотреть.

Ответить

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


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

{
   id: "Winner"
   reward: [
       { item: "sword", chance: 0.1 },
       { item: "armor", chance: 0.2 },
       { item: "kek", chance: 0.5 },
       { item: "chest", chance: 0.2 },
   }
}

В виде таблицы это уже сложно выразить, еще сложнее будет, если вложенность перевалит за 2. И хочется быть уверенным что "sword", "armor", "chest" существуют, для этого надо ручками на каждую такую колонку писать проверку. А завтра придёт новая мета, что ачивки реварда не дают, и это надо будет обратно зачищать.

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

Ответить

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

И да, и да. Спорить не буду БД это не легкое и доступное для всех решение. Как и кастомный Google Spreadsheets с пачкой скриптов.

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

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

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

Ответить

Никто не мешает хранить в DB (любой, а не только то что я скинул вверху), и эскпортить в Excel для обработки/перерасчетов и импортить обратно. Эксель, если что, умеет ссылаться на соседние файлы.

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

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

Ответить

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

2
Ответить

Окей, кинул приглашение.

Ответить

Пацаны, готовый сервак и клиент на юнити для пошаговой стратегии аля Х-КОМ купить не хотите? Останется только контент занести, правила настроить, допилить геймплей фичи.

1
Ответить