У большинства компаний есть редактор или система управления переменными для настройки игр, но есть ли промежуточное программное обеспечение для решения этой проблемы? Я сам написал две такие системы в прошлом и работал с пятью, может быть, шестью разными, но ни одна из них не была в продаже.
У каждого из этих собственных решений были проблемы, начиная от необходимости искать значения до невозможности сохранить текущее состояние переменных.
Существуют ли зрелые библиотеки / приложения управления переменными Config / Runtime?
Я обычно пишу код на C ++, но я думаю, что зрелый редактор настроек / переменных, вероятно, будет основан на сокетах (и, следовательно, в некоторой степени не зависит от языка), так как все современное оборудование для разработки, кроме Nintendo, предоставляет механизм для взаимодействия с серверами. Реализация кода также должна быть довольно простой (мне нравится статья hot_var / TweakableConstants, которую публикует Oskar, но это не пакет)
Возможно, идея настраиваемых констант соответствует вашим потребностям. На самом деле это настолько удобно, что вы можете подумать, что вам потребуется комплексное решение для эффективного управления переменными времени выполнения, но в действительности реализация почти слишком проста. Оригинальное обсуждение этой техники также интересно читать.
Пример:
H
Макрос раскрывается нечто подобноеHotValue(x, __FILE__, __LINE__, __COUNTER__)
. Это регистрирует значение в некотором глобальном реестре. Тогда есть такая функция,RefreshHotValues()
которую вы вызываете через регулярные промежутки времени. Функция просматривает каждую запись в реестре, анализирует конкретный исходный файл и перезагружает горячее значение.Когда вы изменяете фактический исходный код, у вас есть постоянство прямо здесь.
Очевидно, что это не будет работать там, где
H()
не оценивается каждый кадр, но есть способы решить эту проблему, как описано здесь .Возможно, вы могли бы расширить эту идею до решения на основе сокетов. При вызове
HotValue()
каждого кадра могут возникнуть значительные потери производительности , но поскольку вы очень легко можете скомпилировать макрос, полностью заменив его константой, это не проблема.источник
H(int, myvar, 5)
и при изменении файла заменятьmyvar
в памяти. См. Mollyrocket.com/forums/viewtopic.php?p=5395#5395AntTweakBar действительно полезен для того, что вы хотите делать, однако, в большинстве случаев вам нужно иметь методы, которые «компилируются» при выпуске с некоторыми макросами или подобными.
источник
От вопроса об отладке в реальном времени приходит ответ Дэвида Макгроу об AsyncSocket для разработчиков iOS. Смотрите его ответ для получения дополнительной информации.
источник
Управление настройками, похоже, является одной из тех вещей, которые переделываются с нуля для каждой игры, возможно, из-за того, насколько она проста и высокой вариативности в типах необходимых настроек. Предполагая, что у вас приличная настройка бэкэнда хранилища (SQL / что угодно), вы можете за один-два дня создать надежное решение для управления настройками, чтобы в промежуточном программном обеспечении не было особой необходимости для бизнеса. Я считаю, что в большинстве случаев лучше всего использовать его для хранения информации об игроке.
источник
В последнее время я действительно думал об этом, и я думаю, что он был бы отличным кандидатом на приложение для Android в сочетании с небольшой библиотекой на любом языке, который вы хотите . Приложение будет настраиваемым набором кнопок, переключателей, выпадающих меню и т. Д. (Любой виджет, который вы хотите), и оно будет отправлять действия через WLAN (или USB, если вы хотите усложнить ситуацию) в библиотеку. Библиотека создала бы отдельный поток от игрового процесса и знала бы, какие элементы управления на телефоне Android соответствуют каким переменным в игре (вы установили бы их в своем коде запуска) и была бы подключена к приложению Android.
Тогда связываться с вашей игрой так же просто, как касаться вещей на вашем телефоне. У вас даже могут быть текстовые поля на телефоне, которые показывают значения переменных в реальном времени из игры, или вы можете переместить библиотеку вперед
stdin
илиstderr
прокрутить текстовую область на телефоне. Варианты безграничны!Единственная реальная проблема - со скоростью. Если скорость и время реакции имеют решающее значение, тогда вы просто подключите телефон через USB, и adb (отладчик Android) поддерживает переадресацию портов через USB на телефон. Но в противном случае WLAN будет иметь очень маленькую задержку, которая, я думаю, будет вполне приемлемой для этой цели.
Я не думаю, что такая вещь, как вышеприведенная, была написана, но я настоятельно хотел написать это. (Я просто еще недостаточно углубился в разработку собственных игр, чтобы в этом нуждаться)
Конечно, те из вас, кто является пользователями Apple, могут сделать то же самое с вашими iDevices. Лично я нахожу, что разработка iOS на несколько порядков сложнее, чем разработка Android, и, конечно, вышеупомянутое приложение может быть легко опубликовано на рынке Android для удобного распространения, в то время как Apple, вероятно, не допустит инструмент разработчика в магазин приложений, поэтому я чувствую, что платформа Android лучше подходит для этого инструмента.
источник