Just downloaded FMOD Ex 4.3 and FMOD Designer. I’m currently using OpenAL and my own sound library editor, so before eventually switching over I’d like to know a few things.
Using Designer files
From what I understand, it is possible to load the packages you create with Designer. That would be very nice, as I like that tool. But I can’t really find examples of how to load the FEV file. The programmer API Help covers a section that uses FMOD::EventSystem
ButI can’t find the EventSystem in the FMOD.HPP header!
Found it. FMOD_Event.DLL is a seperate module.
One of the main reasons to use FMOD may be the support of geometry. I have rather complex indoor situations with lots of rooms, doors and walls that can block the sound. I don’t need 100% accurate sound, but volume dimming is important. And not only for the player as listener. I need to test if other listeners ("monsters") can hear you as well for AI purposes. Does FMOD provide functions for testing that?
- Spek asked 8 years ago
Hi Rick, welcome to the forums.
[quote:2g0b62jw]One of the main reasons to use FMOD may be the support of geometry. I have rather complex indoor situations with lots of rooms, doors and walls that can block the sound. I don’t need 100% accurate sound, but volume dimming is important.[/quote:2g0b62jw]
It’s probably worth mention that for sound occlusion we recommend you use a low resolution version of your geometry, many customers use collision geometry.
[quote:2g0b62jw]And not only for the player as listener. I need to test if other listeners ("monsters") can hear you as well for AI purposes. Does FMOD provide functions for testing that?[/quote:2g0b62jw]
No there is no way to do custom queries based on FMOD::Geometry using the API. I think it would be overkill anyway, our geometry occlusion system is quite sophisticated. Trying to do it for every creature could get quite expensive.
I think a better approach would be to roll your own simplified system which would be more scalable.
Thanks for replying.
I’m also using lower-res meshes for physics and such, so that shouldn’t be a problem. That doorknob or pipe won’t affect the sound much anyway I guess Most sectors can be reduced to simple cubic shapes.
There’s another challenge though. The world gets loaded in the background as the player moves. A little bit like GTA does, but then for an indoor environment. Maybe the low-res meshes are small enough to load the complete game-world just at once into FMOD. Otherwise… Is FMOD capable of adding/removing pieces of world geometry (quickly)? And eventually via a background thread? There is plenty of time to load, as long as it doesn’t disturb the main game thread.
Too bad occlusion cannot be tested for a custom point. I see it would be an expensive check, but there are only 1 or 2 enemies at a time in my particular case.
Thanks for helping!
[quote:3p1of4vg]Is FMOD capable of adding/removing pieces of world geometry (quickly)?[/quote:3p1of4vg]
You can use Geometry::setActive to exclude whole chunks of the geometry from processing.
It’s worth noting that the in the newer releases geometry processing is done in it’s own thread. This means that if there is too much geometry it wont slow down the frame rate of your app, instead it will just get less responsive.
SetActive could prevent useless checks, however, I still have some memory concerns. I’d like to have some more details about the Geometry, as it covers some important design decisions for me.
A situation sketch; I have one huge (mostly indoor) world instead of smaller sub-levels. The total bounding box would be about 300 x 300 x 2000 meters (like a skyscraper).
As for visuals and physics, this world is divided in sectors (typically rooms and corridors) which are loaded from disk in a background thread as you walk around. I could try the same for FMOD. Meaning that I create and destroy pieces of geometry on the fly. But is it possible to call "createGeometry", "addPolygon" and such from another thread? And does it have a big impact when for example, adding and removing ~6 sectors with 200 polygons each? Maybe FMOD has to rebuild trees or something, I can imagine this takes energy.
Another option would be loading the entire thing at once. Like you mentioned, I’ll use a very low-poly version of the meshes, so the overall polygon count will be drastically reduced. But what does it cost? For example, if the entire low-res world requires ~1 million polygons, what would be roughly the memory footprint? And performance wise, is it smart to load the whole thing once? Probably more calculations get wasted as unused sections are evaluated. In my case most of the sound should be blocked by floors/ceilings, but nevertheless, maybe the floors below will also be taken into account?
I need some directions so I can chose wisely between the two options.
Please login first to submit.