Безопасный исходный код плеера

Безопасный исходный код плеера

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

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

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

Как собрать исходник в OC Windows я написал в отдельной теме - Сборка плеера(classic) под Windows

За основу взят последний свежий исходный код на сегодня - v5.9.4-b1

1. Изменить названия плеера.
2. Изменить значок .exe файла.
3. Изменить путь к auto.qsp
4. Изменить название qspgui.cfg
5. Убрать верхний toolbar и сохранить qspgui.cfg в исходник
6. Esc - fullscreen
7. Удаления апдейта.

Изменено: archi1703
27.Сен.25 19:30:58
Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

1. Смена названия плеера -
В файле ...\qspgui\frame.h
Редактируем строку -

Код:

#define QSP_LOGO "Quest Soft Player " QSPGUI_VER_STR

Например:

Код:

#define QSP_LOGO "My Best Game"

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

2. Смена значка .exe файла (так же меняется значок самого окна плеера).
...\misc\common\icons\logo.ico
меняем картинку при этом придерживаемся правил
1. 64x64 пикселя
2. Расширение - .ico
3. Название - logo

ВАЖНО! - Может показаться что сменилась только картинка окна плеера, при этом .exe остался старый.
Это как я понял в моем случае на Windows связано с тем что старые .exe иконки хранятся в хеше операционной системе.
Для того чтоб увидеть изменения, нужно обновить хеш или переименовать файл игры. Для других пользователей иконка будет новой, Вам же прийдется перезагрузить комп или использовать команду по сбросу хеша которую я допишу когда вспомню (пока просто меняйте название файлов и это самый быстрый способ увидеть изменения иконок).

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

3. Изменить путь к auto.qsp.
В файле ...\qspgui\app.cpp - в самом конце есть строчка -

Код:

wxFileName autoPath(wxT("auto.qsp"));

меняем на ту которую нам надо (можно переименовать файл для автозапуска и прописать путь) -

Код:

wxFileName autoPath(wxT("data/game.qsp"));

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

4. Изменить название qspgui.cfg файла на свое.
В файле ...\qspgui\comtools.h - есть строчка -

Код:

define QSP_CONFIG wxT("qspgui.cfg")

меняем ее на свое название и все ок -

Код:

#define QSP_CONFIG wxT("system/config.cfg")

В данном случае папки не будет, файл приклеен к .exe и создастся в конце только config.cfg

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

5. Убрать верхний toolbar
В файле frame.cpp закомментировал эти строки -

Код:

/*

menuBar->Append(m_fileMenu, wxT("-"));
menuBar->Append(m_gameMenu, wxT("-"));
menuBar->Append(m_settingsMenu, wxT("-"));
menuBar->Append(helpMenu, wxT("-"));
*/

меню пропало, но функционал в мести с ним, изза чего нужно установить все настройки заранее и сохранить в файле qspgui.cfg и перенести данные в наш исходник. Ниже есть страка куда мы все копируем:

Код:

 wxString panels(wxT("layout2|") \

         wxT("name=imgview;caption=Preview;state=1080034303;dir=1;layer=0;row=0;pos=0;prop=100000;bestw=832;besth=150;minw=50;minh=50;maxw=-1;maxh=-1;floatx=175;floaty=148;floatw=518;floath=372|") \
         wxT("name=desc;caption=;state=768;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=915;besth=554;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|") \
         wxT("name=objs;caption=Objects;state=6292478;dir=2;layer=1;row=0;pos=0;prop=100000;bestw=50;besth=720;minw=50;minh=50;maxw=-1;maxh=-1;floatx=1826;floaty=49;floatw=400;floath=250|") \
         wxT("name=acts;caption=Actions;state=6292476;dir=3;layer=0;row=3;pos=0;prop=117349;bestw=915;besth=160;minw=50;minh=50;maxw=-1;maxh=-1;floatx=707;floaty=1022;floatw=400;floath=250|") \
         wxT("name=vars;caption=Additional desc;state=6292476;dir=4;layer=2;row=0;pos=0;prop=82651;bestw=354;besth=720;minw=50;minh=50;maxw=-1;maxh=-1;floatx=-78;floaty=434;floatw=400;floath=250|") \
         wxT("name=input;caption=Input area;state=2098174;dir=3;layer=0;row=4;pos=0;prop=100000;bestw=1275;besth=39;minw=50;minh=20;maxw=-1;maxh=-1;floatx=404;floaty=812;floatw=400;floath=250|") \
         wxT("dock_size(5,0,0)=22|dock_size(3,0,3)=162|dock_size(4,2,0)=356|"));

Предварительно подогнать данные с файла к виду кода.

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

Мне данная тема очень интересна т.к. сам сейчас выбираю движок для своей игры между Renpy и QSP. QSP подходит больше, но я не программист и боюсь лезть в исходники.
Как и вас интересуют как можно убрать верхнее меню т.к. небходимости в нём нет если игра запускается с exe-шника. Такую игру проще распространять ведь даже в моём кругу общения людей которым под 40, многие не знают про текстовые игры и QSP. Ну и тем кто хочет попасть в тот же Steam меню наверно не мешало бы убрать (ведь в Steam можно? Я правильно понял условия лицензии? (Сам я не претендую, если чтоsmile)).
Ещё интересует список системных переменных. Что-то не смог его найти. Или в видео курсе от Алекса все показаны?
Хотелось бы узнать, можно ли запретить пользователю менять размеры окна плеера, или хотя бы сделать так, чтобы соотношение сторон сохранялось. А лучше чтобы игра сразу запускалась в полный экран.

Ridden
useravatar
Offline
1 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

Ridden, верхнее меню убрал выше в теме.

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

Насчет системных переменных, то в видео показаны все основные. Так-то можно про них прочитать в справках. Я пользуюсь справкой которая устарела - Справка - qsp564help.zip для 5.7.0 плееров и там появилась новая для новых 5.9.0 (+) плееров.
Для меня очень удобно вызывать ее из под Qgen 1 кнопкой. Главное не перепутайте справки под версию вашего плеера, так как могут отличаться команды.
Так же есть на сайте онлайн версия справки - Wiki

Размеры окна, как и соотношение сторон это не про классик, резиновый интерфейс как я понял ток с помощью CSS, а его в классике не будет. Как я понял плеер сделали для тестирования игр или хз зачем, хотите большего - качайте недоделанные альтернативные плееры с поддержкой HTML,CSS и JS которые энтузиасты делают и потом бросают. Но тут не все так плохо, с каждым разом плееры становятся все лучше, думаю лет через 5 уже будет достойный вариант.

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

На счет запретить менять размеры окна, скорее нет. Окно на то и окно чтоб менялось разрешение. Максимум можно увеличить минимальный размер окна, чтоб оно не складывалось под телефон и не сильно ломало игру (к примеру под размер HD экрана, ~1000х680).
У классика есть только недоделанный HTML, сейчас вот почти научил таблицы растягиваться по высоте (костыль на костыле).

Если хочется красиво то пожалуй Renpy будет идеален в плане оформления, но я не смог на нем писать, то что я хотел в него засунуть жутко тормозило и как оказалось у меня аллергия на код питона (я в С++ быстрее нашел все что искал, и это при том что код в 1-й рас увидел).
Я тоже далеко не программист, так что решил пока писать на qsp под классик. Извращаться с новыми* плеерами не хочеться, а костыли создавать весело. Как хобби сойдёт  big_smile .

p.s. Я рас 5 уходил на ренпай и возвращаюсь обратно. Попробуйте писать игру паралельно на 2х платформах, в какой-то момент выбор между ними не заставит себя ждать.

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

6. Esc - fullscreen
В файле frame.cpp - есть код:

Код:

// Exit fullscreen mode

if (IsFullScreen() && event.GetKeyCode() == WXK_ESCAPE)
{
  ShowFullScreen(false);
   return;
}

Дописываем условия и сохранем:

Код:

// Exit fullscreen mode

if (IsFullScreen() && event.GetKeyCode() == WXK_ESCAPE)
{
    ShowFullScreen(false);
    return;
}
else
{
    ShowFullScreen(true);
    return;
}

Теперь кнопкой ESC вы можете открывать и закрывать fullscreen режим.
В идеале повесить на кнопку вызов меню в котором будет стандартный набор новая игра, загрузить\сохранить, полный экран и выход, но это уже сложно.

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Безопасный исходный код плеера

7. Удаления апдейта.
При каждом запуске плеера всплывает табличка - Доступно новое обновление?
Мы сменили название плеера и удали его версию, из-за чего плеер думает что у него версия 0.0.0, и постоянно пытается обновиться.
В файле frame.cpp - нужно закомментировать (или удалить) кусок кода -

Код:

/*

UpdateAppDialog dialog(this, _("Update available"),
latestVersion, releaseNotes, releaseUrl);
dialog.CenterOnParent();
if (dialog.ShowModal() == wxID_OK)
wxLaunchDefaultBrowser(releaseUrl);
*/

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

Tom Run
Thomas Runner
useravatar
Offline
119 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
1062
Всего опросов:
14
Всего сообщений:
16791271
Бездействующий:
Пользователи форума:
 
Всего пользователей:
2889
Последним зарегистрировался:
wano765