3D FPS, демка движка.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: 3D FPS, демка движка.

Сообщение FireFenix » 02.02.2013 (Сб) 19:20

Если персонаж провалиется, то тока релоад? :D
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 02.02.2013 (Сб) 19:47

Забыл написать: "Enter" - быстрый перезапуск.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: 3D FPS, демка движка.

Сообщение FireFenix » 02.02.2013 (Сб) 20:00

По моему так не должно быть. Если смотреть с торца то вся текстура тёмная, а при ~45°вылезают блые контурные линии на сегментах текстуры.
Может там должен быть бамп-маппинг? :D

На скрине ещё ладно, пару больших сегментов, а когда кучу маленьих возникает что-то не понятное :D

P.S. GF 9800GTX+
У вас нет доступа для просмотра вложений в этом сообщении.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 03.02.2013 (Вс) 13:31

FireFenix, эта текстура временная - она вообще не моя, буду её менять. И, видимо, виновата она - может нормали не нормализованы, может Normal.y < 0 попадается, не проверял.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 06.02.2013 (Ср) 10:55

Перезалил демку. Теперь приседание и прыжок такие, как мне хотелось:
На присяде ГГ автоматически держится за края нижнего сектора, не упадёшь.
Если в полёте нажать "присесть", то ГГ как бы поджимает ноги - можно пролететь над преградой.
Включил оптимизацию, заранее отсекающую невидимые полигоны.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 09.02.2013 (Сб) 0:58

Mikle писал(а):Перезалил демку. Теперь приседание и прыжок такие, как мне хотелось:

Теперь у меня 0 fps. Рендерится один фрейм со значением FPS, равным нулю. Больше ничего не происходит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 09.02.2013 (Сб) 9:34

Опять перезалил демку, можно пострелять по стенам, изрядно надымить.
Дым пока не освещается, да и другие недоделки есть - пока первая проба.
Хакер писал(а): Рендерится один фрейм со значением FPS, равным нулю. Больше ничего не происходит.

Такое, к сожалению, у некоторых происходит. Иногда после перезагрузки винды восстанавливается, иногда (под семёркой) помогает запуск из-под админа.
Если я дам тебе исходник, можешь написать, где клинит? (предвижу критику кода :), но я не против)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 09.02.2013 (Сб) 12:44

Mikle писал(а):Такое, к сожалению, у некоторых происходит. Иногда после перезагрузки винды восстанавливается, иногда (под семёркой) помогает запуск из-под админа.
Если я дам тебе исходник, можешь написать, где клинит? (предвижу критику кода :), но я не против)

Давай. Если много времени не займёт — сделаю.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 09.02.2013 (Сб) 12:55

Хакер писал(а):Если много времени не займёт — сделаю.

По крайней мере увидеть, в каком месте клинит, не долго. Скинул в личку.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 09.02.2013 (Сб) 16:38

Под IDE оно не тормозит.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 09.02.2013 (Сб) 18:07

Я дал исходник B.V., он пишет то же самое, что под IDE всё в порядке, от ключей оптимизации не зависит:
http://forum.sources.ru/index.php?showt ... getnewpost
Выяснил, что виснет на расчёте физики:
Код: Выделить всё
   While QTime > OldTime + Quant
     OldTime = OldTime + Quant
     PhisTick
   Wend

Это вообще странно, этот кусок аппаратно-независимый.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 09.02.2013 (Сб) 18:18

Mikle писал(а):Это вообще странно, этот кусок аппаратно-независимый.

Я получал на многоядерных системах такой баг (на PHP): delta_time, получаемая как разница между двумя вызовами функции, возвращающей текущее время, иногда давала отрицательный результат.

Я думаю в твоём случае это решится выставлением affinity mask так, чтобы использовалось только одно ядро. Причём я тебе уже объяснял, как это делать, если ты помнишь и если я не ошибаюсь. В топике про UT99.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 09.02.2013 (Сб) 18:23

Попробовал — не помогает.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 09.02.2013 (Сб) 18:28

Mikle писал(а):Выяснил, что виснет на расчёте физики:
Код: Выделить всё
   While QTime > OldTime + Quant
     OldTime = OldTime + Quant
     PhisTick
   Wend

