TITLE: X-Ray Engine 1.6 task list

Legend
------
- Planned
* In progress
+ Done
o On hold
? Decision pending
c Canceled

--------------------------------

nitrocaster: Pavel Kovalenko
- Mgc::Math::PI (MgcMath.h) conflicts with PI macro
- get the entire solution compiled with ForceConformanceInForLoopScope=false
- get rid of atimgpu, use amd ags instead (will also eliminate LNK4098)
- scan solution with PVS-Studio and fix found bugs
o get rid of any borland specific code
  o write new or use existing controls instead of ones from VCL/ElPack/AlexMX
  o adopt/rewrite editors
    - LevelEditor
    - ActorEditor
    - ShaderEditor
    - ParticleEditor
    o PPEditor
- Modules
  * subdivide xrGame into multiple modules
    * xrScriptEngine
    - xrAI
  + merge xrCPU_Pipe into xrCore
  c merge xrAPI into xrCore
  - merge xrXMLParser into xrCore
  - merge crypto into xrCore
  + delete xrCoreStatic, plugins should use xrCore
- 3rd party libraries
  - decouple/update ODE
    - dig through current ODE and analyze changes that were made by GSC
    - get the latest ODE and make sure it can be used with xray
  - decouple OpenSSL
  - decouple OpenAL
  - decouple GameSpy
  - decouple lzo
  - decouple PPMd
  - decouple hxGrid
- bugs/issues
  - generic
    - (bytes_need<=mSize) && vl_Count
    + primary/secondary thread syncronization does not work properly
  - UI
    c clip cursor in windowed mode with enabled input capture
    - dragging music volume slider doesn't make any effect until one presses 'Apply' button
    ? save MP settings
  - core
    - misplaced arguments in calls to xrDebug::backend
  - multiplayer
    - dedicated server
  - render
    - when d3d compiler fails to compile some shader, it displays message
      "Your video card doesn't meet game requirements ..." even if GPU actually meets game requirements (feature level)
    - blurred text on r4
    - alpha transparency works improperly - objects like steelworks and meshes quickly lose details and become
      invisible when camera moves away (r1 looks better)
    - R1: incorrect sun path
    - glow material doesn't cast shadows (causes artifacts on actor shadow)
    - no actor shadow in R2/R3/R4 (works in R1)
    - big world shadow appears and disappears depending on the sun direction
  - physics
    - falling actor can continue being in falling state under specific conditions
    + small bullet manager time factor leads to crash
  - gameplay
    - ammo switching
  - plugins
    - update plugins for new 3DS Max versions
- improvements
  - common/unsorted
    * review and refactor code
    - fix log messages format (normally, the 'color' character should be followed by a space)
    - add registry entries (player name, cdkey, etc) if not exist
    - x86_64 support
    - better multithreading
    - 'stuttering' problem (likely due to old luajit)
  - UI
    - close sleep dialog by ESC key
  - multiplayer
    - ipv6 support
    - get rid of DirectPlay
    - log suspicious packets and kick/ban its senders after X attempts
    - dedicated server
      - remove unnecessary modules initialization (render/sound/etc...)
      - use standard windows unput instead of DirectInput (causes problems on dedicated servers)
      - console (remove GUI and use separate administrative tool?)
      - remove topmost startup logo window
      - Linux support
  - xrCore
    - debug
      - get rid of old BlackBox code
      - hide all process windows on crash
    - logger
      - don't keep log in std::vector, write to log file immediately
      - tweak CConsole to use new logger
  - render
    - debug render is extremely slow, have to be optimized
    - FXAA
    - SMAA
    - PCSS (or some other alternative)
    - precompiled shaders should be recompiled once sources are updated
    - wallmark normal/bump mapping
    - ideas to consider
      - improve night vision
      - make saturation dependent on exposure (see ArmA series)
      - re-enable fov and hud_fov console commands
      - grass shadows
      - particle shadows
      - SSAO/HDAO improvements
      - add grass draw distance to render settings
      - 3D shell casings
      - allow .seq files to be given a stop frame/point (animated blood puddles underneath bodies)
      - DirectX 12
      - remove old R1
  - sound
    - occlusion
  - physics
    - ideas to consider
      - vegetation collision
  - editors
    - level editor
      - visible level-loaded decals and the ability to see decals that aren't just 'wallmarkblend' type
      - undo function performance
  - AI
    - NPCs don't react to enemies shooting around until see them or get shot
  - xrLC
    - try to optimize memory requirements (use disk cache for intermediate data?)
  - gameplay
    - ideas to consider
      - stealth mechanics

STALKER_2010: Andrew Boyarshin
* detach/update LuaJIT
* detach/update LuaBind

awdavies: Andrew Davies
- cleanup
  * Get rid of deprecation compiler warnings.
  * Remove macro redefinitions.
- engine
  - multithreading (order listed is order of completion).
    - research
      - Determine where multithreading could benefit potential performance bottlenecks.
      - Examine bottlenecks with profiler.  Document results.
      - Designate which tasks should be assigned to which cores.
    - implementation (edit as research gets closer to completion for more accurate plan).
      - Include library capable of creating light-weight kernel-visible threads.
      - Abstract specific tasks to certain cores.
      - Add thread pool/scheduler for tasks.
      - Run profiler again (might need to find one capable of tracking multiple threads).

Highflex: Alex M
- plugins/content creation
  * Update Primary DCC Tools ( Maya )
  - Optimize pipeline for asset converting ( direct export to game? )
  - Python scripts for stalker skeleton control rig creation
- game code
  - Improve Weapon System ( Additional Animations, Options )

Swartz27: Matthew Swartz
+ Fix blurred text on R4
+ Fix issue #24: Fix overloaded particle system
+ Fix sun path not following weather configs in R2-R4
* Add actor shadow to R2-R4
* Add grass shadows (r2_sun_details) to R2-R4
* Add zoom and reload DOF which is read from the weapon configs if present
- Add "sunmask"/cloud shadows shaders for R3&R4
  - Disable loading of pre-compiled shaders on R3/R4 to allow for loading of new/modifed shaders
    - Have game automatically delete shaders_cache whenever there is a new shader or modifed shader
  - Add a console command to turn cloud shadows on or off (requires restart)
- Add soft shadows shader to R2 (original author: cj ayho)
- Add console command for enabling manual reloading on weapons
? Remove R1 renderer and all references to it
+ Increase vertex buffer size from 1024+512 to 4096
+ Add console command to change shadow map size via console (options: 1024, 1536, 2048[vanilla default], 2560, 3072, 4096)
+ Extend r__geometry_lod from 1.2f to 5.f
* Fix problem with weapons using a grenade launcher not lerping the animations
+ Fixed skybox stretching
