LINUX.ORG.RU

Стандарт размещения файлов в директориях. Уровни игры.


2

2

Пробую оформить свою игру в виде *.deb пакета. Не очень понимаю, в какую директорию можно свалить файлы уровней/персонажей/прочей бинарщины.

Какая директория для этого лучше всего подойдет? В каком стандарте про это можно подробно почитать?

★★★★★
Ответ на: комментарий от yvv

Хотелось бы ссылку на существующий стандарт, где черным по английскому об этом было бы написано.

trex6 ★★★★★
() автор топика

/usr/local/share/директория_вашей_игры << для файлов игры (звуки, модели, общие конфиги, прочее...).
/usr/local/bin/директория_вашей_игры << для бинарника
/usr/local/include/директория_вашей_игры и /usr/local/src/директория_вашей_игры << для исходников
/usr/local/lib/директория_вашей_игры << для библиотек
~/директория_вашей_игры << для пользовательских конфигов

makeB
()
Ответ на: комментарий от trex6

Хотелось бы ссылку на существующий стандарт, где черным по английскому об этом было бы написано.

FHS 2.3

Any program or package which contains or requires data that doesn't need to be modified should store that data in /usr/share (or /usr/local/share, if installed locally). It is recommended that a subdirectory be used in /usr/share for this purpose.

Game data stored in /usr/share/games must be purely static data. Any modifiable files, such as score files, game play logs, and so forth, should be placed in /var/games.

static_lab ★★★★★
()

А если хочешь потроллить, то создай тему, в которой опишешь намерения сбросить все в ~/ или еще лучше в /boot + линк в /bin, велика вероятность, что начнут угрожать расправой :]

makeB
()
Ответ на: комментарий от makeB
Это будет в особой версии пакета:
megagame_0.0-0-hardcore.deb
trex6 ★★★★★
() автор топика

Как уже сказали, статические данные /usr/share/<app>. Для файлов пользователя, насколько я понимаю, нужно пользовать ~/.local/share/<app>, подразумевая, что её изначально нет. Любой DLC, скриншоты, savegame должны отправляться туда.

Dendy ★★★★★
()
Последнее исправление: Dendy (всего исправлений: 1)

Клади в /applications/<urgamename>/data.

anonymous
()
Ответ на: комментарий от makeB

~/директория_вашей_игры << для пользовательских конфигов

Нет, нет, и ещё раз нет! И ещё раз нет!

Пользовательские конфиги по современным требованиям FDO кладутся в ~/.config/$vendor_name/$app_name или просто ~/.config/$app_name

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

Пользовательские конфиги по современным требованиям FDO кладутся в ~/.config/$vendor_name/$app_name или просто ~/.config/$app_name

Нет, нет, и ещё раз нет! И ещё раз нет!

Пользовательские конфиги по современным требованиям FDO кладутся в $XDG_CONFIG_HOME. И только если она не определена, то в ~/.config.

anonymous
()
Ответ на: комментарий от makeB

/usr/local
deb

Сударь, да вы же упороты. Класть с пакета в /usr/local это моветон.

anonymous
()

man hier почему не упомянули?

советую делать так:

класть весь контент игры в $INSTALL_PREFIX/share/$APP_NAME, доки в $INSTALL_PREFIX/share/doc/$APP_NAME, бинарник(и) в $INSTALL_PREFIX/bin

$INSTALL_PREFIX получаем при конфигурировании системы сборки (аля ./configure --prefix=/usr, по умолчанию обычно делают /usr/local, а когда собираются пакеты, указывают /usr) — то есть подразумевается, что во всей программе будут использованы абсолютные пути, а не относительно бинарника или ещё чего-то.

можно добавить возможность указать префикс опцией --prefix самому бинарнику (или через переменную окружения GAMENAME_PREFIX), таким образом будет возможность распространять в форме простых архивов со всеми каталогами (bin, usr) и простым скриптом рядом:

#!/bin/sh
./bin/gamename --prefix .
#вариант с переменной окружения:
GAMENAME_PREFIX=. ./bin/gamename

конфиги пользователя хранить в директории, которую получаем чтением переменной окружения $XDG_CONFIG_HOME

jeuta ★★★★
()

XDG_CONFIG_HOME = HOME/.config/
XDG_DATA_HOME = HOME/.local/share
XDG_DATA_DIRS = /usr/local/share/:/usr/share

frozenix ★★★
()
Последнее исправление: frozenix (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.