Руководство по созданию мира. Часть 1.


И да будет мир разукрашен в 16 миллионов цветов....

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

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

Теперь, несколько слов об особенностях использования текстур в Genesis3D. Редактор уровней GEdit работает с библиотеками текстур, причем огромным его минусом является то, что он может оперировать лишь с одной библиотекой одновременно. Ну да ладно. Далее я покажу, как создать самому подобную библиотеку текстур, благо это настолько элементарно, что мне не придется долго стучать по клавиатуре :)
Перед тем как вы начнете создавать библиотеку, вы должны иметь в виду, что во-первых, GEdit понимает текстуры размерностью AxA, где A - 2^x, то есть 2 в какой-то степени: (2, 4, 16, 32, 64, 256, 512). Не увлекайтесь большими текстурами, если только не рассчитываете свою игру под Super-GeForce 6.5 :)
Во-вторых, все текстуры должны быть 8-битными битмапами (256-цветный BMP). Обращаю внимание, что не вся картинка на экране будет 8-битной, а только на поверхности одной текстуры не может быть более 256 цветов! Впрочем, это даже и лучше - текстура становится меньшего размера.

Итак, перед тем как совать текстуры в библиотеку, вы должны оптимизировать их в 8-ми битные BMP-хи из JPEG, GIF-ов или в чем там у вас они хранятся. При этом я рекомендую использовать хорошую программу, которая умеет оптимизировать палитры. Например я использую Fireworks 3.

Вобщем будем считать, что вы отобрали и поместили все текстуры в одну папочку. Теперь из этой папки надо сделать библиотеку. Нет ничего проще! Запускаем программу TPack.exe из Genesis3D SDK и начинаем перетаскивать файлы прямо из эксплорера в левый список программы TPack. Перетащили? Щелкайте по именам в списке и в правом окошке вы можете просматривать текстуры в библиотеке. Теперь сохраните все это дело, чтобы не дай бог добрый сосед Вася не отрубил электричество по ошибке в вашей квартире :)


И была в Начале одна комната....

Теперь мы будем заниматься творением мира, состоящего из одной комнаты. Как вы можете догадаться, комнатой является геометрическая фигура параллелепипед, причем полая изнутри.

Запускаем GEdit. Вы видите рабочую область, состоящую из четырех квадратов, в каждом из которых представлен какой-то вид. По надписям ориентируемся и понимаем, что тут представлены виды спереди, сверху и сбоку, а также изометрический текстурированый экран с изображением вида из виртуальной камеры!

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

Сейчас я дам вам ответственное задание. Попробуйте найти на верхней панели инструментов кнопочку с глазом. Для тех кто плохо справился, вот вам ее отличительные признаки:

Нашли? Жмите!
Если ничего не взорвалось, то теперь вы можете зажав левую кнопку мышки передвигать виды со сторон по сторонам, а в перспективном виде - О чудо! - двигать камеру в трехмерном пространстве. Зажав правую кнопку вы можете менять мастаб в видах со сторон, а в перспективном виде менять угол обзора. Все это дело называется режимом камеры.

Теперь нам предстоит познать другой режим. Режим заготовок. Нажмите на кнопку, смутно похожую на такую вот: Congratulitions! Вы в режиме текстур. Обратите пожалуйста ваше внимание на синюшный квадрат, который вы видите во всех видах. Надеюсь, вы уже поняли, поупражнявшись с камерой, что этот прямоугольник представляет собой параллелепипед. Это палрал.... тьфу... вобщем эта штука есть шаблон по умолчанию. Шаблоном называется любой геометрический объект в GEdit, из которого можно составлять сцену. Давайте же закрепим шаблон данного нам куба в сцене. Подведите мышку к его краям в каком нибудь из плоских видов. Вы видите, что курсор изменился и вы можете менять размеры шаблона. Если вы посмотрите на панель кнопочек чуть правее кнопки перехода в режим текстур, то увидите кнопки режимов перемещения, масштабирования и другого издевательства над шаблонами. Нажимайте каждую из них и смотрите на полученные возможности.
Когда наиграетесь, нажимаете Enter и - Мистика! - в перспективном виде появился полностью текстурированная комната! Войдите в режим камеры и "походите" внутри комнаты.

Теперь переключитесь в режим работы с объектом: Щелкнув на кубе в плоском виде вы увидите, что его wireframe окрасился в другой цвет, нежели был. Это индикатор того, что объект выделен. Теперь вы можете также изменять его параметры, как и в режиме шаблона, масштибировать, двигать и т.п. Только вот ввод после этого нажимать не надо.

Переключившись в режим шаблонов, вы, помимо нашего закрепленного белого куба, увидите еще один синюшный параллелепипед. Это так нам предлагают добавить в сцену еще один шаблон. Но мы не хотим больше кубов! Хочу шар!!! В чем дело? Щелкайте на вкладке textures панели справа на кнопку с картинкой шара. Появится окошко задания предварительных параметров, в которых не сможет разобраться разве только совсем уж серая личность. Дополнительного разъяснения может потребовть только флажок Cut Brush - это значит, что шар будет "вырезающим объектом", то есть если вы поместите его скажем в стену, из нее по закону Архимеда будет вырезан объем шара.
Щелкаем OK, двигаем шаблон внутрь комнаты, нажимаем Enter и созерцаем текстурированный шар в центре комнаты.

Все это хорошо, но как менять текстуры? На правой панели выбирайте вкладку Textures. Вы видите Список текстур в библиотеке по умолчанию. Для того, чтобы сменить библиотеку на собственную, выберите пункт меню Options/Level Options и посмотрите на строчку Texture Library. После щелчка на OK загрузится ваша библиотека текстур.
Изменение текстур происходит в режиме работы с объектом (стрелочка - помните?) Выберите объект и нажмите на кнопку Apply. Ой-ёй, текстура обтянула весь объект! А как сделать скажем пол одной текстурой, потолок другой, а стены третьей? Просто! Только для этого нам потребуется перейти из режима обработки объектов в режим обработки поверхностей. Выберите пункт меню Mode/Face Adjustment. Прямо в перспективном виде щелкайте мышью на стенки или пол. Увидите, что вся стена обведена сиреневой каемкой - это значит, что она активна. Выберите какую-нть другую текстуру и нажмите Apply. Проделайте подобное со всеми остальными стенами.

Обратите внимание на пункт меню Tools/Face/Attributes Поиграйтесь со значениями Texture Offset, Draw Scale и кнопочками Flip... Остальное пока трогать не надо.

Теперь, мы будем компилировать уровень.
Для успешной компиляции, мы должны иметь точку старта игрока. Для этого из списка, что рядом с лампочкой на панели справа, в режиме шаблонов, выберите пункт PlayerStart. Нажмите на лампочку. В плоских видах появится синий крестик. Подвиньте его куда-нть в центр и нажмите ввод. Все.У нас появилась стартовая точка и можно компилировать уровень. Но для того чтобы просмотреть его в GTest, нам нужна еще одна точка: DeathMatch Start. Ставьте ее таким же образом и выбирайте пункт меню Tools/Compile. Коротко взгляните на список опций и установите свое имя файла в соответствующей строке. Учтите, что кнопка Browse глюкует (у меня по крайней мере). Вы также можете убрать флаг AutoPreview. Остальное оставьте пока по умолчанию. Если компиляция пройдет успешно и вы оставили флаг AutoPreview, то вы можете сразу же побывать внутри своего мира с помощью игрухи GTest.

Ну вот вроде и все. Заметьте, что после компиляции у вас появился файл с расширением bsp, содержащий в себе помимо геометрии все использованные текстуры и вам не надо таскать везде библиотеку текстур. Это одновременно удобно и неудобно. Вобщем, начало положено и у нас есть простейший мир.

Дальше - больше.

Приятного программирования, Antiloop

Posted: 26.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>