Game Engine Programming by }0RIC)-(
|
|
}0RIC)-( | Дата: Воскресенье, 16.09.2012, 16:22 | Сообщение # 41 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| И так, придумал вот такой алгоритм откатов: Нам надо время, затраченное на кадр = dt Время я представляю как ось t. 1)В начале сцена находится в начале этой оси. 2)Перематываем ее в конец кадра, независимо от того, перекроются объекты или нет. Теперь для того чтобы вернуться в начало кадра, нужно перемотать на (-dt). 3)Дальше находим наименьшее время столкновения для каждого отдельного объекта, наименьшее время столкновения за всю сцену, и перематываем на него. 4)Перебираем все объекты, и просчитываем столкновение тем, у которых их собственное время столкновения совпала с временем сцены, это делаем для того, чтобы не потерять ни одного объекта. 5)Cдвигаем границу оси t (раньше граница была -dt) 6)Перематываем в конец кадра. Повторяем с первого пункта, только отрезок времени теперь будет от желтой черты (последнее столкновение) до конца кадра. Старый временной отрезок: Новый временной отрезок:
А раз мы обсчитывали самое раннее столкновение, то гарантия что столкновений нет слева от желтой черты 100%. Повторяем до тех пор пока не станет столкновений, или не кончится временной отрезок (что одно и тоже).
|
|
| |
}0RIC)-( | Дата: Воскресенье, 02.12.2012, 11:48 | Сообщение # 42 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| Настало время вновь поработать. Изучив кучу всякой полезной бяки в С++ я решил заного всё переделать, но уже с возможностью расширения. т.е. если раньше я мог создавать только обычные сетки, то в новой версии будет возможно добавлять и другие классы, практически ничего не переписывая. Ну это в задумке, на деле пока только отображение Grid'ов: Но буквально сегодня, завтракая, ко мне в голову пришла простая и в тоже время гениальная мысль по реализации отражений. Суть которой в том, чтобы реализовать "продвинутый spherical environment". Обычный строится вот так: Продвинутый: Разница на деле: Разница думаю очевидна) + если отрендерить несколько карт отражения и всем задать их центр, то отражениям будут как настоящие + я хочу прикрутить к отражения "Parallax occlusion mapping". Что даст еще больше реализма.
|
|
| |
mixan_dok | Дата: Воскресенье, 02.12.2012, 18:20 | Сообщение # 43 |
Подполковник
Группа: Модераторы
Сообщений: 108
Статус: Offline
| мало что понял . но выглядит круто карта отражений , она как , меняется в онлайн режиме ? я не знаю просто
|
|
| |
}0RIC)-( | Дата: Воскресенье, 02.12.2012, 20:07 | Сообщение # 44 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| mixan_dok, Карта отражений может и реал тайм расчитываться, может просто 1 раз при загрузке уровня, может просто быть взята из файла, это не важно. Просто реалтайм больше времени на обработку, следовательно ниже fps. Расчитаные зарание - выше fps, но больше памяти видюхи. Из файла - совсем всё просто. Реалтайм отражения это просто рендер всей сцены для каждого объекта (Most Wanted). При загрузке уровня - разбиение на зоны, и в каждой зоне рендер своей карты (Half-Life 2) Из файла - одна картинка на отражения, и без разницы что за окружение (San Andreas).
Реалтайм отражения конечно самые правильные, но самые медленные. Я совмещу разбиение на зоны, параллакс, и расчет уровня. сделаю плавный переход между зонами. Это будет не реалтайм, но fps будет выше, да и качество должно быть более-менее.
Вообще я предпологаю сделать несколько уровней качества, понимаю что игра будет не на продажу, но настройки графики всеравно будут. Будет что-то вроде: Уровень 1: одна карта отражений, на которой ничего не разобрать. Уровень 2: карты заранее расчитаны, через каждые 10 игровых метров карта заменяется другой. Уровень 3: карты строятся реалтайм, используя лоуполи модельки. Уровень 4: мой способ. Урвоень 5: полный реалтайм.
Ну в общем работы еще...
|
|
| |
LTK | Дата: Среда, 05.12.2012, 18:54 | Сообщение # 45 |
COMPTON
Группа: VIP
Сообщений: 1261
Статус: Offline
| }0RIC)-(,
GTA это такая уникальная штука, на основе которой можно заколбасить практически что угодно... Shadow
|
|
| |
}0RIC)-( | Дата: Четверг, 06.12.2012, 15:24 | Сообщение # 46 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| Я так подумал, буду постить всё что делаю, даже без скринов, потому что большинство моей работы происходит в C++. 1)Не так давно я реализовал динамически расширяющийся массив. Массив универсален и в нем можно хранить любые переменные. Принцип расширения в том, что при нехватке памяти, выделяется память побольше и из старого массива всё туда копируется. 2)Вчера закончил реализацию библиотеки, для работы с игровыми архивами. Теперь файлы моделек можно закидывать в один игровой архив и оттуда с ними работать. Игровой архив:
Заголовок: Версия (4 байта), Количество зарезервированных ячеек в архиве (4 байта), Число файлов в архиве (4 байта)
Дальше идет так называемый ImagePath (файловая таблица) Ячейка 1 (40 байт) { Смещение от начала архива, до начала файла (4 байта) Смещение от начала архива до конца файла (4 байта) Имя файла, без слэшей (32 байта т.е. символа) } Ячейка 2 (40 байт) Ячейка 3 (40 байт) ... Ячейка N (40 байт) N - количество зарезервированных ячеек.
Дальше идут сами файлы.
Архив похож на архив Сан Андреса, только в него не добавить новые файлы если архив заполнен, но его также надо будет ре-билдить при замене файлов, т.к. стираются только сведения я о файлах, а сами файлы в архиве остаются. Новые файлы приписываются в конец архива.
|
|
| |
}0RIC)-( | Дата: Вторник, 11.12.2012, 17:30 | Сообщение # 47 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| Поработал над камерой. Понял свои старые ошибки. С камерой у меня была отдельная проблема, я не знал как совместить камеру и действия пользователя, решил так - камера отдельно, действия пользователя отдельно. Теперь камера не зависит от Direct Input. Совмещение в устройствами ввода будет проходить в центральном блоке.
На действия пользователя реакции нет, но можете посмотреть на мою простенькую анимацию)
Само приложение
Сообщение отредактировал }0RIC)-( - Вторник, 11.12.2012, 17:44 |
|
| |
}0RIC)-( | Дата: Среда, 12.12.2012, 20:07 | Сообщение # 48 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| Реализовал Кривые Безье, для тех кто не понял - "кривые линии в 3д"
С камерой ничего не делал, анимация таже:
Приложение
|
|
| |
}0RIC)-( | Дата: Четверг, 13.12.2012, 14:28 | Сообщение # 49 |
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
| Оптимизировал немного кривые, теперь их 2 вида - второго и третьего порядка. Также их можно прикручивать к матрицам, как и сетки. Сделал для кривых интрепритацию (плавный переход от одного вида к другому).
Камера тут стоит на месте, как и свелтая плоскость, темная плоскость крутится по оси Z. К вращающейся плоскости прикручена кривая третьего порядка (желтая), к обычной - второго (красная). Обе кривые рандомно интерпритируются.
Приложение
|
|
| |
mixan_dok | Дата: Четверг, 13.12.2012, 17:41 | Сообщение # 50 |
Подполковник
Группа: Модераторы
Сообщений: 108
Статус: Offline
| успехи , круто ) работает норм ) тока кнопку выйти забыл сделать
|
|
| |