Вопрос: есть ли способ быстро и легко перерабатывать и интегрировать проекты графического интерфейса для игры C++/SDL2, которая не разрабатывается внутри игрового движка?
Я делаю игру на C++/SDL2. Это текстовая ролевая игра, поэтому она не отличается высокой производительностью, но я использую проект с открытым исходным кодом C++ в качестве основы с момента создания игры, и портирование десятков тысяч строк кода на другой язык не является проблемой. Это реалистичный вариант. Я приближаюсь к моменту, когда мне придется пересмотреть существующий графический интерфейс игры: изменить и переработать меню, добавить значки на границы игры и так далее. Устаревшие меню многочисленны, жестко запрограммированы и в большинстве случаев выглядят плохо. Я хочу, чтобы у моей игры был лучший графический интерфейс, но я уже знаю, что прописание каждой строки каждого меню в коде будет очень трудоемким и, скорее всего, даст плохие результаты.
Многие современные Разработчики игр, похоже, создают свой пользовательский интерфейс вместе со своей игрой в рамках установленного игрового движка, например Unity, или своего собственного индивидуального решения. Но полный перенос моего проекта на движок занял бы довольно много времени, и его было бы трудно оправдать, если бы единственным преимуществом было упрощение разработки графического интерфейса.
Вот некоторые из вещей, с которыми я экспериментировал ранее.
Я пытался посмотреть, смогу ли я создавать меню в Godot, а затем экспортировать их. Мне не удалось это сделать, но это было чуть больше года назад, поэтому подробностей я не знаю. ChatGPT кажется весьма оптимистичным по поводу того, что это может сработать, но, только что пересмотрев документацию, я не думаю, что согласен.
Я тоже пытался посмотрим, смогу ли я запустить элементы графического интерфейса в проекте Godot и связать их с кодом моего игрового движка, причем последний будет представлен как библиотека. Я думаю, что это должно быть возможно, но я, вероятно, недостаточно хорошо знал Годо, чтобы это сработало, когда я попробовал.
ImGui — это хорошая библиотека графического интерфейса с большим количеством примеров кода. Мне удалось интегрировать его в свой код рендеринга, только чтобы понять, что вся моя игра была построена на рендеринге с сохранением режима и поэтому несовместима с подходом немедленного режима ImGui. Осмелюсь предположить, что я мог бы переделать код своей игры, но, возможно, это того не стоит. Кажется, существует широкое мнение, что, хотя ImGui может создавать фантастические инструменты редактирования и интерфейсы игровых движков, он не работает, когда используется для создания графических интерфейсов конечного пользователя, таких как те, которые используются в играх.
Qt и wxWidgets так и не вышли из стартовой панели — их слишком сложно настроить и интегрировать с моим собственным проектом. Казалось бы, бесконечные зависимости и сообщения об ошибках слишком раздражают меня.
Некоторые вещи я собираюсь попробовать в ближайшие несколько дней. недель.
Разработчик веб-приложений рассказал мне, что Claude AI может принимать макеты меню в качестве входных данных и генерировать код (Java, C++, что угодно) в качестве вывода. Честно говоря, это звучит слишком хорошо, чтобы быть правдой, но он клянется, что делает это сам. Я узнаю это сам через несколько недель, когда вернусь в страну, где я смогу настроить свою собственную учетную запись (мне нужно иметь возможность получать SMS).
Существует приложение Rive (https://rive.app), которое обещает позволить вам создавать пользовательский интерфейс и графику, а также экспортировать их. Кажется, нет никакой причины, почему это не сработает, но я уже делал это слишком много раз, поэтому не питаю больших надежд.
РЕДАКТИРОВАТЬ: Разумеется, для использования Rive требуется библиотека времени выполнения, и, хотя существуют среды выполнения для различных комбинаций платформы и средства рендеринга, нет никаких возможностей для серверной части C++/ Приложение SDL2, работающее без средства рендеринга. Чтобы использовать Rive, мне нужно было бы начать использовать что-то вроде OpenGL 4.2.
[b]Вопрос: есть ли способ быстро и легко перерабатывать и интегрировать проекты графического интерфейса для игры C++/SDL2, которая не разрабатывается внутри игрового движка?[/b] Я делаю игру на C++/SDL2. Это текстовая ролевая игра, поэтому она не отличается высокой производительностью, но я использую проект с открытым исходным кодом C++ в качестве основы с момента создания игры, и портирование десятков тысяч строк кода на другой язык не является проблемой. Это реалистичный вариант. Я приближаюсь к моменту, когда мне придется пересмотреть существующий графический интерфейс игры: изменить и переработать меню, добавить значки на границы игры и так далее. Устаревшие меню многочисленны, жестко запрограммированы и в большинстве случаев выглядят плохо. Я хочу, чтобы у моей игры был лучший графический интерфейс, но я уже знаю, что прописание каждой строки каждого меню в коде будет очень трудоемким и, скорее всего, даст плохие результаты. Многие современные Разработчики игр, похоже, создают свой пользовательский интерфейс вместе со своей игрой в рамках установленного игрового движка, например Unity, или своего собственного индивидуального решения. Но полный перенос моего проекта на движок занял бы довольно много времени, и его было бы трудно оправдать, если бы единственным преимуществом было упрощение разработки графического интерфейса. Вот некоторые из вещей, с которыми я экспериментировал ранее. [list] [*]Я пытался посмотреть, смогу ли я создавать меню в Godot, а затем экспортировать их. Мне не удалось это сделать, но это было чуть больше года назад, поэтому подробностей я не знаю. ChatGPT кажется весьма оптимистичным по поводу того, что это может сработать, но, только что пересмотрев документацию, я не думаю, что согласен.
[*]Я тоже пытался посмотрим, смогу ли я запустить элементы графического интерфейса в проекте Godot и связать их с кодом моего игрового движка, причем последний будет представлен как библиотека. Я думаю, что это должно быть возможно, но я, вероятно, недостаточно хорошо знал Годо, чтобы это сработало, когда я попробовал.
[*]ImGui — это хорошая библиотека графического интерфейса с большим количеством примеров кода. Мне удалось интегрировать его в свой код рендеринга, только чтобы понять, что вся моя игра была построена на рендеринге с сохранением режима и поэтому несовместима с подходом немедленного режима ImGui. Осмелюсь предположить, что я мог бы переделать код своей игры, но, возможно, это того не стоит. Кажется, существует широкое мнение, что, хотя ImGui может создавать фантастические инструменты редактирования и интерфейсы игровых движков, он не работает, когда используется для создания графических интерфейсов конечного пользователя, таких как те, которые используются в играх.
Qt и wxWidgets так и не вышли из стартовой панели — их слишком сложно настроить и интегрировать с моим собственным проектом. Казалось бы, бесконечные зависимости и сообщения об ошибках слишком раздражают меня.
[/list] Некоторые вещи я собираюсь попробовать в ближайшие несколько дней. недель. [list] [*]Разработчик веб-приложений рассказал мне, что Claude AI может принимать макеты меню в качестве входных данных и генерировать код (Java, C++, что угодно) в качестве вывода. Честно говоря, это звучит слишком хорошо, чтобы быть правдой, но он клянется, что делает это сам. Я узнаю это сам через несколько недель, когда вернусь в страну, где я смогу настроить свою собственную учетную запись (мне нужно иметь возможность получать SMS).
[*]Существует приложение Rive (https://rive.app), которое обещает позволить вам создавать пользовательский интерфейс и графику, а также экспортировать их. Кажется, нет никакой причины, почему это не сработает, но я уже делал это слишком много раз, поэтому не питаю больших надежд. [/list] РЕДАКТИРОВАТЬ: Разумеется, для использования Rive требуется библиотека времени выполнения, и, хотя существуют среды выполнения для различных комбинаций платформы и средства рендеринга, нет никаких возможностей для серверной части C++/ Приложение SDL2, работающее без средства рендеринга. Чтобы использовать Rive, мне нужно было бы начать использовать что-то вроде OpenGL 4.2.