Блоги :: Колонка пользователя Devil George :: Создание своего 3D шутера без зн. яз. программирования.

 
 
 
PSP Club
Разделы портала

Поиск




Авторские колонки о PSP - Расскажи всем о своих впечатлениях
Колонки / Блоги пользователей PSP-Club.Ru

Создание своего 3D шутера без зн. яз. программирования.

Автор: Devil George | Пишет Инструкции Инструкции | Опубликовано 20.05.2007 21:31

CODE************************************************** *****************y DDDD U U N N GGG EEEEE OOO N N SSS *** D D U U NN N G G E O O NN N S ** D D U U N N N G E O O N N N SS ** D D U U N N N G GG EEEE O O N N N S ** D D U U N NN G G E O O N NN S *** DDDD UUU N N GGG EEEEE OOO N N SSS x*************************************************** **************** (С)Be3fDesign =))
Примечание: в этом мануале так много букв не потому, что всё очень сложно (как-раз наоборот - достаточно просто!), а потому, что я старался расписать всё максимально подробно, чтобы потом по 100 раз не отвечать на одинаковые вопросы!
Вступление:
Homebrew-движок Dungeons 3D Engine, разрабатываемый немцем Christoph Arnold (aka Charnold)- быстр, хорошо отлажен (практически безглючен и стабилен) и, при этом, выдаёт хорошую 3D графику, и, что для нас самое главное - почти полоностью модифицирумый! Мы можем изменить практически весь игровой контент, создав свою игру на движке, не прибегая к программированию и к другим методам, требующим серьёзной подготовки! Всё, что вам нужно, чтобы создать хороший мод для Dungeons - это компьютер и PSP, желание творить и немного воображения, и ещё - нужно внимательно прочитать этот мануал.Чтобы ещё больше развеять ваши сомнения в простоте маппинга/моддинга под Dungeons, скажу, что я сам разобрался в этом деле примерно за час-полтора без каких-либо мануалов, описаний, или подсказок - просто изучив map.txt'шки и остальное содержимое архива с Dungeons, тогда ещё версии 0.4 (последняя на сегодня версия - 0.7), после чего я сделал первый мод - Dark Dungeons и, зарелизив его, начал общатся с Charnold'ом, предлагая новые фичи, особенно - сделать движок более модифицируемым в следующем релизе... И вот, с выходом версии 0.6 стало выходить множество интересных модов для неё (и я обновил Dark Dungeons до версии 1.6), на форуме qj образовалось нечто вроде небольшого "Dungeons Modding Community" из 5-ти человек: Frack, Drew Medina, ELDom, VettaCrossX и, собсно, Be3f =) Под новый год Charnold выпустил новую версию Данженов 0.7, Frack обновил свой отличный мод до версии 3, а я сделал новый - Serious Dungeons (Dark Mod не забыт, просто временно отложен...).В этом мануале я расскажу про все этапы разработки мода для Данженов - от создания карт до упаковки EBOOT, так что, прочитав его, вы сможете изменить игру до неузнаваемости! B)Для начала вам потребуются установленные на PC программы:
-Текстовый редактор. Подойдёт и блокнот, встроенный в Виндоус, но я рекомендую раменить его на Notepad++-IrfanView (для работы с текстурами) + (по-желанию) Fotoshop (редактирование текстур).-SoundForge (для работы с озвучкой) + (по-желанию) кодек ATRAC3 (для озвучки EBOOTа)-(по-желанию) 3DSMax, или LightWave, или Maya (для 3D-моделирования)-(по-желанию) PBP-Unpacker (для сборки EBOOTа)Можно сделать приличный мод и без тех прог, что по-желанию!
Установили? Тогда качайте с оффициального сайта архивы PC_Dungeons_v0.7 и PSP_Dungeons_v0.7, распаковывайте соответственно первый на PC, а второй на Memory Stick и... впуть!
Версии Dungeons для PC и для PSP отличаются только исполняемыми файлами (Dungeons.exe и EBOOT.PBP соответственно) и библиотеками (dll'ки для PC, а для PSP prx'ы зашиты в EBOOT) + утилитой vismaker.exe для PC - т.е. содержимое папки data для обоих версий абсолютно одинаковое! Исключение - файл controls.cfg в корне папки data, отвечающий за настройки управления - он различается для PC и PSP версий. Т.е. вы можете делать мод и тестить его на PC-шной версии, а потом просто скопировать data с PC на PSP и запустить ваш мод на ЗЫЗе!Приступим же к его созданию!
 
