forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   [TrueHorror] - разработка (http://forum.boolean.name/showthread.php?t=17293)

mr.DIMAS 15.12.2013 18:00

Ответ: [TrueHorror] - разработка
 
Много воды утекло с прошлой версии.

В основном технические изменения.

А именно:
1) Переделал рендерер - появились соответствующие компоненты типа IVertexBuffer, ITexture и т.п. Таким образом рендерер под OpenGL написать будет просто.
2) Ускорил загрузку моделек - в т.ч. уровня. Ранее уровень размером в 1,2 мб грузился за 10 сек, сейчас за 1,2
3) Добавил врагов - пока только ближний бой.
4) Добавил меню - в нем минималистические настройки( настройки графики пока не работают )
5) В скрипты добавил работу с GUI.

Мне нужен код который считает тангенты и бинормали. Тогда смогу сделать бамп или параллакс. А пока просто диффузный свет.

Еще кидайте мне лог( лежит в data/logs ) и фпс.

Скачать

Arton 16.12.2013 03:44

Ответ: [TrueHorror] - разработка
 
Вложений: 1
Запустил. Увидел туннель, понравилось, ассоциации с Пенумброй. Решил сменить графику в меню - вылет.
Запустил по новой, нажал играть. Оказался на какой-то дороге в лесу, ночью. Первое что заметил нежелательное присутствие курсора =_="

Затем странный фонарь, когда проводишь внизу него курсором, издаётся щелчок как в меню по кнопкам. На том месте как раз интерфейс:


Огляделся по сторонам, везде было очень темно, ничего не видно. По правую руку, дорого вела в пещеру, в скале, перед которой, топтались двое подозрительных типов. Пошёл к ним. Один из них быстрым шагом двинулся мне на встречу. Как будто только и ждал когда пойду в их сторону, в его левой руке был нож.
Стало ясно чем это кончится. Особо не раздумывая я рванул вперёд, к пещере, надеясь спрятаться там. Обогнул первого человека, он махнул на меня ножом, но это было уже неважно. Пробежал мимо второго, забежал внутрь и обернулся что бы посмотреть. Один из мужчин топтался перед входом и по каким-то причинам не мог войти...
Любопытство вело меня дальше, в глубь скалы по туннелю. Я пошёл и встретил настоящий страх - перетянутые текстуры:


Перетянутые текстуры заканчивались непроглядной чернотой, я по инерции вбежал в неё, тьма окутала меня со всех сторон. Я замотал головой по сторонам, в надежде увидеть свет. Наконец я увидел три белых точки быстро уходящих вдаль:


"Вылетел с уровня" - подумал я и выключил игру.

FPS ~75
Вложение 19929

Samodelkin 16.12.2013 12:21

Ответ: [TrueHorror] - разработка
 
Цитата:

Мне нужен код который считает тангенты и бинормали.
D3DXComputeTangentFrameEx - считает тангенты и если нужно то бинормали и нормали.

Mr_F_ 16.12.2013 12:58

Ответ: [TrueHorror] - разработка
 
Цитата:

Мне нужен код который считает тангенты и бинормали
http://www.terathon.com/code/tangent.html
этот никогда не подводил

Samodelkin 16.12.2013 21:30

Ответ: [TrueHorror] - разработка
 
Затестил - нормально. Меню выглядит многообещающе. Игра короткая, там действительно при входе в тоннель проваливаешься вниз и всё. У меня враги смогли в тоннель забежать. Да на фонаре тоже звук как будто по кнопкам меню проводишь.

Как всегда тестил на медленном железе: в целом довольно шустро работает, но из-за того что скорость игры завязана на fps играть не удобно. С включённой синхронизацией постоянно скачки - то 60, то 30, то 20, с выключенной чуть удобней, но теперь нету верхнего предела и при входе в тоннель например при 200 fps все слишком быстро происходит. Так что fps 20-200 - вот такой разброс.

Лог на другой машине, но в нём все нормально - время загрузки scene.cxm 453ms, arrival.cxm 1635ms

mr.DIMAS 18.12.2013 23:30

Ответ: [TrueHorror] - разработка
 
Вложений: 2
Наконец-то разобрался с расчетом нормалей. Ранее нормаль вычислялась только для грани, а теперь для каждой вершины - спасибо Борескову за код :). Теперь можно тангенты и бинормали считать.

Скрины - до и после:

mr.DIMAS 22.12.2013 02:25

Ответ: [TrueHorror] - разработка
 
