Реферат: Створення гри типу DOOM Wolf 3D
RememberTheTime=getTime();
}
}
}
Функція getTime() повертає поточний час у вигладі довгого цілого. Це число збільшується на одиницю приблизно 18 разів на секунду. TimeCounter показує скільки разів виконався цикл. У функції main() організован основний цикл програми, що збільшує TimeCounter на одиницю. На початку роботи програми час, що повертається функцією GetTime запам’ятовується у змінній RememberTheTime. Але якщо в ході роботи циклу пройшла 1 секунда, то FramesPerSecond буде мати значення кількості проходів циклу за секунду. При умові що за один цикл програми малюється один кадр, то FramesPerSecond можна вважати кількістю кадрів за секунду.
А ось що можна зробити для покращення та прискорення цієї гри.
1. В першу чергу потрібно звільнитися від чисел з точкою, що плаває. Використавши числа з фіксованою точкою ми прискоримо весь алгоритм. Число з фіксованою точкою приблизно дорівнює числу з плаваючою точкою побітово зсунутим дещо вліво, щоб зберігати дробову частину. a = long( (float)b << 8). Такі числа можна складати та віднімати без перетворень. Щоб ділити та множити потрібно виконати побітові зсуви — (a >> 8) * (b >>8).
2. По-друге, потрібно всі значення, які можна, вирахувати заздалегідь і помістити в змінні та масиви. Наприклад значення сінусів та косінусів можна занести в таблицю з 360 елементів, що відповідають кожному з 360°.
3. Накладання текстури відбувається за методом інтерполяції. Знаючи верхню та нижню точки, можна пройти в циклі по всім точкам від верхньої до нижньої і взнати відповідні точки в текстурі. Але більш докладне пояснення виходить за рамки даного документу.
4. Робота з монстрами майже нічим не відрізняється від роботи з самим гравцем. Він має координати свого положення і кут зору. Переміщується до гравця якщо має досить енергії і стріляє через рандомізований проміжок часу. Якщо енергії недостатньо, втікає.
Список літератури
1. Lary Myers. Animation Construction Kit 3D
2. Sebastien Loisel. Zed3D. A compact reference for 3D computer graphics.
3. Дейв Робертс. Программирование игрушек. Основы.
4. Mark Feldman. Brezenham’s Line and Circle Algorithms.
5. Sebastien Loisel. A tutorial for 2D and 3D vector and texture mapped graphics. Version 0.60
6. Chris. Egerter. Texture mapped polygons.