Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Перші кроки в DarkGDK

leave a comment »

Створення нового проекту

Якщо встановлення пройшло успішно, вікно створення нового проекту має виглядати приблизно так:

Рис. 1 Створення нового проекту гри

Відкриття і аналіз проекту

Але ми не будемо створювати нову гру, коли вже є готова. Нову ми зможемо зробити пізніше. Зараз краще відкрити ту яка вже зроблена і працює без помилок, і почати її портити :). Для цього знаходимо папку Dark GDK. Вона в мене знаходиться тут: “C:\Program Files\The Game Creators\Dark GDK”, а ви шукайте там куди інсталювали. Далі заходимо в \Tutorials\3D Objects. Там відкриваємо файл з розширенням .sln. В Solution Exploreri знаходимо Main.cpp. Там увесь код проекту. На все про все 37 рядків. Так мало, що мені аж моторошно.

Рис. 2 Дерево проектів рішення

Перший рядок простий до геніальності:

// Завжди використовуючи DarkGDK переконайтеся що ви включили заголовочний файл.
#include "DarkGDK.h"

Далі ще крутіше:

// Точка входу в програму ця функція
void DarkGDK ( void )

Не знаю як вам, але мені подобається.

// ввімкнути синхронізацію частоти кадрів і встановити максимальну частоту кадрів 60 fps
	dbSyncOn   ( );
	dbSyncRate ( 60 );

Перша команда еквівалентна взяттю контексту рендерингу, встановленню контексту пікселя, увімкнення подвійної буферизації, і повідомленню системі що за малювання береться наша програма, щоб система не пхалася. Десь так. Одним словом команда важлива, і відіграє роль ініціалізації. Наступна функція встановлює частоту кадрів, яка вимірюється в кадрах на секунду (fps). Може бути від 1 до 1000. Спеціальне значення нуль – встановлює частоту кадрів максимальною, на яку здатна система. Варто також зауважити, що двадцять п’ять кадрів на секунду замало, для того щоб двадцять п’ятий кадр не було видно. Я перевірив. Ніякого впливу на підсвідомість 🙂

Далі йде команда виводу тексту, яка працює аналогічно консольним командам. Тобто є невидимий курсор, і кожен раз при виводі він переміщується на наступний рядок.

	dbPrint ( "Please wait loading model..." );
	dbSync ( );
	dbSync ( );

Дві команди dbSync ( ); виконують вивід зображення на екран. Чому їх дві, я не знаю, але з одною, текст на екрані не з’являється. Може буферизація не подвійна, а потрійна. Далі команда завантажує об’єкт (в нашому випадку текстурований анімаційний меш) з файлу .Х, і присвоює йому ідентифікатор 1.

dbLoadObject ( "Colonel-X.X", 1 );

Модель не було б видно, якби на неї не розвернули камеру. Тому додають команду

dbPositionCamera ( 0, 50, -80 );

Координати вони вгадали самі. Наступні функції працюють з анімацією:

	dbLoopObject ( 1);
	dbSetObjectSpeed ( 1, 40 );

Перша команда dbLoopObject ( 1); каже що об’єкт 1 буде циклічно відтвоювати всі кадри своєї анімації. Ця команда має кілька різновидів

	void dbLoopObject ( int iID );
	void dbLoopObject ( int iID, int iStart );
	void dbLoopObject ( int iID, int iStart, int iEnd );

Перша команда відтворює всю анімацію об’єкта. Друга і третя дозволяють задати конкретний діапазон кадрів. Функція dbSetObjectSpeed ( 1, 40 ) дозволяє відкоректувати швидкість відтворення анімації об’єкта. Тепер залишилося тільки все запустити:

while ( LoopGDK ( ) )
{
	dbSync ( );
}
return;

Даний цикл являє собою цикл гри. Він не закінчується поки не закінчиться гра. Команда dbSync ( ); в ньому виводить наступний кадр. А все необхідне для генерації кадру ми вже задали. В кінці за традицією return;. Ура! F5!

Рис. 3 Відтворення анімації

Редагування проекту

Перша річ, яка мені не подобається – це те, що програма працює в вікні. Це просто виправляється. Десь на початку пишемо:

	dbSetWindowOff();

І вуаля – наш дядько вже танцює на весь екран. Правда роздільна здатність все одно буде малесенькою. Але ми можемо вибрати і відеорежим. Функція

	dbSetDisplayMode ( 1024, 740, 32 ); 

Встановлює відеорежим в 1024×740 з глибиною кольору 32 біти. Якщо ви їй скажете відеорежим якого не не існує, то помилки не станеться. Функція просто вибере подібний, але доступний для відеоадаптера.

Written by bunyk

6 Лютого, 2009 at 13:56

Опубліковано в Графіка, Кодерство

Tagged with

Напишіть відгук

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out /  Змінити )

Google photo

Ви коментуєте, використовуючи свій обліковий запис Google. Log Out /  Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out /  Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out /  Змінити )

З’єднання з %s

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.

%d блогерам подобається це: