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

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

Перші кроки в 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 біти. Якщо ви їй скажете відеорежим якого не не існує, то помилки не станеться. Функція просто вибере подібний, але доступний для відеоадаптера.

Advertisements

Written by bunyk

Лютий 6, 2009 at 13:56

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

Tagged with

Залишити відповідь

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

Лого WordPress.com

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

Twitter picture

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

Facebook photo

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

Google+ photo

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

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

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