![]() |
Ответ: [TrueHorror] - разработка
Много воды утекло с прошлой версии.
В основном технические изменения. А именно: 1) Переделал рендерер - появились соответствующие компоненты типа IVertexBuffer, ITexture и т.п. Таким образом рендерер под OpenGL написать будет просто. 2) Ускорил загрузку моделек - в т.ч. уровня. Ранее уровень размером в 1,2 мб грузился за 10 сек, сейчас за 1,2 3) Добавил врагов - пока только ближний бой. 4) Добавил меню - в нем минималистические настройки( настройки графики пока не работают ) 5) В скрипты добавил работу с GUI. Мне нужен код который считает тангенты и бинормали. Тогда смогу сделать бамп или параллакс. А пока просто диффузный свет. Еще кидайте мне лог( лежит в data/logs ) и фпс. Скачать |
Ответ: [TrueHorror] - разработка
Вложений: 1
Запустил. Увидел туннель, понравилось, ассоциации с Пенумброй. Решил сменить графику в меню - вылет.
Запустил по новой, нажал играть. Оказался на какой-то дороге в лесу, ночью. Первое что заметил нежелательное присутствие курсора =_=" Затем странный фонарь, когда проводишь внизу него курсором, издаётся щелчок как в меню по кнопкам. На том месте как раз интерфейс: ![]() Огляделся по сторонам, везде было очень темно, ничего не видно. По правую руку, дорого вела в пещеру, в скале, перед которой, топтались двое подозрительных типов. Пошёл к ним. Один из них быстрым шагом двинулся мне на встречу. Как будто только и ждал когда пойду в их сторону, в его левой руке был нож. Стало ясно чем это кончится. Особо не раздумывая я рванул вперёд, к пещере, надеясь спрятаться там. Обогнул первого человека, он махнул на меня ножом, но это было уже неважно. Пробежал мимо второго, забежал внутрь и обернулся что бы посмотреть. Один из мужчин топтался перед входом и по каким-то причинам не мог войти... Любопытство вело меня дальше, в глубь скалы по туннелю. Я пошёл и встретил настоящий страх - перетянутые текстуры: ![]() Перетянутые текстуры заканчивались непроглядной чернотой, я по инерции вбежал в неё, тьма окутала меня со всех сторон. Я замотал головой по сторонам, в надежде увидеть свет. Наконец я увидел три белых точки быстро уходящих вдаль: ![]() "Вылетел с уровня" - подумал я и выключил игру. FPS ~75 Вложение 19929 |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
этот никогда не подводил |
Ответ: [TrueHorror] - разработка
Затестил - нормально. Меню выглядит многообещающе. Игра короткая, там действительно при входе в тоннель проваливаешься вниз и всё. У меня враги смогли в тоннель забежать. Да на фонаре тоже звук как будто по кнопкам меню проводишь.
Как всегда тестил на медленном железе: в целом довольно шустро работает, но из-за того что скорость игры завязана на fps играть не удобно. С включённой синхронизацией постоянно скачки - то 60, то 30, то 20, с выключенной чуть удобней, но теперь нету верхнего предела и при входе в тоннель например при 200 fps все слишком быстро происходит. Так что fps 20-200 - вот такой разброс. Лог на другой машине, но в нём все нормально - время загрузки scene.cxm 453ms, arrival.cxm 1635ms |
Ответ: [TrueHorror] - разработка
Вложений: 2
Наконец-то разобрался с расчетом нормалей. Ранее нормаль вычислялась только для грани, а теперь для каждой вершины - спасибо Борескову за код :). Теперь можно тангенты и бинормали считать.
Скрины - до и после: |
Ответ: [TrueHorror] - разработка
Вложений: 5
Бамп пока не добавил. Сейчас работаю над модельками и картой, попутно исправляя баги в движке.
На скринах можно заметить z fighting. Сразу вопрос как в ДХ 9 его убрать? Скрины: |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Z файтинг убирается увеличением буфера глубины (или его точностью).
В D3DPRESENT_PARAMETERS ставишь AutoDepthStencilFormat в D3DFMT_D32 или D3DFMT_D24S8 или D3DFMT_D32F_LOCKABLE в зависимости от предпочтений. Обычно можно обойтись и 24 битным. Mr_F_ кидал полезную презентацию где говорилось о нелинейном буфере глубины, для больших расстояний, где чем ближе и детальней объект тем точнее буфер глубины. В любом случае во время моделирования старайся делать адекватные расстояния между параллельными плоскостями. Ни на скринах с нормалями ни на скринах зфайтинга я ничего не могу понять - я вижу только ТЕМНОТУ! |
Ответ: [TrueHorror] - разработка
fps 30-60
я смог залезть на фонарь и дальше гулять по горам ,далее вылетел за карту вот и все . кстати , дебаг лога нет ! |
Ответ: [TrueHorror] - разработка
К чему может привести подобный подход( я про return reinterpret_cast< int >( font );?
Код:
int CreateFont( int size, const char * name, int italic, int underlined ) |
Ответ: [TrueHorror] - разработка
Все зависит от тебя - если накосячишь то компилятор тебе не поможет. А так само значение переменной здесь меняться не будет. Но такая штука больше смахивает на костыль и это означает что у тебя проблемы с архитектурой движка.
Кстати эти шрифты (d3dxfont) ужасно медленные, если ими заполнить хотябы половину экрана то fps у меня на i7 и hd5870 падает ниже 10. Настройки качества шрифтов ничего особого не дают. Незнаю есть ли другие решения, я особо не искал, но у себя я в конце концов сделал через текстуры. Так что если ограничишься выводом fps и еще пару-тройку параметров то всё ок, а вот если будешь выводить страницы текста то лучше найти другое решение. |
Ответ: [TrueHorror] - разработка
Я решил обособить движок в отдельную библиотеку. Классовый интерфейс мне не понравился - там куча проблем с ромбовидным наследованием и прочая муть. Поэтому к большинству объектов вне движка теперь можно обратиться с помощью хендлов( в данном случае int ) и функций работающих с ними. Вот и вся история.
|
Ответ: [TrueHorror] - разработка
хендлы сами по себе тоже необязательно заморачивать, это могут быть просто номера объектов в массивах)
|
Ответ: [TrueHorror] - разработка
Более того их необязательно получать сразу. Опять же в качестве примера как я сделал у себя: для большинства объектов достаточно стандартной обработки, которая уже прописана жёстко в коде, например того класса контейнера который содежит эти объекты, а если всё таки потребуется особая работа с объектом то можно получить его локальный хендл/номер_в_массиве, таким образом избавляемся от большой кучи всяких глобальных указателей/хендлов, которые надо где-то хранить и кудато передавать. Кстати в том же d3d9 совсем не обязательно хранить указатели у себя в коде - их всегда можно получить локально через тот объект с которым работаешь. Например если в качестве аргумента в функцию дается IDirect3DTexture9 ты можешь внутри функции получить tex->GetDevice().
ЗЫ: вообще имхо чем большое хардкода (без потери функциональности) - тем лучше, проще и надежнее движок. Все манипуляции с движком лучше делать через скрипты/тулзы и прочие внешние инструменты. |
Часовой пояс GMT +4, время: 19:47. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot