--------------------------- SLADE - stuff.txt --------------------------- Big list of unimplemented features, requests, TODOs, ideas, and other general development notes ------------------------------------------------------------------------- TODO List --------------------------------------------------------------- --- Bugs --- --- Minor Problems/Annoyances --- - Long calltips can extend off the edge of the screen - Incorrect ctrl+tab behaviour with tabs - Esc to close find+replace window --- Map Editor 3.1 --- - Checks: - Invalid sector references - Add 'rebuild sector' fix option - Better UDMF property handling, proper support for unknown properties read with the map - Tag edit mode for TIDs/LineIDs(?) --- Other 3.1 --- - Look into using wxWebView to show documentation in a tab --- Map Editor post-3.1 --- - 3d mode - Offsets/scaling copy+paste - (Z)MAPINFO parsing for sky texture - Auto-align Y - Better vis checking - 3d floors preview - Portals preview - Aspect ratio correction - Script editor - Compiler output pane - Error pane rather than just displaying error output - Ability to edit/compile library scripts - Other script types (DIALOGUE etc) - Find & Replace - Thing types - Action specials - Textures - Map format conversion --- Features for 3.1.1 --- - Resource editor: - Edit entries externally - Map editor: - Offsets/scaling copy+paste - (Z)MAPINFO parsing for sky texture --- Editor Features --- - ANSI screen editor - Proper font viewer - 'Cleanup' stuff (unused patches, textures, flats, unneeded entries...) - Compilation of other language scripts - Archive merging - Archive conversion - 'Export As' for archives (or just ability to select a different type/extension on save as) - 'Export As' for entries - does conversion+export --- Formats --- - 7z - Lzma/bz2 for zip - View any entry as raw gfx --- Text Editor --- - 'Tabs as Spaces' option --- Texture Editor --- - Make 'grid' size optional - Snap to grid for dragging patches --- Gfx Editor --- --- Audio --- --- General --- - Preferences Dialog: - List of entry types, ability to enable/disable detection of certain types - Finish entry data format (EDF_*) system: - Simple user-definable data formats: - Minimum/maximum size - Byte pattern to look for at a certain offset in the file (ideally allow multiple of these), something like: pattern = 10, 255, 255, 255, 0; = look for 255,255,255,0 at offset 10 in file - Call inbuilt tests for more complex detection algorithms (wad files, doom gfx, etc) - Convert inbuilt tests to lua? (might be slow, but would allow for all entry types to be user-defined) - General optimisation: - Entry type detection (maybe move the initial detection to a background thread) - Gfx conversion - *Resources system: - opened archives are either used as resources or not - when searching for patches etc, resource archives are searched, then base resource archive - archive list on archive manager panel could have 'resource' checkboxes for each list item - Different icon sets - Better backup system - More drag-and-drop support - Rewrite VirtualListView with item filtering/sorting in mind - Need to do something with folder order - either always order alphabetically, or allow reordering --- Internal / Dev --- - SFont class - Ability to set an archive never to read entry data into memory (read data from the file every time) - MemChunk subclass that deals with a file rather than a memory block - Some lump (sub)formats can only be identified properly from the presence of other lumps; e.g. GL nodes and THINGS/LINEDEFS - Needs some kind of proper archive type system, handled by ArchiveManager (similar to SIFormat) - Need to do something about keeping ArchiveEntry.data.size and ArchiveEntry.size in sync (Still need the size member for entries that don't have their data loaded into memory yet) (could make ArchiveEntry a subclass of MemChunk?) - Better way to get the currently selected entries would be nice - Should probably write my own lexer for TextEditor since the default cpp/cppnocase ones are somewhat limited - Multithreaded entry type detection? Unimplemented Feature Requests ------------------------------------------ --- General / User Interface --- - Fully customisable toolbars - Sorting by column (I.E. Name or Type) --- Archive / Entry Management --- - mass export to format (XWE) - sorting lumps in archive (not just their display) --- Entry Editing --- - SBARINFO viewer/editor -- SBARINFO is getting deprecated, so maybe not --- Gfx --- - Save offset type between sessions Translation dialog: - Source/destination palette selectable - Scroll through multiple preview gfx - Zoom on preview gfx (perhaps in pop-up window?) - Allow use with truecolour gfx - Tool for trimming blank space around a graphic. - Tool for adding blank space to either side as needed to put the x offset right in the center -- done as CCMD Conversion dialog: - Enter and esc mapped to convert all and skip all --- Text Editor --- --- TEXTUREx Editor --- - list textures and patches in alphabetical order (with non-iwad ones at the bottom of the list) - find/replace for patches - Ability to search for a texture containing a specific patch --- General --- - Support for LZMA, Bzip2 and zip formats other than store and deflate Ideas / Possible Features ----------------------------------------------- - Tree view for entry list (optional) - Ability to perform all archive/entry management functions via the console (possibly allow scripts too?) - 'Animation viewer' (select a bunch of sprites to test an animation or whatever) - Hex editor - Font editor - Better UI for palette editing tools (something like the color remap maybe?) - UI for creating custom colormaps (with other settings than dcolors.c's) - Merge "Tint" and "Colourize" into a versatile image recolour feature with RGB, HSL, and Lab tweak options as well. - *Project system: - Hide/abstract underlying archive/entry stuff - Will need to specify a 'game' for the project to enable/disable certain features: - Changes the way certain things are handled (ie vanilla will have separate textures/flats where zdoom will have just textures) - Limits resource formats to what is supported (PNG in zdoom but not vanilla) - Work with 'resources' rather than entries - Resources imported from archives - Resource types: - Graphics: - Textures - Flats (for games that don't support mixing of flats/textures only) - Sprites - Maps - Audio: - Sounds - Music - etc... - Data (anything that doesn't fit into the above categories) - Resources can either be internal or external: - Internal means the resource is imported into the project and exported with it - External means the resource exists in an external archive and will not be exported with the project (for resources in an IWAD, texture pack, etc) - Ability to export project to archive(s): - Can export all resources to a single archive - Can 'split' resources to separate archives (ie one for textures, another for maps, etc) - A system of cascading configurations will be needed to handle all the game/port/format combinations - Archive/Entry information database: - Store within the archive or in a separate file (optional) - Menu item 'Archive->Write Metadata' - Keeps information about archive entries: - CRC (will be used to determine if the info is up-to-date) - Extra properties - Entry type - Model and voxel viewer - The 'findModifiedEntries()' function could be used to create an 'Export Changes in New File' feature as an alternative to saving the archive, useful especially for IWADs. - EntryPanels able to handle multiple entries for special purposes - GfxEntryPanel: shows all selected images in a browser kind of thing - AudioEntryPanel: loads all selected entries as a playlist - Full DECORATE editor (would go nicely with the project system above) - DeHackEd editor (could be an outgrowth of the DECORATE editor since it'd require actor/state management) - Feature to dump map information (number of vertices (+ nodebuilder vertices), of linedefs, of sidedefs, of sectors, of segs, of things) - Report on flats and textures used (which ones, and how many times) - Report on thing placement (using game configuration to name and categorize things) - Report specials used in map (both linedefs and, if appropriate, things, using game config to name and categorize specials) - Ideally would allow to output in a wiki syntax to help make the tables used in the Doom Wiki. - Waiting For SladeScript(tm), in three remaining steps: - Console commands to perform archive management actions (opening or creating archives, saving, importing files, exporting entries, copying, etc.) - Console command aliases (like in ZDoom) - Script mode: command-line options to (1) run a console command batch at startup and optionally also (2) quit once the batch is finished. - Bonus fourth step: interpret DeuTex scripts, allowing SLADE to replace that outdated tool in projects like Hacx and Freedoom. Other / Notes ----------------------------------------------------------- http://tfc.duke.free.fr/old/models/md2.htm -- reference code for a simple OpenGL MD2 viewer