Graphics related:
- Direct3D (at least for DirectX 8.1, DirectX 9.0 i know its a bit more complex)
Sound related:
in documentation/features/etc i see mentions to DirectSound3D, EAX and A3D. im assuming DirectSound3D is the only API library and it uses the EAX and A3D plugins for add features. i dont see any references to other cross-platform API libraries. so i suggest:
- OpenAL
- fmod
- any other worth using library
Misc:
- any application using this engine would be best if it could select not just Graphics API library based on OS but also Sound API library (assuming you guys add those above or others). example, on windows, i could pick eitheir OpenGL+OpenAL or Direct3D+DirectSound3D, or Direct3D+OpenAL. or some other combo.
- add some more detail on features, FAQ, etc
hey there
long time no see!
been investigating lately... interesting facts. well its late to talk about this and im guessing you guys already reached the same or similar conclusions but here my findings and conclusions either way
Audio domainA3D 3D Sound Effects... are long deadits probably worth nothing that by now that adding
A3D is pointless, as A3D as been mostly out of race after Creative purchased Aureal (the owner) and basicaly incorporated its technology in EAX. this is like comparing Glide to OpenGL or Direct3D. popular in its time, but by far no longer used actively in new applications due to vendor-lock ins and defunct company/products. A3D.DLL anyone ?
EAX 3D Sound Effects... are phasing outalso
EAX (who gained room over A3D and became common in the past when a lot of people still bought standalone sound cards from Creative), is in fact by now, in downfall, as increasingly its more common for people to use the motherboard builtin sound functionality, often with RealTek chips. even more, it has been
deprecated by Creative itself in favor of OpenAL 1.1. while back in early 2000's it was worth having EAX due to common usage of Creative sound cards with EAX tech, right now its completely the opposite. the last and final version was EAX 5.0, introduced in the
Creative Sound Blaster X-Fi cards, dated 2006.
Miles Sound System (MSS) by Rad Game ToolsMSS works well, has support for many OS and consoles (Mac OS 8/9, OSX, Linux, Windows, Xbox/Xbox360, Wii, PS2/PS3), but its greatest flaw is that its simply proprietary/commercial. if eventually some time in the future, someone developed a module/plugin with bindings for its SDK/libraries (cant include the libraries themselves because of the license), that would be a good idea to further help port CS to other platforms (ie PS uses MIPS processor, ELF-alike executables for normal applications/games (using PS2 API ofc) and also supports Linux with modified kernels), but definitely should not be made a priority. would be interesting at very least
Other Libraries and CODECstheres also Audiere,
libavcodec, FMOD, among other libraries to play a multitude of audio/video formats and their codecs... im not sure how the sound layer is implemented on CS, but would be interesting to provide support for namely positional audio in music files deployed in .ogg, .ac3, .flac, .aac, .etc formats. of these the best option would be libavcodec as it decodes and encodes an impressive ammount of formats. its being used in many programs, filters, libraries... the wikipedia article speaks for itself. Ogg/Vorbis among other libraries are built-into libavcodec and it probably would be an easy and fast way to have plenty of support, at the cost of loosing some flexibility and control over implementing the various libraries (which would be a lot of work!)
OSS and ALSA Drivers... yay!regarding drivers, Creative has been developing and releasing open source OSS and ALSA drivers for Linux in GPL license, which is great news not just in support (if effectively CS uses OpenAL 1.1 EFX extensions, and the drivers work, then these sound cards as well as (probably) the older ones will work with Special Effects similar or better than EAX) but also a new move in a hardware vendor towards open source drivers that might compel others to follow...
CoreAudio implementation of OpenAL... for Mac OS X!nothing to say here, im not familiar with it. but sounds good idea
DirectSound... is phasing outalso, in the audio domain,
DirectSound/DirectSound3D was phased out in favor of the
XACT with DirectX 10 in Windows Vista, making DirectSound work as a pass-through on XACT and loosing all hardware acceleration capabilities, while also i think, loosing some compatibility (effectively running in compatibility/emulatation mode).
Old Windows WDM and New Vista/Longhorn Driver Modelalso, with Vista, the audio stack was revamped and turned into what we know today as Windows Audio Session API (WASAPI) and other gibberish talk, which complicates matters further for DirectSound in future Windows versions. since theres a new model, the old Windows 98SE/ME/2000/XP/2003 WDM model will be phased out. i wonder what happens to standard windows sound Win32 API calls? will they be replaced with .NET and XACT/WASAPI and WMP?
from wikipedia, regarding hardware acceleration for DirectSound3D + EAX on Windows Vista:
As of 2007, a solution to re-enable hardware acceleration of DirectSound3D and Audio Effects, such as EAX, called Creative ALchemy was launched[3]. Creative ALchemy intercepts calls to DirectSound3D and translates them into OpenAL calls to be processed by supported hardware such as Sound Blaster X-Fi and Sound Blaster Audigy.
Creative vs DirectSound vs XACT vs Vistafinally from what i read somewhere, Creative was dropping DirectSound and XACT support all together in new cards/chips and drivers in favor of OpenAL, which i think will still be made in WDM in Windows XP/2003, the new WDDM/whatever the new name in Vista/Longhorn is, and OSS and ALSA in Linux.
Graphics domainDirect3Dbasically unless you are pursuing DirectX 10/11 model to make use of Direct3D, XACT (instead of DirectSound) and XInput (instead of DirectInput) for usage in Vista/LongHorn and XBox 360 or returning to DirectX 8.1/9 for Direct3D (kind of pointless given alternatives), i dont see why consider again DirectX/Direct3D
my recomendations
A3D - completely
remove it if it ever existed in CS (which i cant find proof)
EAX - if exists, abstract into a plugin/module or
remove it if your OpenAL implementation already does the job (OpenAL 1.1 EFX extensions). if not, dont bother!
MSS - consider
adding some time in the future, say, in some 2 or 3 years, if it still exists by then!
libavcodec - consider
adding this one too or instead of MSS. it supposedly works on multiple platforms as well
OSS, ALSA and CoreAudio - iif it aint broken it doesnt need fixing :p
Windows Drivers mess - i would say dont rely (
remove) on Win32 APIs for software audio rendering or investigate further to support (
add) both the old and new model to support older and newer OS
X11 and SDL - keep. what about
adding Xgl for 2D hardware acceleration of X11 via OpenGL? probably unneeded if OpenGL alone already does well 2D
OpenGL and OpenAL - keep ofc :p consider binding to Mesa for OpenGL as it supports v2.1. does not support 2D graphics though!
DirectShow/Direct3D 7.0/8.1/9.0 and Direct3D 10/11 - unless your planning on adding the old/adding the newer, ignore it. if adding the newer, consider adding the sound and input counterparts
DirectSound/DirectSound3D and XACT - unless your planning on adding XACT as well, and if OpenAL already performs well enough and does the same job or better, just remove it
DirectInput and XInput - again unless your planning on adding the other components above or add both the older and newer, forget it
DirectPlay - comedy option
a final though...i dont know how modularized CS is, but in my opinion it would be best to develop it into an abstraction engine that controls Graphics, Audio, Physics, Network, etc using a common framework that sends its instructions to the chosen modules/plugins, residing outside of the parent source code.
imagine GNU/Hurd kernel. instead of having everything in the same tree, theres a multitude of modules that the microkernel loads on demand
something like this:
CS
.....Graphics (SDL/SVGALib applies?)
..........OpenGL (hardware) (Mesa3D)
..........OpenGL (software) (Mesa3D)
..........Xgl hardware) (X11 + OpenGL)
..........X11 (software)
.....Audio + effects/positioning (SDL)
..........OpenAL/CoreAudio (hardware)
..........OpenAL/CoreAudio (software)
..........ALSA (software)
..........OSS (software)
.....Input, Network - SDL
ah well i think i busted my brain for today! eh
have fun reading and commenting :p