Это вообще странно, этот кусок аппаратно-независимый.

А в чём вообще смысл такого кода? И почему Phis, а не Phys?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 09.02.2013 (Сб) 20:02

Хакер писал(а):почему Phis, а не Phys?

Неграмотность, поправлю потом.
Хакер писал(а):delta_time, получаемая как разница между двумя вызовами функции, возвращающей текущее время, иногда давала отрицательный результат.

А при чём тогда работа из IDE и из EXE? Быстродействие? Вряд ли, ведь всё равно основная нагрузка на Direct3D, fps под IDE и в EXE совпадает.
Хакер писал(а):в чём вообще смысл такого кода?

Если с прошлого кадра прошло времени больше, чем квант (1/200 сек.), то выполняется перерасчёт физики и инкрементируется на квант OldTime - таким образом частота расчёта физики всегда 200 гЦ. Там есть строка перед этим местом:
Код: Выделить всё
If QTime > OldTime + Quant * 100 Then OldTime = QTime - Quant * 100

Она защищает от длительных пауз - более 0.5 сек. игнорируется, но от отрицательный действительно не защищает. Можно попробовать вставить что-то типа:
Код: Выделить всё
If QTime < OldTime Then OldTime = QTime - Quant

Или вообще, заремить PhisTick - всё должно работать, даже стрельба и повороты останутся, не будет падения и перемещения ГГ.
Эх.. мне бы комп, на котором это ловится.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 09.02.2013 (Сб) 20:40

Пришла мысль - попробуй заменить ф-цию QTime() так:
Код: Выделить всё
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long

Public Function QTime() As Double
  Static QTimeVal As Double
  Static OldQC As Currency
  Dim QC As Currency
  Dim QF As Currency

  QueryPerformanceCounter QC
  QueryPerformanceFrequency QF
  QTimeVal = QTimeVal + (QC - OldQC) / QF
  OldQC = QC
  QTime = QTimeVal
End Function

QTimeInit можно вообще выкинуть, а можно не трогать, ничего не испортит.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: 3D FPS, демка движка.

Сообщение ger_kar » 10.02.2013 (Вс) 7:00

У меня нормально работает, правда пару раз в самом начале при попытке выстрелить выскакивала ошибка времени исполнения - 6 Overflow, причем со странным заголовком Sky. Хотел снять скрин, но она перестала выскакивать.
Ну и конечно прицела не хватает :)
Бороться и искать, найти и перепрятать

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 10.02.2013 (Вс) 9:09

ger_kar писал(а):со странным заголовком Sky

Там просто в свойствах проекта стоит такой заголовок.
ger_kar писал(а):прицела не хватает

Никак не могу решить, куда целиться - сейчас выстрел идёт из ствола оружия (справа снизу) в направление камеры в бесконечность. Могу сделать рассчёт пересечения луча зрения с игровыми объектами и автоматически целиться именно в эту точку, будет ли это лучше? Поясню. При выстреле трассирующим оружием, типа лазера, бывает удобно точно целиться стрейфом, может быть такая ситуация, когда при небольшом стрейфе влево мы бы попали, куда надо, но перед глазами встаёт преграда. Она загораживает взгляд, но не выстрел, будет плохо, если произойдёт перенацеливание на эту преграду.
Может сделать два прицела? Один всегда на бесконечность, другой отмечает точку, куда мы попадём, никаких перенацеливаний.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: 3D FPS, демка движка.

Сообщение ger_kar » 10.02.2013 (Вс) 9:49

Вобщем отловил я ситуацию в которой возникает ошибка.
После старта и опускания на платформу, не двигая персонаж, два раза выстелить. Первый выстрел происходит нормально, а на втором выкидывает ошибку переполнения.
Run Time Error 6.jpg
У вас нет доступа для просмотра вложений в этом сообщении.
Бороться и искать, найти и перепрятать

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 10.02.2013 (Вс) 10:35

Проверка Integer Overflow убрана опцией оптимизации компилятора, значит это деление на 0, корень из отрицательного и т. п.
Вроде НЕТ МЕСТ, где это может произойти. У меня ошибка не воспроизводится.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: 3D FPS, демка движка.

Сообщение Хакер » 10.02.2013 (Вс) 11:16

