ZVision
Jump to navigation
Jump to search
ZVision | ||
---|---|---|
Engine developer | RichieSams | |
Companies that used it | Activision | |
Games that use it | Zork Nemesis, Zork: Grand Inquisitor | |
Date added to ScummVM | 2013-10-17 | |
First release containing it | N/A |
The ZVision was the engine used by Activision in Zork Nemesis and Zork: Grand Inquisitor.
This engine was added by the GSoC student RichieSams to ScummVM as part of the GSoC 2013.
The ScummVM engine uses Marisa Chan's ZVision re-implementation, which is available from http://github.com/Marisa-Chan/Zengine, as a reference.
It should be noted that from a technical viewpoint, this engine has nothing in common with the MADE engine used for Return to Zork. It should also not be confused with the Z-machine which is the original Virtual Machine used for the original Zork text adventure games.
Immediate TODO's
- Finish InputControl implementation
- Implement SaveControl
- Test the SaveManager against gjse.scr (save room) and gjre.scr (restore room)
- Add a dirty rectangling system for RenderManager AlphaEntries so we're not rendering them to the backbuffer every frame
- Add graceful failure for when .str isn't parsed correctly.
- Get Courier Prime and FreeSerif added to the packaged fonts, then fall back on them when fonts can't be found
- Figure out why animations aren't working any more
List of TODO's for ZVision to be playable
- Fix audio problems in videos
- This is a problem with Video::VideoDecoder
- Essentially, Zork videos require the sound chunks to be read as one continuous stream
- The current model puts each chunk into a separate AudioStream and then queues the streams
- This is being worked on by clone2727
- Finish implementing the rest of the ResultActions. (See actions.h)
- ActionDebug
- ActionDisableVenus
- ActionDisplayMessage
- ActionDissolve
- ActionDistort
- ActionFlushMouseEvents
- ActionInventory
- ActionKill
- ActionEnableMenuBar
- ActionPanTrack
- ActionPreferences
- ActionRegion
- ActionRestoreGame
- ActionRotateTo
- ActionSaveGame
- ActionSetVenus
- ActionStop
- ActionSyncSound
- ActionTTYText
- ActionUniverseMusic
- Finish implementing the rest of the Controls
- InputControl
- SaveControl
- SlotControl
- SafeControl
- FistControl
- HotMovieControl
- PaintControl
- TilterControl
- Implement inventory support
- Implement the menu
- Implement subtitles
- Implement saving preferences
- Scroll speed
- etc.
ZGI specific TODO's
- Determine why gary.scr doesn't load properly
- This is the first "room". It loads up the environment variables, the opening movie, and then the main menu
- Implement spellbook support
- Add a different resolution for ZGI
- Check for the difference between the CD version of ZGI and the DVD version
- Potentially higher resolution (Window and/or videos)
- Potentially different video file format
Other TODO's
- Make sure all image rendering is endian safe
- Look into NOT flatting all the files to root
- This would require keeping track of what room you're in so that you can use the correct parent folder
- Look at NEMESIS.ZIX and INQUIS.ZIX
- Re-order the if-then statements in scr ResultAction parsing to use the order of highest occurance (See scr_file_handling.cpp: Line 150)
- Evaluate all in-engine warnings/debug messages and perhaps move them to higher debug channels (Or ZVision specific debug channels)
- Clean out unused member functions from the Console class (See console.h)
- Convert pointer initializers to nullptr instead of 0
- Add 'true' UTF-16 support for non-english versions of the game. (See StringManager)