People Soft Понедельник, 29.04.2024, 17:34
Меню сайта
Категории каталога
Blitz3D [3]
Delphi [0]
Pascal [5]
Главная » Статьи » Blitz3D

Курс молодого бойца, Ч.1
Статья взята с сайта blitzetc.boolean.name
Курс молодого бойца, часть 1: первичный инструктаж

Ну что?! Все игры – отстой?! Гейммейкеры - ламеры без ума и фантазии?! А ты просто кладезь идей, умница и крутой программист? Готов сделать игру всех времен и народов? Если нет, то – прощай, ты, слабое звено… Остальные за мной!

Что такое игра? Игра – это программа. На каком языке программа? На С++? Кто вам это сказал? Если игра написана на С++ то это тетрис или спейсинвайдерс – шаровара одним словом… Игра всех времен и народов пишется на скриптовых языках, встроенных в игровой движок, который в свою очередь и написан на С++. Движок Халф-Лайф 2 стоит 500 000 у.е., а сам Халф-Лайф 2 – 50 у.е. Интиресно почему? А я, таки, скажу. Игровой движок Half Life 2 написан на графическом движке Source 6, стоимость которого исчисляется в килобаксах. Для того чтобы написать свой графический движок, нужно столько знаний, что в одной голове они встречаются редко. Это и высшая математика, и физика, и геометрия, и программирование причем на уровне выше школьного. Если я описал ваши способности, причем не полностью, то вы можете заняться написанием своего графического движка. Но времени на написание игр у вас уже не будет! Да и занятие это не достойно человека, который вот-вот создаст супер-пупер игру, которая потрясет мир!!! Халф, Моровинд и Дум3 забьются в угол, жалобно скуля. Двери всех гейм студий будут открыты перед вами, а Кармак будет чистить ваши ботинки.:) Даже серьезные команды редко пишут свой графический движок. Это сложно (Но не невозможно ;) ). Вам говорят, что нельзя сделать игру всех времен и народов в одиночку? Врут!!! Хотят избавиться от конкурента, а сами пишут, пишут и пишут свою игру века. На всякие провокационные выкрики типа: "Назовите хоть оду известную игру написанную одним человеком или хотя бы не профессиональной командой!" спокойно отвечаем: "Counter Strike". Самая настоящая игра всех времен и народов, написанная на игровом движке Half Life, который в свою очередь написан на основе движка Quake (или Quake2), который написан на С++…

Я не буду писать, что создание игр - это очень тяжелый труд, требующий много знаний, свободного времени. Что кроме программирования нужно еще уметь рисовать, писать музыку, издавать всякие звуки, создавать 3D модели. Причем все это нужно делать на уровне вашего будущего шедевра… Я не буду писать, что создание игр это постоянный компромисс между красотой и ФПС. Я не напишу, что прежде чем написать игру нужно знать как ее написать. Все равно мне вас не обмануть. Вы-то точно знаете, что для того чтобы создать игру всех времен нужно придумать ей название. Я, попробую рассказать вам как делать игры, но я не смогу рассказать, как писать программы… Программировать вы должны уметь, причем не на уровне "Hello world!!!". Хотя и у таких есть шанс. Все зависит от выбора инструмента – движка…

Что такое движок? Начну издалека. Современные видеокарты сложнее современных компьютеров. В них аппаратно реализован ряд функций, которые делают такое что мне даже в голову не приходит… Из-за того что я не один кому в голову не приходит, что умеют современные видеокарты, да и сами видеокарты делают это по-разному, были созданы специальные наборы функций, для работы с 3Д графикой, сегодня самые ходовые это DirectX и OpenGL – это как бы матрас между железом и программистом, но на таком жестком матрасе могут спать немногие программисты. Только самые стойкие. Для своих более изнеженных собратьев они создают перинку над графическими API. Это собственно уже и есть движок в самом простом случае… Что он делает? Мягко стеллит! Вот вы знаете, как загрузить 3Д модель из файла? Это не плюшки со стола пылесосом тырить!!! А использование движка все сводит к команде «Загрузить модель из файла». Кроме этого движки умеют работать с картинками, музыкой, звуками, джойстиками, мышками, клавиатурами со всем, что необходимо для написания игры. Очень часто освоить такие движки неподготовленному человеку оказывается сложно. Обычно они написаны под С++ и подразумевают что вы не новичок в программировании. Но среди вас, создающих хит века, таких единицы… Эти движки – называются графическими и созданы они для написания игрового движка.

Углубим... Есть графические движки и игровые. Графические - это набор функций для работы с графикой, звуком и т.д. Единственное что они могут это визуализировать. Вы можете нарисовать уровень (Как это делается, узнаем позже), загрузить его и… Ничего!!! Это будет мертвый 3Д объект (картинка)! Графический движок честно отобразит его, но не более… Для того чтобы просто прогуляться по этому уровню нужна надстройка над графическим движком - игровой движок. Он будет сообщать графическому что, когда, как показывать… Кстати даже как загрузить ваш уровень графический движок сам не догадается… Существует куча графических движков, и еще большая куча игровых… Какой движок выбрать? Графический или игровой? Вопрос очень неоднозначный. С одной стороны если вы хотите сделать игру которую мир еще не видел, то выбирать нужно из графических, а если вы хотите сделать игру как Дум3, только монстров побольше и пострашнее, кровищи море, и уровни другие… То вам нужно брать движок Дум3 и делать для него свой уровень. Хотите, чтобы ваше имя осталось в веках? Типа "Vasya Pupkin (R)"? Сделайте МОД. Это намного легче чем написать свой Дум3, но намного сложнее чем сделать свой уровень… Кстати, если вы свой уровень для Дума не сделаете, то о МОДе можно забыть… ;) Игровые движки обладают более широким спектром возможностей по сравнению с графическими. Они "знают" что, когда и как вам показать. Но в этом их недостаток - они специализированы. Т.е. на движке Дума3 получится только шутер, на движке War Craft 3 – стратегия. Хотя во многом это зависит от возможностей, того самого скриптового языка, подключенного к движку. Для разработки игр на таких движках очень часто не требуются глубокие познания в программировании, но требуется найти софт для создания уровней для движка. Он есть, но не всегда доступен. Если слово уровни вас напрягает и вам кажется что это слишком просто, то это вам только кажется. В том же War Craft – вся игра состоит из отдельных уровней связанных единым сюжетом кампании, причем каждая компания это отдельная игра. Вы можете сделать свою кампанию (Размороженный трон, например) и это может быть ваш коронный час ;). Но на самом деле это тоже недостойно великих игроделов. Ведь мы не ищем легких путей... Рассказывать о игровых движках и графических можно долго, но пусть это делают те, кто в этом разбирается лучше меня.

Перейдем все-таки непосредственно к делу. Существует ряд движков созданных для написаний супер-пупер игр одиночками. Например, RPG maker предназначен для создания супер-пупер JRPG. Ну и что, что 2Д, вам шашечки или ехать? В супер-пупер игре графика не главное. Или Game maker – тоже 2Д. Можно наделать супер-пупер аркаду средней паршивости. Эти движки можно отнести условно к конструкторам. В них можно сделать игру, даже не умея писать программы! В принципе, хорошее начало. Не окунаясь в пучины кода, вы огребаете по полной программе проблем связанных с разработкой игр. Причем половину из них невозможно решить без окунания в код, а в код окунуться в этих движках нельзя. :). Вот такой замкнутый круг… Но польза от этих "движков" есть - они позволяют разобраться, из каких частей состоит игра. Что очень важно. Поэтому, советую хотя бы глянуть на такие конструкторы, постараться написать простенькую игрушечку – в жизни пригодится… Есть еще один конструктор, но это штучка уже серьезнее 3D game studio – предназначен в первую очередь для написания FPS, но есть возможность дописывать свои блоки. Т.е. когда столкнетесь с какой-то проблемой, есть шанс ее решить, написав свой скрипт. Еще одним достоинством является встроенный редактор мира и объектов.

Движки под С++ трогать не будем ибо нам нужно написать шедевр в сжатые сроки, а С++ обладает кучей преимуществ, в число которых, однако, не входит скорость разработки приложений, да и сделать на них получится, как я говорил, тетрис, а для написания супер-пупер игры придется к рендеру прикручивать скриптовый язык типа Lua, что в принципе не сложно, но те кто знает, как это сделать, перестали читать после первой фразы этой статьи. Ибо они слабаки и не верят в победу нашего разума над косной материей мироздания и создание одиночкой мега-игры…

Рассмотрим движки, в которые встроены бейсики. Это Dark Basic Pro (classic – отстой по умолчанию) - это мега-движок, для конкретных пацанов. Использует DX9 и имеет соответствующие фичи - так называемые шейдеры. Если вам нужны в первую очередь красивости, то вам сюда… Только вот людей которые железно эти красивости могут узреть пока мало… И есть небольшой подводный камень, для тех кто начнет изучение программирования с этого Бейсика - синтаксис Дарка содержит тенденцию вредную для выработки правильного стереотипа написания программ, а именно - он использует назовем так «константный» метод доступа к информации. Т.е. писать нужно типа: Загрузить объект 1, Имя1: Загрузить объект 2, Имя2: повернуть объект 1 на 2. Чем это плохо? Да ничем, если вы собираетесь посветить Дарку всю жизнь. При переходе на другой язык у вас возникнут серьезные затруднения. Подавляющее большинство языков использует другую, «правильную» идеологию – назовем условно «ссылочный» метод доступа. Т.е. писать нужно так: Player=Загрузить объект Имя1: Enemy=Загрузить объект Имя2: повернуть объект Player на Enemy: Для неискушенного ума возникает вопрос: "А какая, хрен, разница?". Спокойно отвечу: "В данном примере - никакой". Но те кто знает английский совершенно точно скажет какая разница ;), и во втором варианте, вам не нужно знать какой номер объекта можно загрузить (какой там по очереди следующий), да мы создали две переменных в которые язык поместил ссылку на соответствующие объекты (считай, что номер), но если по числу невозможно догадаться о том что это за объект, то работая через ссылку можно переменную назвать понятно. То же самое можно сделать и в первом случае, но это будет несколько натянуто… Т.е. написать: player=1:Загрузить объект Player, Имя1: Enemy=2: Загрузить объект Enemy, Имя2: повернуть объект Player на Enemy:. По большому счету это мелочи. Но, как говорят, привычка вторая натура… Самый больной вопрос это стабильность и скорость. Если игра идет у вас, это не значит что она пойдет на другом компьютере…

Второй движок Blitz3d. Естественно, что это тоже мега движок, для реальных пацанов. И похвастать ему вроде нечем DX7 и соответствующие фичи :), но если у вас видюха не держит железно DX9, зачем вам фичи которые он дает? Ведь это будет не игра а слайд шоу. Так что и DX7 это нормально. Бейсик здесь с нормальной идеологией и ненавязчивым пониманием такого понятия как Handle. Что не мешает переходить на другие движки, а тот опыт который вы наберете здесь сможете применять и в других языках… Отличается стабильностью. Общая беда этих двух движков это скорость логики - медленная (Лечится созданием своих DLL), и скорость отрисовки сцены – медленная (Лечится переходом на другой движок). Наблюдается тенденция (как ни странно) - пописав на Дарке, люди переходят на Блиц. Видимо, набираясь опыта, конкретные пацаны становятся реальными.:) Этот движок отличается стабильностью и хорошими возможностями по созданию игр, для него есть внешние физики, рендеры и замечательное русскоязычное сообщество. У Дарк бейсика тоже есть сообщество и не менее замечательное, но оно значительно меньше…

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

В следующий раз мы начнем разбираться с тем, из чего состоит игра, и, если успеем, начнем делать свой шутер…


Категория: Blitz3D | Добавил: Pupkin (16.09.2007) | Автор: Роман Прядко
Просмотров: 507 | Рейтинг: 1.0/1 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Статистика

    html counter счетчик посетителей сайта


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Заделано студией People Soft © 2024