L3DT documentation
Large 3D terrain generator

Development plan: Unscheduled features

This page lists the features that are intended to be included in L3DT eventually, but have not yet been committed to any particular release.


User interface

Improve startup speed

  • Moderate logging of startup data? (e.g. contents of settings files?)
  • Split update data into separate 'updates.ini.xml', to cut down on size of local.ini.xml. [This won't improve startup speed, but will be neater.]

User profiles

  • Interface for loading/saving default settings as an XML profile (or patch file?)
  • A 'load defaults' option for specific apps (eg. DF2, BF2, TSE, TA-Spring, etc.)


  • Classes
    • GroupBox (part of static?)
    • Tree
    • List
    • Report (part of list?)
    • Tab
  • Things to handle
    • Fonts
    • Window positioning
    • Setting styles
    • Nesting of controls (dialogs in dialogs, etc)

Plugin-driven display

  • Integrate Sapphire with main window (nb: this will solve tool window order problems :!:)
    • Allow Sapphire to set menu & toolbar.
    • Allow Sapphire to hide / modify status bar.
  • Split 2D rendering into Topaz.zeo.
  • Add thumbnail viewer (like Expose) in Calcite.zeo

Other user interface features

  • Add validator to climate editor to ensure the climate has no gaps in its altitude bands (see bug report.)
  • Add 'recalculate' wizard mode, where user selects calcs to be run, but doesn't have to re-enter parameters (see request).
  • Add option to display georeferenced coordinates in status bar (see request).
  • Add 'preferred program' window, for choosing preferred image viewer, script editor, text editor, etc. [Note: using shell by default. However, this will fix image viewing problems in Linux.]
  • Add 'bump map strength' to TN and LM wizards (defaults to 1).
  • Change edit-box validation in remaining dialogs to get rid of MFC 'please enter an integer' messages.
  • Disable pop-to-top when calculations finish (this is caused by basic prog box.)
  • Pixel information displayed in mouse hover box.
  • Cross-hatching on DM to indicate modified pixels.
  • Modify clip alt range tool so that an alt range can be selected (combo becomes above|below|between, with last option enabling a second edit box), and the set alt can either be relative or absolute (set to|shift by).
  • Pan with middle mouse button.
  • Dynamic list of schemes in view menu.
  • Show progress when minimised (in system tray?)
  • Make calculation progress window non-topmost (instead, bring to front when L3DT is activated?)
  • Calculate map byte allocation in exporter (hey, this could be a calculator plugin!)
  • A memory allocation check in wizards, to prevent out-of-ram events.
  • Cancel button for file I/O (multithread I/O, add plugin support for new prog box). … maybe change implementation of CzProgBox to point to new prog box?
  • Add a nice 'Image drape' feature for Sapphire, with semitransparency support using 3rd texture unit (see this thread for request and method).
  • Revise wizards to be more intuitive (DM size, HF size, Wtable, etc.)
  • Maintain zoom when changing maps (see request).
  • Improve texture layer interface (see request).
  • Use dialog font in map tab control, for ease of use:
    • Measure tab height for fonts.
    • Measure tab width for font (with min and max).
  • Add origin support to 'crop' tool (top-left, bottom-left).
  • Add map size to status bar, and fix column widths (see request)
  • Context sensitive help, linking to the on-line or off-line tutorial1).
  • Create a wizard dialog for batch engine.
  • Algorithm parameters 'tweak' interface.
  • 'Blended' display in texture-combining wizard2).
  • Customisable contour lines3).
  • Restore defaults for schemes.ini.
  • Preview display for light map wizard (see this post).
  • Re-implement multi-threaded view buffer preparation.
  • Implement multi-buffer painting in view.


  • Tablet support for brush tools.
  • Heightfield editor for 2D view.
  • Add mask map to prevent editing of map areas (i.e. to blank-off parts of the DM when using the brush.)
  • Add limits to design map elevation brush (i.e. raise by …, up to…)


Design map algorithms

  • Add blur function for design map altitude (see this thread).
  • Allow 32k x 32k DM's (limit to 2M x 2M HF pixels). Change checks etc.
  • Split design map into:
    • DM-Height (float)
    • DM-PeakMask (BYTE)
    • DM-FracMask (BYTE)
    • DM-CliffMask (BYTE)
    • DM-ClimateMask (BYTE)
    • DM-ErosionMask (BYTE)
    • DM-LakeMask (BYTE)
    • DM-OverlayMask (WORD)

Heightfield algorithms

  • Add 'fill in' algorithm for GeoTIFF terrain (see request).
  • Fully plugin-defined terrain algorithms (variable DM/HF ratios!)
  • Move entire thermal erosion routine into plugin, to demonstrate new API features.
  • Release source code of several algo plugins (design/inflate? thermal?), to demonstrate API features.
  • Add menu options for remaining heightfield passes (peak, mountain, fluvial/thermal, etc.)
  • Add coastal / river erosion (terrain suffers greater brittle fractures when wet at base).
  • Larger heightfields
    • Automatically make DM mosaic when HF tiling is enabled and DM is larger than HF tile size (for new DM, blank

Water map algorithms

  • Bake water map onto texture (waves, swells, etc) for orthographic maps (e.g. boardgame maps).
  • Make water plane calc switch sea/lake type depending on edge conditions.
  • Have some salinity-loss in shallow seas, to account for rivers connected to the sea.

Light mapping

  • Radiosity mapping (e.g. this).
  • Export 'shadow height map' option.
  • Calculate ambient occlusion.
  • For specular lighting:
    • Update materials in installer.
    • Test & tweak.
    • Document.

Texture mapping

  • As requested by Uray, and Forboding Angel:
    • Add diffuse and specular components to materials.
    • Allow creation of diffuse and specular maps.
  • Allow land types to have multiple materials, with noise-based blending between them.
  • Noise may be perlin-based, or from a wrapping mask image.
  • Apply changes to bump-mapping calc too.
  • Add displacement-mapping to TX_GenMapPro.

Selected area calculations

  • Do light-map area calculation for Andy.
  • Add 'Calculate area' wizard.
  • Add calc.AM.GenMapArea func
  • Add calc.LM.GenMapArea func
  • Add UI to allow calculation of selected areas.
  • Add stop/resume feature (remembers tiles completed, allows resume of remaining tiles).

Mesh decimator

  • Allow user to specify triangle limit, and split triangles in order of variance until limit reached (see request.)
  • Optimise triangles consistently across tile borders, instead of using unoptimised triangles (see request.)

Other algorithms

  • Algorithm for stitching two or more map projects together seamlessly.
  • Investigate calculation suspend/restore.

Fancy features

Generalised 3D model support

  • Implement model class in L3DT, and expose via plugin API.
  • Rebuild Azurite and atMeshDecimator to use model system.
  • Rebuild OBJ, S3O plugins to use model system.
  • Rebuild Sapphire to use model system.
  • Add model manager.
  • Allow all plugins to share model objects.

Other fancy features

  • Caves.
  • Flowing water (rivers, waterfalls, rapids, etc.)
  • Simple linear feature creation (roads, rail, fences, etc.)
  • Design heightfield by drawing contours.
  • Generate design map from user-designed 'primitives map' (e.g. plains, hills, mountains, etc).
  • Vector/polygon based area definition for overlays and other operations4).
  • Latitude-based climate variation (eg poles-to-tropics).
  • Preview option that generates only specific parts of the heightfield5).
  • Strata-masking of erosion.
  • Allow different water colours for different water types (swamp, river, etc.)
  • Interpolate contour lines to generate heightmap.
  • Allow partial wrapping (east/west and north/south) — see request.

File I/O

  • Add option to (re)export alpha map XML from outside of wizard (see request.)
  • Add option to import heightmap from OBJ or other mesh format (see request.)
  • Plain-text file option in texture splatting (as opposed to the XML file).
  • Add support for VTP Enviro tilesets.
  • Add alpha-only RGBA export for alpha-maps (um…why?)
  • 'Export to DF2' (see here).
  • Add option to change mosaic naming scheme (using regex?)
  • Add XSLT for bundysoft XML files.
  • JPEG 2000 plugin, using OpenJPEG.
  • Plugin for file preferences.


  • Re-optimise water flooding routine.
  • Use SSE2 assembly optimisations where possible.
  • Investigate speed improvements to progress renderer. If possible, increase prog map size.


  • Interface for adjusting movement speed (see request).
  • Multithreaded pre-emptive texture tile loader for Sapphire, to reduce single-frame lag when moving.
  • Add a gridbox overlay to the 3D viewer, to help users that need to align features with particular places.
  • Support for 3D navigation in Sapphire using devices such as 3DConnexion's SpaceNavigator.


  • Change default textures to be powers of two in size.


  • Plugin for VarListTree (use for settings).
  • Plugin to force wrapping on maps that do not already wrap.

Tertiary features

L3DT Standard Edition

  • DONE Allow high-res textures up to 32x (same as Pro).
  • TODO Allow high-res attributes maps (up to 4x?)
  • TODO Allow high-res light maps (up to 4x?)
  • TODO Include Spring SD7 exporters.

Following to remain reserved for Pro:

  • Large map support (greater than 2049x2049px).
  • Multi-core support.
  • Batch support.
  • High-res normal maps & bump-maps.
  • High-res alpha maps & RGBA alpha maps.
  • Mosaic heightfields.
  • Mosaic split/combine.

Undo and backup/restore

  • Modify L3DTio_Backup:
    • DONE Don't backup maps that aren't initialised (instead flag that they are to be freed on record revert).
    • TODO Backup/restore project's climate list (for calcs and for map editing).
  • Add automatic backup to:
    • TODO 3D ramp mouse tools for HF (inc. bulldozer, leveller, line & c)
    • TODO Manual flood / delete water body tools.
  • Other:
    • TODO Backup map settings (from map settings list). — or should these be considered volatile?
    • TODO Add 'history' dialog box.
    • TODO Handle water body list preservation through undo.
    • TODO Add restore points within calcs, e.g. when making large heightfields.
    • TODO Add 'backup map' function to wizards (e.g. in bundyengine); this would allow us to store settings before they're overwritten.

Network rendering plugins

  • Network client plugin:
    • Done! Implemented map-transfer interface.
    • Done! Implemented script execution handler.
    • TODO! Implement calculation abort handler.
  • Network server plugin:
    • TODO! Implemented map-transfer interface.
  • Both plugins:
    • Done! Developed project settings sync message handlers.
    • TODO! Develop climate and material synchronisation message handler.
    • TODO! Demonstrate network rendering on TN calc.
    • TODO! Demonstrate network rendering on LM calc.
    • TODO! Demonstrate network rendering on TX calc.

Vegetation / object mapping

  • DONE Create 'vegtype' class.
    • TODO Allow user-provided output ID code.
  • DONE Create calc_VM_GenMasks function, to generate masks for each veg type in project.
  • TODO Add slope/sun-based LT/veg mask param (see request).
  • TODO Create Veg mask wizard, in which user selects veg types to use.
  • TODO Create veg editor and veg manager windows.
  • TODO Push veg to Sapphire, somehow
  • TODO Vegetation (for Spring) (see here.)

Automatic settings / climate / materials migration

  • TODO Share custom climates / materials between different L3DT versions.
  • TODO Share custom presets and other settings.


  • TODO Remove/rebuild 'StdFont' support.
  • TODO Fix CTextureMap::UpdateArea (in Sapphire) for single maps (mipmaps not done yet!)
  • TODO Create climate for blended TGEA Atlas terrain.
  • TODO Add geovent texture to Spring exporter.
  • TODO Create supertexture blender to pre-calculate a material's texture and bump-maps at 2x, 4x, 8x, 16x, etc, to accelerate later bump-map/texture blending algorithms.
  • TODO Add a file overlay tool to Sapphire.
  • TODO Fix 'cancel' bail-out errors for TN, LM, etc…
  • TODO Add benchmarking features (see this thread).
  • TODO Add markers to project, and can be created/deleted in Sapphire (also goto). In 2D view too?
  • TODO Generate selected area for HF in design/inflate.
  • TODO Add perlin weighting to texture AA blending?
  • TODO Add displacement mapping (for light maps only?)
  • TODO Update climates to use new DDS texture set.
  • TODO Extend climate algo to include custom LT params options (e.g. alt ranges as heightfields.)
  • TODO Add option to change project edge wrap flag (see this thread).
  • TODO Reduce default horiz scale to 1m.
  • TODO Modify installer to allow installation of start menu items, desktop links & file associations for all users (see request).
  • Unicode build
    • Convert string code to 'const char*' and CStringA
      • TODO bundyscript
      • DONE calc
      • DONE classes
      • TODO CommonUI
      • TODO dialogs
      • DONE ext
      • DONE file
      • DONE helper
      • TODO lib
      • DONE map
      • DONE var
      • TODO wizards
      • TODO all plugins that use strings
    • Recompile with UNICODE flag set, and convert UI code, where necessary, to 'const wchar_t*' and CStringW
1) Is this still necessary with wthrus?
2) , 3) This is just eye-candy.
4) Isn't this what Leveller does? Should I replicate this?
5) I'm not sure this can be done, but I'll keep it on the list for now.
l3dt/plan/unscheduled.txt · Last modified: 2017/08/31 06:38 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki