|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » *Теория* | Спрайты в псевдо 3D |
|
*Теория* | Спрайты в псевдо 3D
|
Новый участник Сообщения: 33 |
Профиль | Отправить PM | Цитировать Здраствуйте.
Нужна информация по программированию спрайтов, на подобии тех, что были в играх Doom или Wolfenstein. Что это такое мне известно и я даже представляю как это написать, но хотелось бы узнать, как это делать правильно. Желательно ссылки на статьи и теорию. |
|
Отправлено: 17:17, 16-04-2007 |
Ветеран Сообщения: 1812
|
Профиль | Отправить PM | Цитировать Надо бы еще определиться с системой разработки. Например, под С есть игровая библиотека Allegro, у которой есть функции для работы со спрайтами. Если такой вариант подходит, соответственно, гуглить на Allegro.
|
Отправлено: 22:34, 16-04-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать Система разработки тут роли не играет. Все пишется с нуля и нужна чистая теория по написанию таких спрайтов.
|
Отправлено: 23:05, 16-04-2007 | #3 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Когда мне было 11 лет, я читал книжку "Секреты разработки игр" имени Андре Ла Мота. Страшная гадость, но основы того, как сделать игру типа вульфенштейна там были. Так же как и в учебнике геометрии за 7-й класс (разве что в случае учебника стоит ещё чуть-чуть голову приложить).
В вульфе и ему подобных есть два класса отрисовываемых объектов: стены и всё остальное Стены отрисовываются с помощью рэй-кастинга (отсчение лучей, наверное, сойдёт за перевод). В качестве отправной точки можно взять, например статью в википедии. Там всё очень просто. Второй класс объектов, которые следует рассматривать - "всё остальное". Тоже тривиально 1. Проходим по всем объектам, проводим вектор от игрока до объекта, если этот вектор попадает в область видимости, то объект ртрисовывтаь на экране надо, иначе - нет. 2. Если надо рисовать объект на экране - вычисляем расстояние до объекта, на основе которого вычисляем коэффициент масштабирования (размер спрайта обратно-пропорционален расстоянию до него). 3. Затем по углу вычисляем, где на экране получится центр спрайта (если прочитать про рейкастинг, то там будет написано, что каждой вертикали на экране игрока соответствует свой угол, от (направление взгляда игрока - alpha), до (направление взгляда игрока + alpha), где alpha ~ 30-45 uhflecjd)). 4. Рисуем спрайт в соответствии с z-буфером 5. всё Я свой клон вульфа (с рудиментарными монстрами) написал на QBasic'е за неделю. Он даже почти не тормозил на 486'ом. В думе всё сложнее (в части поиска пересечения со стеной, там по-моему впервые BSP-деревья додумались применять для этого), проще разобраться с "настоящей" трёхмерной графикой, по-моему. Тем более, что в нынешних условиях это намного практичней и эффективней. |
------- Отправлено: 00:36, 17-04-2007 | #4 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать Необходимо чтобы процесс отрисовки спрайтов был наиболее оптимален. Программа пишется исключительно в учебных целях. Просьба не указывать на то, что сейчас это не актуально.
Благодарю за пояснения. Только у меня есть несколько вопросов. Уточню, что спрайт может перемещаться исключительно по сетке, на которой могут распологаться стены. Цитата:
Цитата:
|
|||
Отправлено: 01:40, 17-04-2007 | #5 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Kerbit
Цитата:
Цитата:
Цитата:
В крайнем случае (для экономии памяти и количества вычислений) можно сделать z-буфер размером только по числу лучей (т.е. хранить для каждого луча координаты до ближайшего объекта с которым он пересёкся), но в этом случае некорретно будут отрисовываться одни объекты за другими; тогда надо будет применить "алгоритм художника" - сначала определяем список всех объектов, которые надо отобразить, сортируем их по дальности и отрисовываем "от дальних к ближним". Цитата:
|
||||
------- Отправлено: 10:28, 17-04-2007 | #6 |
Ночной странник Сообщения: 4050
|
Профиль | Сайт | Отправить PM | Цитировать Kerbit
покупаем клини под авторством - "шиков и боресков", там все подробно описано от теории до практики с примерами... книги дешовые, но очень позновательные, просто маст хев!!! |
------- Отправлено: 14:11, 22-04-2007 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
*Теория* | Сокеты | XPurple | Программирование и базы данных | 1 | 25-09-2006 12:05 | |
*Теория* | Кодогенерация | Vlad Drakula | Программирование и базы данных | 6 | 28-08-2006 06:49 | |
*Теория* | C++ | Объясните глюк | pva | Программирование и базы данных | 1 | 03-11-2005 10:50 | |
*Теория* | Tree via c++ | pva | Программирование и базы данных | 2 | 04-05-2005 13:34 | |
ТЕОРИЯ | german r | Мобильные ОС, смартфоны и планшеты | 5 | 07-02-2003 09:42 |
|