ger_kar , если ещё раз вылезет, присоединись в OllyDbg и глянь стек вызовов.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: 3D FPS, демка движка.

Сообщение ger_kar » 10.02.2013 (Вс) 11:31

Так я в любое время могу ее вызвать.
Вызывается она так. Старт. Персонаж опускается на платформу. Клавиатуру не трогать! Мышь не шевелить! Только клик левой кнопкой! Первый выстрел - все ОК! Втрой - приехали...
Бороться и искать, найти и перепрятать

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 11.02.2013 (Пн) 10:26

Никак не могу найти комп, где бы ошибка повторялась, но нашёл, где изображение сильно дёргается примерно раз в секунду. Я заменил QTime на VBшный таймер - и всё стало почти нормально, осталась мелкая дрожь, но это понятно - ф-ция Timer сама по себе имеет низкую точность. Процессор, кстати, одноядерный, то есть это не причина:
Хакер писал(а):решится выставлением affinity mask так, чтобы использовалось только одно ядро

Выходит, QueryPerformanceCounter - не всегда работает точно. Вопрос - как синхронизировать работу без этого?
Timer (или GetTickCounter, или TimeGetTime) при использовании TimeBeginPeriod даёт приемлемую точность, но это тоже не всегда надёжно, я сталкивался с ситуациями, когда под Win7 это работало не так, как под XP, бывает, что фоновое воспроизведение MIDI или MOD музыки сбивает TimeBeginPeriod.

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: 3D FPS, демка движка.

Сообщение Admiralisimys » 11.02.2013 (Пн) 15:59

Выходит, QueryPerformanceCounter - не всегда работает точно. Вопрос - как синхронизировать работу без этого?

Всегда был убеждён что это наиболее точный таймер на платформе Windows. Microsoft в шаблоне приложения для Windows Phone 8 именно этот таймер предлагает использовать разработчикам.
Вот только разве QueryPerformanceFrequency QF я б каждый раз не пересчитывал, а взял бы это значение в глобальную константную переменную ещё в начале. Да и совет Хакера про affinity mask полезен.

Из альтернатив в книге Jonathan S. Harbour - Multi-Threaded Game Engine Design описывается класс Timer, в основе которого таймер из C++ библиотеки Boost. Как вариант собрать DLL с этим классом и вызывать из VB.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: 3D FPS, демка движка.

Сообщение ger_kar » 12.02.2013 (Вт) 5:51

Mikle писал(а):Никак не могу найти комп, где бы ошибка повторялась
Странно. Я вчера попробовал на других компьютерах и везде эта ошибка повторилась, точно также, как и на моем.
Бороться и искать, найти и перепрятать

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 12.02.2013 (Вт) 9:17

ger_kar писал(а):Странно. Я вчера попробовал на других компьютерах и везде эта ошибка повторилась, точно также, как и на моем.

У меня не воспроизводится.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: 3D FPS, демка движка.

Сообщение ger_kar » 12.02.2013 (Вт) 14:59

Все это конечно очень странно. Либо действия, которые приводят к ошибке у меня отличны от тех которые делаете вы, либо это каким то неведомым образом зависит от установленной системы. Что касается самих компьютеров, то все свои тесты я проводил на 3 разных компьютерах с точки зрения железа, но с системой, которая была установлена с одного дистрибутива. На всех трёх, те действия, которые я описал приводят к ошибке. Если персонажа, хоть немного сдвинуть, то ошибка не возникает. Может до начала движения есть перемененные, которые содержат нулевое значение и которое заменяется на другое с началом движения?
Бороться и искать, найти и перепрятать

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 16.02.2013 (Сб) 15:49

Хакер писал(а):я тебе уже объяснял, как это делать, если ты помнишь и если я не ошибаюсь. В топике про UT99

Что-то не могу найти ничего такого.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: 3D FPS, демка движка.

Сообщение ger_kar » 16.02.2013 (Сб) 18:31

Mikle, ошибку так и не удалось выявить?
Бороться и искать, найти и перепрятать

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: 3D FPS, демка движка.

Сообщение Mikle » 16.02.2013 (Сб) 20:53

Ту, что у тебя? Нет. Она больше ни у кого не проявляется.

Пред.След.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList  
cron