понедельник, 11 июля 2011 г.

Ogre3D. Practical Application - Организация

Организация [или спасибо кэп]
Ваша программа должна где-то находиться. В Windows у вас скорее всего будет красивый MSI установщик, который запихнёт вашу игру куда-то в Program Files. В Linux это вероятно /usr/local или /opt tree. Но в любом случае вы не должны устанавливать игру в системные папки.

Всё, что вы должны запомнить это:
  • Располагать файлы игры только в папке данного приложения
  • Использовать относительные пути к файлам проекта

Запускаемый .exe файл будет удобно разместить в корне директории приложения, которую выберет пользователь. Например, если игра установлена в C:\Program Files\MyGameCompany\ReallyCoolFPS тогда .exe файл должен находиться в C:\Program Files\MyGameCompany\ReallyCoolFPS\game.exe. В коде ты всегда будешь ссылаться на ресурсы и модули в виде относительных путей. Например, если в папке C:\Program Files\MyGameCompany\ReallyCoolFPS\maps находятся карты в любом месте кода программы ты должен будешь указывать относительный путь к этой папке - "maps/", а не "C:\Program Files\MyGameCompany\ReallyCoolFPS\maps". Лучше всего хранить путь к директории игры, как константу, доступную из любых модулей игры, тогда её будет легко изменить (вместо того, чтобы искать 624 места в коде, куда ты её впечатал). Это считается хорошим правилом программирования, я надеюсь вы всегда так и делаете. Так же лучше ничего не устанавливать в системную директорию, это вызовет кучу проблем при удалении приложения и DLL-помойку, даже если у вас есть хитрый план, по которому вы назовёте файлы. Держите всё под рукой, в смысле помещайте всё в MSI или RPM установщик приложения. Это позволяет легко найти запускаемый файл и помогает следить за используемыми модулями и их версиями.

С другой стороны вы не всегда можете быть уверены в доступности чтения/записи в директорию приложения. В Windows XP Home например, или в папке /usr/local, куда приложение было установлено под рутом. Так, что вы должны написать конфигурацию для записи пользовательских данных в определённое место для каждой системы. На Linux вы можете создать что угодно в $HOME (доступно через использование getenv() system API), на Windows используется Application Data Folder через \Documents And Settings\ и \Documents And Settings\Local Settings эту информацию можно получить используя SHGetFolderPath() API. [Так же можно использовать char *userpath = getenv( "USERPROFILE" ) на Windows]. В любом случае нужно создать поддиректорию и хранить там дынные своего приложения.

Ogre3D Beginner Tutorial without the ExampleApplication framework

Появилась идея заняться разработкой игр, в связи с чем начали осваивать и выбирать графический движок. В основном нас заинтересовали Unity3D, Ogre3d и UDK (может быть ещё XNA). Наткнувшись на гайд по Ogre решил его перевести для себя. Пусть будет криво, но будет. Я потренируюсь в переводе и необходимость закончить перевод будет дополнительным стимулом изучить Огра.

Введение (о чём этот гайд)
Организация (или спасибо кэп)