Создаём свой уровень:
Начнём сразу с самого сложного, но и самого важного - создания своего уровня.Уровни хранятся в файлах map.txt в папке datalevels[название_уровня], редактировать их можно обычным блокнотом.Для начала, откройте уже готовый уровень, например уровень 01 (PC_Dungeons_v0.7datalevels1map.txt)Рассмотрим на его примере формат map.txt.В заголовке прописано:CODE[usevis=on]
Возможные значения этого параметра - on и off. Он отвечает за использование файла map.vis, который создаётся для оптимизации/увеличения производительности (этот файл хранит информацию о видимых и невидимых объектах на уровне). Для каждого уровня создаётся свой файл map.vis (лежит рядом с map.txt в папке с уровнем) с помощью утилиты vismaker.exe, которая лежит в корне папки PC_Dungeons_v0.7, с которой вы работаете. Если внести хотя-бы одно изменение в архитектуру уровня, map.vis придётся создавать заново (иначе на PSP уровень не загрузится). Т.к. map.vis создаётся довольно долго, особенно для больших уровней (к примеру, для уровня Sewers из Serious Dungeons у меня map.vis компилися более 3-х часов на компе с процем 3.2GHz P4!) - то во-время разработки/тестирования уровня выставите [usevis=off], и, только когда уровень будет окончательно готов (не забудьте под конец проверить его на PSP с usevis=off!) - запускайте vismaker.exe, пишите название уровня, жмите Enter и ждите пока map.vis скомпилится...  ...после чего выставите [usevis=on]. После этого нельзя будет изменить геометрию уровня (без создания map.vis заново), но можно будет переставлять/добавлять врагов, менять текстуры и озвучку. Не бойтесь тормозов на PSP и, даже, на PC (ну разве что, если у вас GF8800 + Core 2 DUO и всё-равно будет тормозить - следует задуматся об оптимизации =)), пока будите тестировать уровень с mapvis=off - эти тормоза исчезнут после создания map.vis. Но, всё-же, стоит помнить, что ресурсы ЗЫЗы ограничены и не создавать мега-монструозных уровней, которые и с map.vis будут тормозить =) - лучше ИМХО разбить их на 2-3 небольших уровня.
Едем дальше. Если хотим добавить уровню саундтек, прописываем ниже:CODE[music]xxx.wav
(Где xxx - имя трека). В один уровень можно вставить только 1 трек (будет крутится по-кругу), причём 1 трек можно присвоить нескольким уровням. Подробнее про озвучку читайте ниже.
Вернёмся к созданию уровня. Итак, загружаем текстуры, которые мы будем использовать на нашем уровне - за это отвечает секция [map_textures]. На открытом нами уровне 01 мы видим:CODE[map_textures]texture_nr_000 vram_1 mipmaps_1 pf_5650 walls/bluemetalsupport2c.bmptexture_nr_001 vram_0 mipmaps_1 pf_5650 walls/bluemetalsupport2clight.bmptexture_nr_002 vram_0 mipmaps_1 pf_5650 walls/bluemetalsupport2clight.glow.bmptexture_nr_003 vram_1 mipmaps_1 pf_5650 walls/bluemetalsupport2c_1vent.bmptexture_nr_004 vram_1 mipmaps_1 pf_5650 floors/clang_floor.bmptexture_nr_005 vram_1 mipmaps_1 pf_5650 ceilings/stucco7top.bmptexture_nr_006 vram_1 mipmaps_1 pf_5650 floors/clang_floor_ow2.bmptexture_nr_007 vram_0 mipmaps_1 pf_5650 walls/geolight_glow.bmptexture_nr_008 vram_0 mipmaps_1 pf_5650 walls/exit.bmp
Рассмотрим первую строчку:CODEtexture_nr_000 vram_1 mipmaps_1 pf_5650 walls/bluemetalsupport2c.bmp
texture_nr_000 - это номер, который мы присваеваем текстуре - любой от 000 до 999. В дальнейшем, при использовании текстуры, будем ссылатся на этот номер, а не на название текстуры (как было в ранних версиях Dungeons)vram_1 - загружать текстуру в видеопамять, или нет (если нет, то она грузится в оперативку). Соответствующие значения 0 и 1 (нет и да). Видеопамять заметно быстрее, чем системная, но её объём под текстуры в ЗЫЗ - всего 384КБайта (зато есть 24Мб Kernel оперативки!) и этого хватит только на 7 текстур 128х128 с мип-мэппингом, или на 2 в 256х256 с мипами + одну 128х128 тоже с мипами. Если будем использовать 256х256 текстуры - рекомендую для максимальной производительности выставить vram_1 для наиболее часто используемых текстур на уровне (пола и потолка), а для всех остальных текстур - vram_0. Если загрузите слишком много текстур в vram увидите жёсткие артефакты вместо текстур, запустив уровень на PSP mipmaps_1 - использовать/не использовать мип-мэппинг для текстуры. Соответственные значения - 0 и 1. Рекомендую использовать всегда (mipmaps_1). Расскажу что это такое... В компьютероной 3D-графике, при удалении текстуры от нашего глаза (например, в играх с большими открытыми пространствами), текстура постепенно становится размером больше, чем количество пикселей, отведённых ей на экране. Т.е. можно было-бы уменьшить её размер, сэкономив ресурсы видеокарты (правда, затратив больше видеопамяти), не потеряв в качестве картинки. Мипмэппинг это и делает: сначала движок генерирует несколько уменьшенных копий нашей текстуры (каждая последующая копия в 2 раза меньше предыдущей) и, по мере удаления текстуры от камеры, подставляет вместо неё мип-карту (уменьшенную копию) - чем дальше, тем меньше копия, вплоть до 1х1 пиксель. Это серьёзно повышает производительность, но требует больше видеопамяти (надо-же где-то мипы держать!). Хотя у мипмэппинга есть свои минусы - переходы между текстурами становятся заметными (с этим справляется триллинейная фильтрация текстур, но ЗЫЗ её не поддерживает), да и на расстоянии под малыми углами текстуры выглядят слишком замыленными (это решается анизотропной фильтрацией, но ЗЫЗ и её не поддерживает). И всё-таки, на ЗЫЗе лучше использовать мип-мэппинг - производительность будет значительно выше + лучше уж текстуры на расстоянии будут замыленными, чем такими резкими и зернистыми, какими они становятся без мип-мэппинга (ведь билинейной интерполяций текстуры подвергаются только при "увеличении", а при уменьшении - грубый поинт самплинг... но что-то я слишком увлёкся =) Снова вернёмся к нашему уровню.pf_5650 - формат хранения текстуры в видеопамяти. Лучше оставьте как-есть =) Возможные значения: pf_4444, pf_5551, pf_5650 и pf_8888. pf_4444, pf_5551, pf_5650 - текстура в 16-тибитном цвете в различном качестве; pf_5650 - в лучшем качестве (и, при этом, с высокой производительностью!). pf_8888 - текстура в 32-х битном цвете. Качество должно быть ещё лучше, чем у pf_5650, но я на глаз разницы не заметил, зато заметил сиильное падение производительности... Так что ставьте всегда pf_5650walls/bluemetalsupport2c.bmp - это, собсна, наша текстура =) Все текстуры хранятся в папке PC_Dungeons_v0.7datalevels_textures, при этом, как вы заметите, открыв эту папку - они могут быть разложены по папочкам по вашему усмотрению, причём папки можно создавать самому, или, наоборот, кинуть все текстуры в корень папки _textures. Разве что папку decals не трогайте и название текстур doors и standarddoors не меняюте, а с остальными можете делать, что хотите. Текстуры должны быть в формате BMP и в резрешении не выше 256x256 (выше движок не поддерживает - добавить возможность в двиг-то легко, но ЗЫЗ не потянет), рекомендую конвертить текстуры с помощью проги IrfanView. Программа простая и быстрая (в отличае от того-же фотошопа), умеет конвертировать целые группы (папки) картинок (BatchConvert - горячая кнопка B), при этом, нажмите "set advanced options" и выставите разрешение для всех текстур. Кроме того, в ней можно сделать простую обработку изображений (см. вкладку Image)...
Итак, мы загрузили текстуры - теперь наложим их на стены уровня:CODE[map_tex_characters]map_tex_char_* textureslot_1_1 use_texture_nr_000 move_0 glow_0map_tex_char_A textureslot_1_1 use_texture_nr_001 move_0 glow_0map_tex_char_A textureslot_1_2 use_texture_nr_002 move_0 glow_1map_tex_char_B textureslot_1_1 use_texture_nr_003 move_0 glow_0map_tex_char_0 textureslot_1_1 use_texture_nr_004 move_0 glow_0map_tex_char_0 textureslot_2_1 use_texture_nr_005 move_0 glow_0map_tex_char_1 textureslot_1_1 use_texture_nr_006 move_0 glow_0map_tex_char_2 textureslot_2_2 use_texture_nr_007 move_0 glow_0map_tex_char_E textureslot_1_1 use_texture_nr_008 move_0 glow_0
Опять изучим первую строку:map_tex_char_* - здесь знак * отвечает за объект, на который накладывается текстура. * - это базовые стены, как вы возможно уже догадались, заглянув вниз на [map_obj]; map_tex_char_0 - это базовый пол и потолок (чуть ниже увидите, чем они отличаются =)). Можно создавать свои типы объектов, задавая их заглавными буквами от A до Z - для стен; цифрами от 0 до 9, или строчными буквами от a до z - для пола-потолка. На этом месте вам следует взглянуть ниже на секцию [map_tex], чтобы понять, о чём идёт речь =) Внимание! Регистр в Dungeons имеет значение, т.е. если я здесь пишу что-то заглавными, или строчными буквами - значит, что надо писать именно так! В данном случае - для стен заглавные, а для пола/потолка - строчные!textureslot_1_1 - здесь цифры (1_1) обозначают, как расположить текстуру на объекте. При этом, первая цифра отвечает за плоскость, на которую накладывается текстура, а вторая - на слой текстуры (можно накладывать несколько текстур на пиксель, при этом текстуры, накладываемые сверху (цифры 2,3) становятся полупрозрачными, а первая текстура (1) остаётся как есть). Например, если нам нужно наложить базовую текстуру на пол - пишем map_tex_char_0 textureslot_1_1, а если на потолок - map_tex_char_0 textureslot_2_1. Если хотим наложить сверху ещё одну полупрозрачную текстуру на пол - textureslot_1_2, (при этом в textureslot_1_1 уже должна лежать текстура). Можете, например, наложить и 3-ю текстуру (textureslot_1_3), что может вызвать тормоза...use_texture_nr_000 - ну это, надеюсь, понятно  Если нет - перечитайте предыдущий абзац. Если всё-равно не понятно - это номер текстуры, которую мы хотим наложить (этот номер мы присваивали в [map_textures]).move_0 - это движение текстуры. Работает только для текстур, наложенных сверху (полупрозрачных, типа textureslot_1_2). Возможные значения: 0 = не движется, 1 = медлинно плывёт по оси x в + направлении, 2 = быстро x+, 3 = x- медленно, 4 = x- быстро, 5 = по y- медленно, 6 = y- быстро, 7 = y+ медленно, 8 = y+ быстро. На примере уровня Sewers из Serious Dungeons, можете увидеть, каких эффектов можно добится с помощью этого.glow_0 - это мерцание (мигание) текстуры. Анологично движению, работает только для текстур, наложенных сверху. При этом, чёрный цвет считается прозрачным. Значения: 0 = не мерцает, 1 = медленно по синусу, 2 = быстро по синусу, 3 = очень быстро по синусу, 4 = медленно линейно, 5 = быстро линейно, 6 = альфа-блендинг (при этом синий цвет - прозрачный).Накладывать сверху рекомендую текстуры в разрешении 128х128, вместо 256х256 для большей производительности. Лучший эффект, который создан для Dungeons с помощью наложения мерцающих текстур - это, пожалуй, огонь на стенах 2-го уровня мода FRACK MOD3. Как видите, одну-и-ту-же текстуру можно наложить на несколько разных объектов, что есть гуд, в плане экономии видеопамяти (и + в сравнение со более двевними версиями Dungeons)Подводя итог по map_tex_characters, приведу пример строчки, которая описывает быстро мигающую "лампочку" на отдельном (небазовом, а заданном нами) куске потолка:CODEmap_tex_char_1 textureslot_2_2 use_texture_nr_003 move_0 glow_3
Текстуры дверей - это doors.bmp для дверей, открываемых кнопками и standarddoors.bmp для отрывающихся автоматически.Если мы хотим для нашего уровня использовать нестандартные текстуры - выбираем их, загружаем (в секции[map_textures]), и пишем вот-так:CODE[door_textures]standarddoor_use_texture_nr_xxx switchdoor_use_texture_nr_yyy
, где xxx и yyy - номера текстур. Необходимо указать обе текстуры, даже если вы хотите заменить только одну, а то не заработает.
Пуфф... В замешательстве Задолбался уже писать этот мануал, хотя сделал пока меньшую часть вроде Надеюсь, вы потом меня порадуете интересными и красивыми картами!  Ладно, дальше самое интересное - собсно сам левелдизайн:Придумываем план своего будущего уровня. Смотрим, что у нас есть в map 01:
CODE[map_obj]**********************************2 ***2 ***************** **** *** 4 *****************D**** D 4 ***************** ********** **************** * 2 * **************** * ****D******************2 * ******** ****************** * ***** ****************** * ***** ******************* ** ******************* ** ******************D****D****** * **************** **** ****** * **************** ** ************** 4 **** ************** ************** ************** ************** ************** **22 a**** ** ************** ** * **** ************* ** **** 8 ****** 2 **** ** * ** ***D** *6 **** ** ** * * * *** **** 6b * ** ** ** D ********* ** * *28*** * **** ** D ***** * **** **** ** ************* D ** D 4 **1 ************* **** ** ** ************* **** **2******* 6*******6 D 4** *******y *********** *** 4 x*********************************
Не пугаютесь, всё совсем не так страшно, как кажется Уровни в Dungeons строятся из кубических блоков, модель которых вы видите на этой кхм... "картинке"  При этом, одной клетке этой "картинки" соответствуей 1 символ (объект уровня). В секции [map_obj] задаются именно объекты (стены, двери и монстры), а текстурировать мы их будем в следующем абзаце.Как я уже говорил, звёздочка (*) символизирует стены, причем здесь, где речь идёт о всех объектах без учёта текстурирования - это все стены, а не только базовые, как в случае с текстурированием (в след. абзаце)! Окружили карту звёздочками, нарисовали из них лабиринт... Пора бы обозначить начало и конец уровня. Ну здесь, к счастью, всё просто: y - вход, a x - выход. Почему так, а не наоборот - а Charnold его знает... В замешательстве Я по-началу постоянно путал =)Теперь расставим двери. D - standarddoor (открывается автоматически), H - скрытая стандартная дверь (текстурируется под соседнюю стену, подходит для секреток и засад монстров =)) Теперь двери, открываемые кнопками:
a,c,e,g,i,k,m,o = кнопки (красная такая на полу =)) b,d,f,h,j,l,n,p = двери к нимA,C,E,G,I,K,M,O = тоже двери к ним, но скрытые =)
Т.е. каждой кнопке сопоставляется дверь (a-b, или a-A, c-d... вплоть до o-O)При этом, одной кнопке может соответствовать несколько как одинаковых, так и разных дверей (видимых и скрытых) - до 16-ти дверей на одну кнопку, но не наоборот - одной двери не может соответствовать несколько кнопок.
Итак, мы нарисовали катакомбы и расставили двери - теперь стоит добаваить в наш уровень жизни! ...ну или нежити В замешательстве Монстров, короче Dungeons поддерживает 2 типа монстров: двумерные (спрайтовые) и трёхмерные (MD3 модели), лежат они соответственно в папках PC_Dungeons_v0.7dataenemies2d и PC_Dungeons_v0.7datamodels. Про моддинг монстров читайте ниже, пока будем использовать тех, что есть. Монстры задаются символами:
1 = 3D монстр, идуший вверх (пока не упрётся в стену, другого монстра, или в направляющую, или не увидит игрока)2,4,6,8 = 3D монстр, стоящий на месте и смотрящий соответственно вниз, влево, вправо, вверх (пока не увидит игрока)% = 2D монстр, идуший вверх (пока не упрётся в стену, другого монстра, или в направляющую, или не увидит игрока)",$,&,( = 2D монстр, стоящий на месте и смотрящий соответственно вниз, влево, вправо, вверх (пока не увидит игрока)|,!,<,>,,/,ґ,` = направляющие для движущихся монстров, перенаправляющие их соответственно вверх, вних, влево, вправо, вверх-влево, вверх-вправо, вниз-влево, вниз-вправо
Далее>>>
Как видите, на map 01 нет ни 2D монстров, ни движущихся монстров, ни направляющих - только стоящие-смотрящие 3D монстры. Увидеть 2D монстров, движущихся монстров и направляющие можете, например, на уровне test64_2 (откройте PC_Dungeons_v0.7datalevelstest64_2map.txt)
Важно! Движок тянет примерно до 7ми - 8ми монстров в кадре без снижения fps (на плавных 60 fps); дальше, с увеличением количества монстров в кадре, появятся лаги, так что рекомендую сажать не больше 8-ми 3D монстром в одну комнату. Спрайтовые монстры ессно гораздо легче - их можно и штук 30 и больше в комнату засадить без падения fps!
Объекты расставлены, перейдём к текстурированию. На уровне 01 мы видим:
CODE[map_tex]**********************************2 ***2 ***************** **** *** ***************** **** ***************** *A******** **************** * 2 * **************** * **** ******************2 * ******** ****************** * ***** ****************** * ***** **A**************** ** ******************* ** ****************** **** ****** * **************** **** ****** * ***************B ** *************B **** A************* ************** ************** ************** ************** **22 **** ** ************** ** B ***A B************ ** **** ****** 2 **** ** B ** *** ** * **** ** ** * * * *** ***A B ** ** ** ********* ** * *2 *** * **** ** 2 ***** * **** **** ** 1***********A* ** *A A************ **** ** ** ************* **B* ** ******A 2 ******* ** ******* 1 *********A* *** E********************************
Геометрия уровня копируется из секции [map_obj]. Для обозначения объектов, которые мы будем текстурировать в этой секции ([map_tex]), используются символы, которые мы задали в секции [map_tex_characters] с помощью map_tex_char_x (x - символ текстурируемого объекта). При этом, на базовые стены кладутся текструры, заданные в map_tex_char_*, а на пол и потолок (пробелы в секции [map_tex]) - из map_tex_char_0. Остальные символы - это заданные нами в секции [map_tex_characters] с помощью map_tex_char_ текстурируемые объекты; напомню - они задавались заглавными буквами от A до Z - для стен; цифрами от 0 до 9, или строчными буквами от a до z - для пола-потолка.Итак, наш уровень готов! Чтобы Dungeons увидел новую карту - добавьте её в список уровней в файле levels.txt (лежит в PC_Dungeons_v0.7datalevelslevels.txt). Порядок уровней в этом файле задаёт последовательность уровней в игре! Здесь-же, после уровней, можно прописать название вашего мода, которое будет отображатся в меню Dungeons:CODE[modinfo]имя_вашего_мода
Например, в Serious Dungeons файл levels.txt выглядит так:CODEHatshepsutLuXorKarnakRamsesSewers[modinfo]SERIOUS DUNGEONS (Alpha 0.3) by Be3f
Перед созданием map.vis протестируем уровень на PSP: копируем на стик map.txt + levels.txt + текстуры_для_уровня, запускаем, проходим уровень - смотрим, чтобы никакие текстуры не глючили (если попытались загрузить слишком много их в vram, увидите аццкие чудеса! =)). Теперь снова подключаем PSP к компу и открываем файл PSPGAMEDungeonsdataprotoll.txt - смотрим в нём, сколько свободной памяти осталось после загрузки вашего уровня. Если хотите потом подключить озвучку - должно быть свободно не меньше 2Мб, хотя можете и сразу тестить уровень с озвучкой, прописав вначалеCODE[music]nightmare.wav
(будет игратся звук найтмара из Quake 3, идущий в комплекте с Dungeons =)) Уровень готов, осталось только создать map.vis (описание выше)
Теперь займёмся модификацией монстров:
Как я уже говорил, Dungeons поддерживает 2 типа монстров: двумерные (спрайтовые) и трёхмерные (MD3 модели), лежат они соответственно в папках PC_Dungeons_v0.7dataenemies2d и PC_Dungeons_v0.7datamodels.
3D монстры:Поддерживается распространённый формат Quake 3 MD3 - т.е. вы сможете взять любых монстров из Quake 3: Arena, Team Arena и многих (не всех) игр на движке Q3 + тонны моделей, сделаных Quake 3 Community (фанатами)! Те модели, что идут в комплекте с Dungeons, взяты из Q3 - их можно будет удалить (сразу не удаляйте!) и заменить на любые другие. Про 3D-моделирование я рассказывать не буду, ибо это займёт в разы больше времени, чем весь этот мануал... Рассмотрим, как импортировать готовые MD3-модели в Dungeons:Берём, к примеру, Quake 3 Arena, открываем в ней файл pak0.pk3 (Quake 3baseq3pak0.pak) с пом. WinRAR'а находим там папку players (под рукой нет Q3, так что точно сказать не могу, но найти её не сложно), берём папку с понравившимся нам монстром, скажем klesk, и копируем её в PC_Dungeons_v0.7datamodels. Теперь настроим монстра для Dungeons - открываем файл models.txt из PC_Dungeons_v0.7datamodels. Все монстры должны быть прописаны в этом файле, чтобы они появились в игре. Смотрим, как там прописаны монстры, например ranger:CODE[model]ranger life_4 scale_0.22 y_offset_5.2 rocketstart_forward_1.0 rocketstart_right_1.95 rocketstart_up_-1.85
[weapon]plasma
[skin]bluedefaultredwrack
Первая строчка (секция [model]):ranger - имя монстра, в нашем случае это klesk life_4 - здоровье монстра, здесь ему даны 4 хелса, можете выставить любое целое неотрицательное число. Для разнообразия, рекомендую каждому мунстру выставить разное кол-во хелсов, например по 4, 8 и 12.scale_0.22 - не помню, что это за байда... В замешательстве Может, потом распишу.y_offset_5.2 - размер монстра. Чем больше - тем больше монстр. rocketstart_forward_1.0, rocketstart_right_1.95, rocketstart_up_-1.85 - это 3D координаты точки, из которой вылетает ракета/пуля из ствола в руках монстра. Полезно, т.к. при замене модели монстра/оружия, или при изменение размера монстра, эта точка смещается - этими координатами подгоняем её на место.Далее, задаётся оружие для монстра (лежит в папке PC_Dungeons_v0.7dataweapons - о замене оружия читайте ниже) и скины. Скины лежат в папке с монстром, в нашем случае в PC_Dungeons_v0.7datamodelsklesk в виде изображений в формате TGA (открывается с пом. IrfanView), в разрешении 256x256 (можете и уменьшить это разрешение). Естественно, их можно перерисовать в фотошопе (как - я здесь расказывать не буду). В нашем случае это klesk.tga, blue.tga, flisk.tga и red.tga. Теперь вписываем их в секцию [skin] в столбик, кроме скина с названием монстра (у нас - klesk.tga) - вместо него пишем default. Итого, у нас получилось:
CODE[model]klesk life_4 scale_0.22 y_offset_5.2 rocketstart_forward_1.0 rocketstart_right_1.5 rocketstart_up_-1.8
[weapon]railgun
[skin]defaultbluefliskred
Движок поддерживает до шести скинов на одного монстра (с учётом дефолтного скина).
2D МонстрыВ Dungeons они дёрнуты из Wolfeinstein 3D =) Все настройки спрайтовых монстров вшиты в движок и их нельзя изменить. Все 2D монстры имеют по 8 хелсов и стреляют оружием, типа плазмаган. Добавлять своих монстров нельзя, но вы можете заменить спрайты имеющихся монстров на спрайты из любой другой игры со спрайтовыми монстрами - например, взять их из DOOM!
Заменяем оружие:
Стволы сложены в папку PC_Dungeons_v0.7dataweapons. Движок поддерживает только 2 типа стволов и только 3 их модели - надеюсь, в будущих версиях это ограничение будет снято. Формат - всё то-же MD3, что и у моделей врагов, т.е. их можно так-же дёрнуть из Q3 и т.д. Открываем pak0.pk3, находим там модели оружия, открываем там папку, к примеру, rocketl (Rocket Launcher). Из этой папки нам нужны только rocketl.jpg и rocketl.md3 - кпируем их в PC_Dungeons_v0.7dataweaponsrocketl. Переименоваваем rocketl.md3 в weapon.md3, а rocketl.jpg перегоняем в BMP формат с пом. IrfanView (получаем на выходе rocketl.BMP). Ессно, скин можно править в Фотошопе. Далее, создаём в папке PC_Dungeons_v0.7dataweaponsrocketl новый текстовый документ, в котором пишем rocketl.bmp и сохраняем его, как файл weapon.shader (расшерение файла должно быть shader, а не txt!). Теперь открываем weapons.txt (из папки PC_Dungeons_v0.7dataweapons) и, чтобы пушка появилась в игре, вписываем туда наш новый ствол:CODErocketl type_1 damage_4
где:type_1 - тип ствола. type_1 стреляет летающими фаерболами, при этом он имеет б0льший сплеш (радиус взрыва). type_2 - это реилган, стреляющий мгновенно-летящим (инстант хит) лучом с малым сплешем.damage_4 - количество хелсов, которое снимает 1 пуля.Для Serious Dungeons я выставил значения:CODErocketl type_1 damage_4railgun type_0 damage_8
Вы заменили плазмаган на рокетлаунчер, но он всё-ещё стреляет, как плазмаган. Нужно заменить спрайт фаербола и огня:Открыли папку PC_Dungeons_v0.7datagfx, видим там BMP картинки:ch16.bmp - этот прицел. Можете перерисовать, помните, что синий цвет - прозрачность (т.к. юзается альфа-блендинг)gun_fire.bmp - эффект огня, при выстреле из ствола type_1. Можете дёрнуть из pak0.pk3 олее подходящий для рокетлаунчера. Здесь чёрный цвет - прозрачен.particle.bmp - это спарйт фаербола от оружия type_1. Чёрный цвет прозрачен.rail.bmp - спрайт луча из ствола type_0. Чёрный цвет прозрачен.
Ещё моддингу подвергаются шрифты в игре - см. изображение system256.bmp в папке PC_Dungeons_v0.7datafonts. Можете немного порисовать, не забывая, что здесь синий цвет прозрачен.К примеру, я перерисовал знак % на иконку здоровья в моде Serious Dungeons, и сам Charnold потом долго не мог понять, как я вствил "каринку в HUD", ведь движок этого не поддерживает! =)):
 

 
Озвучка:
Есть мнение, что хорошая озвучка составляет 50% атмосферы игры. Добавим-же нашей игре атмосферности!Движок Dungeons на данный момент поддерживает только звуковой формат WAVE (стандартный PCM), хотя в следующей версии ожидается поддержка MP3. Звуки и музыка лежат в папке PC_Dungeons_v0.7datasounds
Займёмся музыкой.GoldWave не умеет кодировать Wave с нужными нам настройками, так что используйте Sony SoundFordge. Кодируйте музыку в SoundFordge вот c такими настройками:-352 кбит/с-16 бит-1 канал (моно)-22 кГц-PCM (формат)Для наглядности:
 

 
Для звуков можете увеличить частоту до 44 кГц - соответственно битрейт увеличится до 704 кбит/c, но музыка с такой частотой может на ЗЫЗе не заработать! Для PC_Dungeons можете кодировать и с максимальными настройками с диким битрейтами/размерами файлов, но на PSP потом это не запустится, игра просто повиснет при загрузке.Важно! PSP Dungeons, в отличае от PC билда, не играет треки длиннее ~35-ти секунд! =( - если трек длиннее, то ЗЫЗ повиснет, а в Protokoll.txt добавится отчёт о краше с ошибкой "BLOCKSIZE MISTMATCH". Так что обрезайте свои саундтреки до 30-35сек., при этом не забывайте, что трек будет крутится по-кругу (повторятся), так что следует позаботится о том, чтобы конец нашего 30-ти секундного обрубка органично перетекал в его начало (можно сделать в СаундФордже затухание вначале и конце трека) Итак мы подобрали трек, обрезали его, сконвертили, обозвали как-нибудь и положили в папку PC_Dungeons_v0.7datasounds - теперь можем его вставить в уровень, или в несколько уровней нашего мода, напомню - прописав в заголовке:CODE[music]xxx.wav
(Где xxx - имя трека).
Теперь заменим звуки. Те WAVки, что лежат в PC_Dungeons_v0.7datasounds (они дёрнуты из Quake 3 =)), соответствуют звукам в игре:
am_pkup = подбирание патронов/здоровьяbutn2 = нажатие на кнопку/открытие двериchange = переключение оружияgibimp3 = ранение монстраgibsplt1 = смерть монстраnoammo = пустая обойма (при попытке выстрелить)pain100_1 = крик монстра, увидевшего игрокаstep3 = шаг (ходьба игрока)weapontype0 = выстрел из оружия type0weapontype1 выстрел из оружия type1
Можете заменить эти звуки на другие, с теми-же названиями файлов и в том-же формате (WAVE, PCM, 352 кбит/с, 16 бит, моно, 22, или 44 кГц). Все эти звуки короткие - около 1 сек, и вам нужно подобрать примерно такие-же по длине (не обязательно, просто длинные звуки в игре будут звучать неестественно)
Делаем EBOOT (украшаем игру для XMB):
В общем, наш мод уже готов и можно не заморачиватся с EBOOTом (и не читать этот раздел) и просто взять EBOOT из комплекта PSP_Dungeons_0.7... но если хотите, чтобы ваша игра выглядела и звучала красиво и оригинально в XMB (меню PSP) и отличалась от других модов Dungeons - читайте дальше.Для начала, если вам нужно, сделайте EBOOTы для прошивки 1.50 с помощью kxploit. Далее, нам нужна прога PBP Unpacker. Установили, запустили прогу - жмём Open и открываем наш EBOOT из папки с PSP_Dungeons_0.7 - это для Custom Firmware (от 2.71 SE и выше), лоадеров для прошивок 2.XX и для проши 1.00; если у нас прошивка 1.50 - будем работать с созданным kxploit'ом EBOOT'ом из папки с процентом на конце (%). Теперь жмём Extract, выбираем папку для распаковки и распаковываем. Видим 3 распакованных файла: DATA.PSP, PARAM.SFO и ICON0.PNG. Нам нужны только первые 2, а ICON0 мы заменим на свою иконку. EBOOT.PBP может состоять из следующих файлов:
DATA.PSP (обязательно!) - в этом файле содержится, собсно, сам движок Dungeons с библиотеками! PARAM.SFO (обязательно!) - настройки приложения (название, регион, требуемая прошивка)ICON0.PNG (не обязательно) - маленькая картинка (обычно 144х80, или меньше), отображаемая в XMB; 32-х битный цвет, поддерживается прозрачность (8 бит альфа-канал, юзаем Фотошоп)PIC1.PNG (не обязательно) - полноэкранная картинка (480х272), отображаемая в XMB; 32-х битный цветSND0.AT3 (не обязательно) - звук, играющий в XMBPIC0.PNG (не обязательно) - полупрозрачная картинка, накладываемая сверху на PIC0.PNG от нижнего левого угла. В UMD-шных играх, как правило, в разрешении 310х180 и используется для описания игры (текстовая информация); 8/32-х битный цвет (с прозрачностью)ICON1.PMF (не обязательно) - видеоролик, который проигрывается в XMB после ICON0.PNGDATA.PSAR (не обязательно) - дополнительный контент проги. К счастью, в Dungeons вся data вынесена за пределы EBOOT (я говорю про папку PSP_Dungeons_0.7/data/) и мы можем легко модифицировать её содержимое (чем и занимались в предыдущих разделах =))! Нам DATA.PSAR не нужен.
Открываем блокнотом PARAM.SFO, находим в конце: DUNGEONS 2006/12/29 18:51:25 - заменяем эту надпись на название нашего мода. Больше ничего здесь менять не будем.Подбираем/рисуем картинки для XMB, порегоняем их в нужные разрешения, сохраняем в формате PNG с названиями ICON0 и PIC1. Не советую использовать для нашей игры PIC0.PNG, ибо толку от него 0 - можно всё текстовое описание и на PIC1 написатьДелаем звук (SND0.AT3). Нам понадобится SoundFordge, или GoldWave с установленным кодеком ATRAC3. Видеоролики в PMF я конвертить не умею (да и не пробовал, но подозреваю, что это и не сложнее звука). Если знаете, как это делать - расскажите в комментах - я добавлю описание сюда  Можно дёрнуть ролик из UMD-игрушки (сдампить ISOшку, разобрать - если есть, то будет лежать в корне папки PSP_GAME)
Итого, у нас есть готовые DATA.PSP, PARAM.SFO, ICON0.PNG, PIC1.PNG, SND0.AT3 и, возможно, ICON1.PMF. Берём PBP Unpacker, жмём New, выбираем все наши файлы и жмём Save.Всё - наш EBOOT (а вместе с ним и весь мод!) готов! (Если он делался для прошивки 1.50 - кидаем его в папку с процентом на конце (%))
 
Если,что не получается,обращайтесь
 
PSP Club Vote Bar Проголосовать противПроголосовать за!
Текущий рейтинг +63 Голосов против 18 Голосов за 81
Для того чтобы добавить комментарий, вам необходимо авторизоваться.
Это не займет много времени, а авторизованные пользователи получают доступ к расширенным возможностям клуба.


 
 
Контакты | Обратная связь | Реклама на сайте | RSS RSS Лента. Сводка последних добавлений игр для PSP
MaxiPack Web Projects © 2021. При копировании материалов ссылка на сайт обязательна.
"PSP" и "Play Station" - зарегистрированные торговые марки корпорации Sony Computer Entertainment.