TODO: Difference between revisions
Jump to navigation
Jump to search
(Reorder, update) |
(Update FMOD/Wwave) |
||
Line 58: | Line 58: | ||
=== FMOD === | === FMOD === | ||
* | * Dragon Age: Origins uses FMOD for sound and music | ||
* I have experimental FSB (FMOD sound bank) support working in a private branch | * I have experimental FSB (FMOD sound bank) support working in a private branch | ||
* FEV (FMOD events) format is still unknown to us | |||
* FEV (FMOD events) format is still | ** Apparently, groups of event lists with events | ||
** Event is everything from "play sound", over "set volume" to "apply echo" | |||
** Game areas specify the group to use for the area | |||
** Scripts then probably tell FMOD to play event lists out of that group | |||
=== Wwave === | |||
* Dragon Age 2 uses Wwave for sound and music | |||
* Should be similar in concept to FMD | |||
== Events == | == Events == |
Revision as of 10:47, 31 July 2015
Standalone(ish) fixes/improvements
Broken NWN2 XML
- Not standard-conform XML. Need custom XML parser; stock XML parsing libraries will just throw errors.
- <?xml version="1.0" encoding="NWN2UI">
- No single root element
- Attribute values not enclosed in quotes most of the time
- Special characters in attribute values not properly escaped
- Unmatched quotes on several occasions
- Event functions
- Special values like PARENT_WIDTH
- Altrite is working on a broken-XML fixer
CJK glyphs in the console
- The "system font" we use for our debug console, DejaVu Sans Mono Bold, does not feature any CJK (Chinese, Japanese, Korean) glyphs
- Not strictly necessary, but nice to have for printing, say, Witcher area names in Asian languages
- We could maybe integrate CJK glyphs from the Hanazono fonts or other suitable libre fonts
- We need to match the height with DejaVu Sans Mono Bold
- CJK glyphs tend to be more complex and therefore wider. They're usually rendered twice as wide as Latin glyphs
- Our console code needs to take that into account
Graphics
MDL supermodels and animations
- Mostly working in NWN thanks to jbowtie's work
- Might need some cleanup
- Animation scale is off in a lot of cases. Mostly visible in the talking and yawning animations in non-human characters
- Models should smoothly change between different animations
- The animation system probably needs to be a bit more complex, to allow for "overlaying" different animations onto each other. For example, for speaking while holding an object and keeping the head focused on the PC character.
Lighting
- We don't yet have a proper light system
- I started working on it: [1], but my approach is seriously lacking. You can see the edges of the tiles that make up on NWN area in many cases
Materials
- NWN and more excessively KotOR/KotOR2 use material properties in combination of semi-transparent textures to create metallic textures. My OpenGL knowledge is quite basic, I generally fudge through everything :P. Research there would be needed
- Materials in The Witcher are closely tied to shaders
OpenGL and Shaders
- mirv_ is currently working on a graphics system overhaul, complete with shader support
- All Aurora games use shaders in some form
- NWN uses ARB shaders. We probably need to rewrite them from scratch
- DirectX shaders might be automatically convertible with Cg?
- Otherwise, look at what Wine does with the shaders, and use that as a basis?
- All the games, even NWN, use some form of shaders. Still totally missing from xoreos, since we have no idea how to use them in general yet. Moreover, this was before GLSL, so they're in the old assembly-like language. We probably need to rewrite them from scratch
- We need shaders for tinting in NWN2 (objects and area geometry) and TexturePaint nodes in Witcher
Videos
XMV/WMV
- Used in Xbox versions of KotOR/KotOR2
- Our WMV decoder (for XMV videos used in Xbox versions) is missing P-frames and J-frame
Actimagine VX
- Used in the Nintendo DS game Sonic Chronicles
Sound
FMOD
- Dragon Age: Origins uses FMOD for sound and music
- I have experimental FSB (FMOD sound bank) support working in a private branch
- FEV (FMOD events) format is still unknown to us
- Apparently, groups of event lists with events
- Event is everything from "play sound", over "set volume" to "apply echo"
- Game areas specify the group to use for the area
- Scripts then probably tell FMOD to play event lists out of that group
Wwave
- Dragon Age 2 uses Wwave for sound and music
- Should be similar in concept to FMD
Events
Gamepad binding
- The Xbox versions of KotOR and KotOR2 don't use a mouse. We have basic support for joysticks/gamepads, but no real bindings to the engine or ideas how to handle that in general
Engines
Script system
- Needs rewrite, badly
- ImperatorPrime has started with that
- Afterwards, can mostly copied to other engines
- They need new engine function tables, though
- The names and signatures of which we have
- KotOR2 and NWN2 have some extensions
- Might need extending the script bytecode parser, might not
- Witcher uses Lua scripts together with NWScript
- Sonic has no scripts at all, it seems
NWN
- Menus
- Basics are there, but needs fleshing out
- Supermanu is working on the character generator
- Pathfinding, walkmesh
- "Moving" should move the PC, not the camera
- NPC walking
- Triggers, areas on the floor that calls scripts on enter/leave
- Multi-page asian fonts
- LanguageID 0 is not necessarily "English", but "The language of the game install"
- This is okay for languages with Latin characters
- Messes up strings in community modules with Asian languages that stuff strings in to languageID 0
- The original fails there too, though
KotOR/KotOR2
- Menus
- Basic structure is already there, just missing most of the specific widgets stuff
- Semi-hardcoded, with GFF files (hierachical data, similar to XML in spirit) describing the setup. The xoreos-tools repository has a tool for converting GFF files into XML for easy reading.
- Dialogues
- DLG files, similar to NWN
- Some extensions, like camera setup
- Dialogues are displayed very different than NWN
- KotOR2 has script extensions
- Passing parameters to scripts
- Call several scripts, combine with AND/OR for branching
- Animations
- Should be similar to NWN
- No PC shown
- Needs character creator menus
- Loading of character files in class Creature
- Minigames
- Swoop racing
- Pazaak
- Hardcoded, mostly removed from usual game logic
Jade Empire
- Menus
- Apparently very similar to KotOR's menus
- Minigames
- Flyer, top-down shoot-em-up thing
- Hardcoded, mostly removed from usual game logic
NWN2
- Menus
- Implemented using XML
- See Broken NWN2 XML
- Animations (Granny)
- nwn2-dev contains some code working with Granny data
- Call into the original Granny DLL to convert between binary and ASCII Granny data, though
- berenm started some Granny RE
- nwn2-dev contains some code working with Granny data
- Facial animations (FaceFX)
- Trees (SpeedTree)