LINUX.ORG.RU

Как из MVP сделать библиотеку?

 ,


0

1

Написал MVP на плюсах с зависимостями от других библиотек и фреймворков, как бы сделать библиотеку из всего этого кода? Чтобы потом импортировать ее в любую программу на плюсах и она работала. И какие подводные?

Ну если ты правда сам написал, то тебе на этой стадии уже должно быть очевидно.

И какие подводные?

Глобальные переменные. Библиотечный код может вызываться повторно, и должен быть готов к тому, что состояние уже не Эчистое". Кроме того, глобальные переменные вне неймспейсов могут конфликтовать с пользовательским кодом.

Конфликты библиотек - либу, использующую, скажем Qt6, не получится использовать в приложении с Qt5.

Вызовы exit, _exit, abort, и т.п. - в библиотеке такой код будет ронять и использующее либу приложение.

Гарантии потокобезопасности - нужно определиться, нужны ли они и какие (reentrant, thread-safe)

annulen ★★★★★
()

Скомпилируй код игры в отдельную .so. И импортируй куда угодно предварительно добавив в свою .so вместо main иную функцию запуска библиотечного кода. Только вот зачем, у тебя же конечное приложение, а не игровое двигло =)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от annulen

вот например m основание различных играющих символов, тогда m^15(m в степени 15 различных комбинаций) сейчас у меня 243 выигрышных линий по 5 в строку. 3x5, 3*3*3*3*3 вариантов. Надо в базу данных занести допустим m=7, 7^15 степени вариантов 4 триллиона вариантов - потом считать совпавшие и считать как отнимать за спин, сколько добавлять за один символ играющий сколько за другой, еще wild символы и бонус символы.

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 2)
Ответ на: комментарий от bad_master

Импортировать модель слотов и миниигру и интерфейс под свои коэффициенты выигрыша

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

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

annulen ★★★★★
()
Ответ на: комментарий от bad_master

Ну вот есть у тебя в программе функция main она запускает твою игру, для библиотеки переименовываешь её например в libmain в заголовочном файле к библиотеке прописываешь её и всё. Собственно всё дальше собираешь свою программу как библиотеку. Только вот беда, твоя программа просто будет открываться отдельным окном из другой программы, а ты хочешь встраивания. Для этого твоя игра должна уметь рисовать не просто в окно, а в предоставленную другим приложением область, текстуру или qtcanvas (или как там оно) для этого нужна ещё функция инициализации что-бы другое приложение пробросило в твою игру куда рисовать, какой у этого «куда» размер и всё остальное воод/вывод, также твоя библиотека должна сообщать основному приложению данные что там в твоей игре происходит и принимать данные в себя, также твоя запущенная игра не должна блокировать работу другого приложения, для этого нужно запускать её в отдельном потоке например, но тогда встают ещё вопросы синхронизации и проброса контекста opengl. Короче просто вот так взять и собрать можно, но работать оно будет как отдельное приложение, а не как библиотека, ну ещё и выше сказали если в игре есть хоть одна глобальная переменная на всю игру, то так как это библиотека будет две копии игры начнут влиять на работу друг друга. Эх. Просто сделай просто игру, ну или садись расчехляй гугол и вперёд и с песней всё по новой вноси кучу большую правок.

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

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Для себя в основном за 5 баксов штука в windows store и остальным если напрягутся и освоят тоже самое на моих дрожжах

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 1)
Ответ на: комментарий от annulen

типа ты будешь физику шутера сам писать - на это уйдет куева туча лет, нет ты возьмешь например unreal или там creation engine, havok

bad_master
() автор топика
Последнее исправление: bad_master (всего исправлений: 2)

Написал MVP на плюсах с зависимостями от других библиотек и фреймворков, как бы сделать библиотеку из всего этого кода? Чтобы потом импортировать ее в любую программу на плюсах и она работала.

g++ -c MVP.cpp -o MVP.o
g++ MVP.o -shared -o MVP.so

например.

И какие подводные?

Сделать файл заголовков и readme.txt в котором описать зависимости

PS Мой процент с монетизации можешь заносить в ближайший детский дом.

kindof
()