Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 20.10.2013, 17:39   #1
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Неработоспособность лучей PhysX Wrapper'а

Добрый день, Булчане!

Собственно появилась какая то ну совсем непонятная проблема, из за которой я не могу развивать один свой проектик (Doom2d: Remake, если кто помнит).

Вообщем ситуация следующая:
- имеем уровень (состоит из стастаческих стен (физический кубов), каждая стена имеет имя "wall");
- имеем туеву хучу монстров, которые разбросаны по уровню и ходят (когда активны) утыкаясь в эти стены, проверка на тычОк происходит путём pxRayGetBody (соответственно у каждого монстра есть свой луч pxCreateRay() )

Так вот, когда на карте одновременно активных (не разбуженых игроком) монстров мало, то они хорошо своими лучами отлавливают wall'ы, разворачиваются/прыгают/идут_по_своим_делам_дальше. А если активированы все монстры, то ни один луч в игре не работает (а на этих лучах завязано всё - стрельба, ИИ, кнопки, подбирание предметов и т.д.). При этом вся физика как работала, так и работает (ну разве что ещё физические триггеры тоже отказываются работать). Ошибок никаких нигде не выдаётся.

В связи с этим вопрос - что за нах?
У кого нибудь такая ситуация была?

Очень бы не хотелось менять физическую библиотеку, так уж прикипел я к PhysX Wrapper'у за годы использования
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Старый 21.10.2013, 14:52   #2
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

К сожалению, я хочу тебя огорчить. Пфизикс не поддерживается уже который год, и багфикса не будет. Это первое. Второе: Ты, скорее всего, не сможешь пофиксить этот баг сам - для этого тебе придется поговорить с такими, как ABTOMAT, tormoz или др. и не факт что помогут.
Третье: хочешь обойти баг: переходи на буллет. Самая лучшая физ библа на блитц, которую я знаю. Хотя она и несколько сложнее пфизикса.

ИМХО
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
St_AnGer (21.10.2013)
Старый 21.10.2013, 15:14   #3
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

Да ты кэп

Физикс-враппером я пользуюсь с самого его изобретения Render'ом, и то что он давно не поддерживается, как и то, что уже давным давно открыты его сурсы - я в курсе. Это во-первых.

Во-вторых - как бы сам являюсь далеко продвинутым пользователем враппера (ну не как Автомат и tormoz конечно, но всё же).

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

Хотя я и попробовал сходу переписать на буллет отдельные части проекта для тестов (потому что первой мыслью как раз и был переход на булет) - не понравился результат из за вышеупомянутой причины. Хотя я не спорю, что если посидеть подольше, то всё будет пучком. И не отрицаю, что, возможно, я переведу проект на буллет в будущем. Очень мне нравится Debug в этом враппере, он просто шикарен.



Ну и кстати, я нашёл причину ошибки - она происходит когда монстры упираются своими лучами в триггеры/воду, и причём это зависит именно он количества активных монстров. Хз почему так, но факт есть факт - поменял врапперные воду и триггеры на самопальные, и всё заработало. Странно, вообщем.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KCEPOKC (21.10.2013)
Старый 21.10.2013, 16:02   #4
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

Сообщение от XoreX Посмотреть сообщение
такими, как ABTOMAT, tormoz или др.
lol wut


По сабжу, переходи на что-то посерьезнее блитца. Тогда можно и физдвижок не менять.
(Offline)
 
Ответить с цитированием
Старый 21.10.2013, 22:58   #5
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

глупый вопрос , а как удалить луч ?
функции типа pxdeleteray нет
(Offline)
 
Ответить с цитированием
Старый 21.10.2013, 23:09   #6
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

А никак, её и нету. Вся надежда на удаление всего физического - pxDestroyWorld и ручное обнуление переменных.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
tirarex (21.10.2013)
Старый 21.10.2013, 23:38   #7
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

кстати как от камеры до потолка лучем дистанцию считать ?
(что бы игрок в ползке не появлялся головой в потолке при отжимание контрола

делаю так

pxRaySetPosition(rayx,plx#,ply#,plz#)
pxRaySetDir(rayx,0,1,0)
DebugLog pxRayGetDistance#(rayx,10)

но дистанция считается до стены а не до потолка
(Offline)
 
Ответить с цитированием
Старый 22.10.2013, 10:15   #8
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

Сообщение от tirarex Посмотреть сообщение
кстати как от камеры до потолка лучем дистанцию считать ?
(что бы игрок в ползке не появлялся головой в потолке при отжимание контрола

делаю так

pxRaySetPosition(rayx,plx#,ply#,plz#)
pxRaySetDir(rayx,0,1,0)
DebugLog pxRayGetDistance#(rayx,10)

но дистанция считается до стены а не до потолка
Ну с направлением луча правильно вроде бы, а вот pxRayGetDistance#(rayx,10) меня смущает что то. Емнип эта функция вторым параметром принимает тип пиканья, т.е. 0 - пикает статику и динамику, 1 - только динамику, 2 - только статику. Ну и дистанцию немного по другому я считаю:
Function pxGetDistance#(x1, y1, z1, x2, y2, z2)
    return SQR((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)
End Function
первыми параметрами пихаешь позицию игрока, вторыми - pxRayGetPickX/Y/Z с нужным параметром пиканья (0-2). Хотя это может быть и лишнее, не помню почему я на такой велосипед пересел со стандартного pxRayGetDistance.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (19.03.2015)
Старый 19.03.2015, 17:38   #9
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

Эта функция должна выглядеть так
Function pxGetDistance#(x1#, y1#, z1#, x2#, y2#, z2#)
Return Sqr((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1))
End Function
Тоже перейду на вручное вычисление, чем встроенное.
А то в некоторых местах луч проскакивает и не замечает поверхности.

Хотя, предстоит ещё определить какое тело попало под луч, если луч иногда промахивается.

Луч всё равно в некоторых местах промахивается...
или я недопонимаю pxRaySetDir

Разобрался с pxRauSetDir с http://forum.boolean.name/showthread.php?p=264086

Последний раз редактировалось LLI.T.A.L.K.E.R., 19.03.2015 в 20:02.
(Offline)
 
Ответить с цитированием
Старый 20.03.2015, 22:32   #10
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Неработоспособность лучей PhysX Wrapper'а

Что то долго ты разбирался
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com