Вложений: 5
Бамп пока не добавил. Сейчас работаю над модельками и картой, попутно исправляя баги в движке.

На скринах можно заметить z fighting. Сразу вопрос как в ДХ 9 его убрать?

Скрины:

Mr_F_ 22.12.2013 11:30

Ответ: [TrueHorror] - разработка
 
Цитата:

На скринах можно заметить z fighting
на скринах вижу только зад негра. в каком месте зфайтинг?

Samodelkin 22.12.2013 18:28

Ответ: [TrueHorror] - разработка
 
Z файтинг убирается увеличением буфера глубины (или его точностью).
В D3DPRESENT_PARAMETERS ставишь AutoDepthStencilFormat в D3DFMT_D32 или D3DFMT_D24S8 или D3DFMT_D32F_LOCKABLE в зависимости от предпочтений. Обычно можно обойтись и 24 битным.

Mr_F_ кидал полезную презентацию где говорилось о нелинейном буфере глубины, для больших расстояний, где чем ближе и детальней объект тем точнее буфер глубины.

В любом случае во время моделирования старайся делать адекватные расстояния между параллельными плоскостями.

Ни на скринах с нормалями ни на скринах зфайтинга я ничего не могу понять - я вижу только ТЕМНОТУ!

tirarex 01.01.2014 12:05

Ответ: [TrueHorror] - разработка
 
fps 30-60
я смог залезть на фонарь и дальше гулять по горам ,далее вылетел за карту вот и все .

кстати , дебаг лога нет !


-- keep your fucking hands away from this code
-- your brain is too small for this
-- ну ты понял

порадовало :-D

mr.DIMAS 08.01.2014 01:40

Ответ: [TrueHorror] - разработка
 
К чему может привести подобный подход( я про return reinterpret_cast< int >( font );?

Код:

int CreateFont( int size, const char * name, int italic, int underlined )
{
  ID3DXFont * font;

  D3DXCreateFontA( g_device, -1, size, FW_BOLD, 0, italic, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, name, &font );

  return reinterpret_cast< int >( font );
}


Samodelkin 08.01.2014 02:52

Ответ: [TrueHorror] - разработка
 
Все зависит от тебя - если накосячишь то компилятор тебе не поможет. А так само значение переменной здесь меняться не будет. Но такая штука больше смахивает на костыль и это означает что у тебя проблемы с архитектурой движка.

Кстати эти шрифты (d3dxfont) ужасно медленные, если ими заполнить хотябы половину экрана то fps у меня на i7 и hd5870 падает ниже 10. Настройки качества шрифтов ничего особого не дают. Незнаю есть ли другие решения, я особо не искал, но у себя я в конце концов сделал через текстуры. Так что если ограничишься выводом fps и еще пару-тройку параметров то всё ок, а вот если будешь выводить страницы текста то лучше найти другое решение.

mr.DIMAS 08.01.2014 16:07

Ответ: [TrueHorror] - разработка
 
Я решил обособить движок в отдельную библиотеку. Классовый интерфейс мне не понравился - там куча проблем с ромбовидным наследованием и прочая муть. Поэтому к большинству объектов вне движка теперь можно обратиться с помощью хендлов( в данном случае int ) и функций работающих с ними. Вот и вся история.

Mr_F_ 08.01.2014 17:06

Ответ: [TrueHorror] - разработка
 
хендлы сами по себе тоже необязательно заморачивать, это могут быть просто номера объектов в массивах)

Samodelkin 08.01.2014 21:37

Ответ: [TrueHorror] - разработка
 
Более того их необязательно получать сразу. Опять же в качестве примера как я сделал у себя: для большинства объектов достаточно стандартной обработки, которая уже прописана жёстко в коде, например того класса контейнера который содежит эти объекты, а если всё таки потребуется особая работа с объектом то можно получить его локальный хендл/номер_в_массиве, таким образом избавляемся от большой кучи всяких глобальных указателей/хендлов, которые надо где-то хранить и кудато передавать. Кстати в том же d3d9 совсем не обязательно хранить указатели у себя в коде - их всегда можно получить локально через тот объект с которым работаешь. Например если в качестве аргумента в функцию дается IDirect3DTexture9 ты можешь внутри функции получить tex->GetDevice().

ЗЫ: вообще имхо чем большое хардкода (без потери функциональности) - тем лучше, проще и надежнее движок. Все манипуляции с движком лучше делать через скрипты/тулзы и прочие внешние инструменты.


Часовой пояс GMT +4, время: 19:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot