Aplicación Práctica - Organización

Aplicación Práctica - Organización - Tu aplicación tiene que vivir en algún sitio (Cacheado)


Tu aplicación tiene que vivir en algún sitio. En Windows probablemente tendrás un bonito instalador MSI que por defecto le dice un directorio en Archivos de Programa. En Linux probablemente terminará estando en algún lugar en /usr/local o /opt. Pero de cualquier manera, nunca deberías asumir que una cosa esta en un cierto lugar en la máquina del usuario. Incluso no puedes esperar que el usuario instale la aplicación en C:\Archivos de Programa.

Así que, tienes que hacer esto en ese caso

  • Operar usando sólo rutas relativas desde la raíz de la aplicación
  • Usar localización convencionales del sistema de dependencia para guardar la configuración de la aplicación y los datos modificables por el usuario.

Querrás instalar el ejecutable de tu juego en la raíz de cualquier directorio que te especifique el usuario. Por ejemplo, si tu juego se instala en C:\Program Files\MyGameCompany\ReallyCoolFPS entonces tu ejecutable principal debería estar en C:\Program Files\MyGameCompany\ReallyCoolFPS\game.exe. En el código de tu juego deberías hacer referencia a otros recursos y módulos ejecutables de manera relativa a este. Por ejemplo, deberías guardar tus mapas en C:\Program Files\MyGameCompany\ReallyCoolFPS\maps. En cualquier lugar de tu código, cuando quieras recibir algún mapa de tu carpeta maps/, usa "maps/" y no "C:\Program Files\MyGameCompany\ReallyCoolFPS\maps". Mejor todavía, hacerlo en un almacenado constante en un archivo principal de definición accedido por todos los archivos del código que lo necesiten, así para que puedas cambiarlo fácilmente (en vez de intentar encontrar los 624 lugares diferentes donde lo has referenciado). Esto falla cae bajo la recomendación de "mejor práctica", así que probablemente ya lo haces o no? ;-) también resístete fuertemente a instalar algo en el sistema de directorios; Es una recomendación para mantener limpio y desinstalar terminando a si con el infierno de las DLL incluso si el Sistema Operativo o los esquemas de objetos compartidos te estan ayudando. Mantén todo lo que necesites a mano, significa que pongas todo en tu MSI o RPM bajo la raíz de instalación de la aplicación; tu ejecutable está seguro de encontrar lo que le has mandado y tendrás control explícito sobre que versiones del módulo estás usando (porque no lo sabes cuando dependes de la búsqueda de rutas dinámicamente enlazadas).

El otro hecho referido a no tener siempre acceso de escritura al directorio de instalación del juego. Windows XP Home me viene a la mente, así las aplicaciones instaladas por el root a /usr/local (normalmente no escritas por la cuenta de usuario). Tienes que escribir los datos de configuración y los datos definidos por el usuario al lugar en cada sistema definido a este propósito. En Linux puedes crear cualquier cosa bajo $HOME (accesible usando el sistema getenv() del API), y sobre Windows querrás usar la carpeta de Datos de Aplicación, bajo \Documents And Settings\<nombre_usuario> y \Documents And Settings\<nombre_usuario>\Local Settings - conseguirás esta información usando el API SHGetFolderPath(), como verás. [De manera alternativa puedes usar char *userpath = getenv( "USERPROFILE" ) sobre el sistema Windows.] De cualquier modo, querrás crear un subdirectorio en este directorio para guardar tus datos de aplicación específicos para el usuario.

Más alla de eso está como tienes que organizar tu código de aplicación y los módulos de datos y directorios.