Jump to content
The Dark Mod Forums

Search the Community

Searched results for '/tags/forums/definitions/' or tags 'forums/definitions/q=/tags/forums/definitions/&'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Discussion
    • News & Announcements
    • The Dark Mod
    • Fan Missions
    • Off-Topic
  • Feedback and Support
    • TDM Tech Support
    • DarkRadiant Feedback and Development
    • I want to Help
  • Editing and Design
    • TDM Editors Guild
    • Art Assets
    • Music & SFX

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Experimenting with TDM on Steam Link on Android. see topic http://forums.thedarkmod.com/topic/19432-tdm-on-steam-link-for-android/

    1. freyk

      freyk

      Did the TDM team removed D3's internal Joypad feature? (tdm works only with systemkey binders for joysicks)

    2. freyk

      freyk

      Thanks to shadrach, i got my joypad working in TDM on steam link!

  2. Thanks, I can also recommend gog galaxy. The idea of the custom tags is really nice, I'll have to try this out too!
  3. Keep in mind also that mission size, and complexity have increased dramatically since the beginning. For a lot of veteran mappers, it can take over a year to get a map made and released. The last dozen missions have for the most part been pretty massive, with new textures, sounds, scripts, models etc. We seem to be long past the point of people loading up the tools, and banging out a mission in a few weeks that's very barebones. We still do see some of those, but I noticed in the beta mapper forums and on Discord, that mappers seem to make these maps, but don't release them, and instead use the knowledge gained to make something even better. Could just be bias on my part scrolling through the forums and discord server though.
  4. YOU TAFFERS! Happy new year! Deadeye is a small/tiny assassination mission recommended for TDM newcomers and veterans alike. Briefing: Download link: https://drive.google.com/file/d/1JWslTAC3Ai9kkl1VCvJb14ZlVxWMmkUj/view?usp=sharing Enjoy! EDIT: I promised to someone to write something about the design of the map. This is in spoiler tags below. Possibly useful to new mappers or players interested in developer commentary.
  5. Seems to confirm: https://bugs.thedarkmod.com/view.php?id=5718 does it happen in the latest dev build: https://forums.thedarkmod.com/index.php?/topic/20824-public-access-to-development-versions/
  6. TTLG? That's Through the Looking Glass Forums. A looking glass fan community. Has been around for a long, long time. https://www.ttlg.com/forums/
  7. I just read@motorsep Discovered that you are able to create a brush, then select it and right click "create light". Now you have a light that ha the radius of the former brush. Just read it on discord and thought it may be of use for some people in the forums here too.
  8. This FM was an incredible and unexpected delight. So much detail put into the little things and character interactions, it always had something unexpected and often times hilarious at every corner. Not all that difficult at least in terms of figuring out what to do, if you get really stuck you can figure it out by thinking back on everything you've read and discovered... stealth wise it feels nearly impossible not to get caught in the primary objective's building on maximum AI settings, but I'm sure there's someone out there who could complete it with no alerts. Found more than half of the secrets and completed the other side quests with ease. Congrats and thank you for this gem, definitely among the top FM's. Obviously one of the most surprising aspects, as is hopefully no big spoiler to say, is seeing the first ever TDM FM with a female player. Whoever voiced her did some of the best voice acting too, the progress lines when you reach certain areas were a delight to listen to, I'd really say she did a better job than some AAA voice actors! Wouldn't mind seeing the definitions for the base sounds making it in vanilla as an option for all mappers, being stuck with a male player by default can be a bit of a limitation... then again it would be just as nice if the player wasn't always a thief and you could as easily play as a guard or builder or heck even a reverent! With the more silly aspects included I'll say this felt a bit like a steampunk No One Lives Forever On the one and only negative note I can think of, there was just one thing I had a disappointment with...
  9. https://github.com/HansKristian-Work/vkd3d-proton/tags <- directx 12 wrapper for dxvk https://github.com/doitsujin/dxvk/tags <- directx to vulkan wrappers D3D 9 to 11 eg. dxvk if you want to try it with horizon zero dawn you need to copy out dxcompiler.dll from Tools\ShaderCompiler\PC\1.0.2595\x64 and bink2w64.dll from Tools\bin and place them next to HorizonZeroDawn.exe. then copy over dxgi.dll from dxvk and d3d12.dll from vkd3d and place them next to it to. now fire up the game and let the shaders recompile -> profit.
  10. I think the reason the dev forums exist is to provide a place where the implementation of features can be discussed without getting mixed up with other debates when someone believes what the devs are doing is wrong. We often post public discussion threads for features with subjective elements like the frob outline, because community feedback is very important. But there will always be vocal defenders with strong views for or against certain features, or how exactly it should be implemented in their opinion. At some point a decision has to be made and be carried through, which is what the dev forums are for. Almost all of the threads are very technical, basically explaining and discussing recent or potential code changes with other devs. Its hard to say. Its a hobby the devs do in their spare time, so people come and go when they're in the mood and when they have the time. The team page is mostly accurate except for some relatively newer additions like myself.
  11. **Update** As of 2.11 beta 3 these are available in the core mod *** ======================= Older Info: Currency Pack Gets Polished Even More: REVISION 3 HERE -Shader adjustments to the diffuse and specular - still does better with some light to play with -Fallback reflections provided by material specific cubemaps -Non-cubemap options available via packed in skin variant (or just stick with the original pack) -Color corrected inventory icons -Added moveable ingots -includes the sequel to "Iris" titled "currency_test.map" Example of cubemap reflections doing heavy lifting at lower light levels: REVISION 2 REVISION 1 Currencies of the Empire CC0 Loot Pack - Initial Release -Includes 13 new item definitions representing all kinds of loose change for packing couch cushions throughout The Empire -"Loot Lore" in the editor description field, but hey it's TDM and these are basically public domain so do what you like! -Lowest of low tri counts with the highest of high resolution materials. 4 mats for 13 assets !!!
  12. Did a great find today: Quake 4 mods for dummies. Now online readable. http://forums.thedarkmod.com/topic/5576-book-quake-4-mods-for-dummies/?p=412644

    1. Obsttorte
    2. Bikerdude

      Bikerdude

      He changed ita long while back, it was so he was using the same name as he uses on other forums.

  13. I just found this thread on ttlg listing Immersive Sims: https://www.ttlg.com/forums/showthread.php?t=151176
  14. Changelog of 2.11 development: beta211-08 (rev 16770-10264) * Fixed crash when minimizing TDM on Windows (post). * Added HD carpets (thread). * Fixed player getting delayed and lower damage on high fall ending with mantle (6231). * Removed wrong LOD stage in atdm:env_ragdoll_commoner_female. * Reverted addition of default "map of" inventory item. * Made it easier for modders to substitute invgrid parchment background (6241). beta211-07 (rev 16758-10258) * Fixed extinguished candles stim-lighting each other on game start (6223). * Added menu settings for sheathe toggle, and changed default (6232 thread). * Saint Lucia mission improvements (thread). * Fixed GUI warnings in New Job. * Renamed "New Missions" to "Missions List" in main menu (6230). * Fixed initial difficulty highlight on Objectives screen (6229). * Fixed Objectives title slightly cut off on low text scale (6234). * Added mansion01 window assets (6235). * Fixed normal map of turquoise_uneven (6222). * Allow user to tweak pm_noclipspeed (6237). beta211-06 (rev 16739-10248) * Saint Lucia mission improvements (thread). * Fixed rare crash during melee combat (6225). * Fixed func_peek crash on Linux (5553). * Fixed bottle crash in "Pearls and Swine" (6227). * Fixed textures of cheapbeermug (post). * Fixed warnings in book_ornate_gothic readables (post). * Fixed minor issue in broad phase of collision detection. beta211-05 (rev 16727-10239) * Fixed rare NaN blocks from volumetric lights on AMD driver (post). * Fixed rare thin holes in geometry on low "render scale". * Fixed major performance regression in "r_shadowMapSinglePass 1" mode. * Added subtitles to New Job mission (5914). * Fixed subtitles hidden during CameraView type of cutscene (6197). * Fixed last character of subtitles occasionally clipped away (5914). * Fixed missed alert count if player hides into darkness during guard's combat startup (6211). * Added blueprint assets by Dram. * Fixed UV map in bwindow01_frame model (6217). * Allow female guards to sleep on floor (6208). * Dmap messages about PlanarGraph and EarCut now include 3D world position. * Some minor rounding changes in text placement in GUI. * Restored value of pm_bobup from 2.10. beta211-04 (rev 16714-10226) * Fixed wrong lightgem values briefly after game load/start (6088). * Fixed alert counter for civilians immediate alert (5286). * Some main menu text made translatable (2960). * New assets: Precursor "ancient" loot by Kingsal, galleon wreck, gothic cabinet, grandfather clock with new clock scriptobject, pagan menir (standing stone statue), pair of large marble lion statues, feather duster prop * Make sure all newly created door entities have the right rotate value set (5051) * Fix missing normalmap for audiograph, fixed shadowmesh for armchair_victorian_02.ase * Various small asset fixes (missing faces in LOD stage of boiler02_med.lwo, mangled stairs in galleon.lwo, gaps in spade models, normals on desk2 and desk3 models, UV issues on various other models) (3771). * Improved resolution for shield_goldarms texture (4894). * Added "looping" keyword to looping clock ticking sounds. * Exclude female pagan materials from release builds. beta211-03 (rev 16689-10219) * Avoid copying of large array on AMD, fixing a terrible performance regression (thread). * Enabled Frontend Acceleration = r_useParallelAddModels by default. * Fixed error when same decl file exists packed and unpacked with different case (post). * Don't crash TDM if automation port is occupied: warn, retry, and disable instead (thread). * New Job: the mission is no longer unfinishable if you guess the safe combination without visiting the Lord's room + visportal fixes. * Ambient world prefab: expanded light radius from 1K to 10K. * Added currency pack, cobblestone pack, furniture pack and tiling treasure hoard texture * Added wall mounted locks, improved sofa and leather ottoman * Added star wallpaper * Block CMake build without setting build type (post), fixed CMake + MSVC build. beta211-02 (rev 16670-10208) * Fixed bugs with counting number of alerts (5286, 6186). * Fixed bugs in in-game and savegame screenshots (link). * Disable GL debug groups to fix performance on some AMD drivers. * Added a lot of new assets from Epifire's missions (6188). * Added and refactored locks/safes by Obsttorte, Epifire, Dragofer. * Added book skins by Wellingtoncrab. * Fixed missing wastebasket material in Hazard Pay (link). * Support r_skipAmbient and r_skipInteractions in new backend. * Added spawnarg call_used_action_script on frobable movers. * Fixed definitions of ambient lights with normal-dependent color (6090). * Fixed KOBoxSize not being restored for the sake of blackjack. beta211-01 (rev 16656-10189) * Many improvements in new volumetric lights implementation + added cvars (5850, thread). * r_softShadowsMipmaps: fixed render scale, fixed screenshots. * Faster shadow volume generation with BVH, more cvars and tweaking (5886). * Optimized stencil shadows: turbo shadow vertices are static on GPU. * Improved solidness / visibility logic on models (6175). * Added spawnargs allow_idle_anims and allow_random_headturning. * Avoid sound amplification due to negative sound loss spawnarg (5913). * Fixed weird glitch on game load (6149). * Removed one frame of latency from "com_smp 0" mode (5875). dev16650-10157 * Volumetric lights reimplemented: dither pattern removed, performance improved (5850). * Added audiograph entity and assets. * Fixed shader compilation with r_softShadowsMipmaps on some Linux AMD GPUs (post). * Fixed bug in new frobstage_xxx material macros (5427). * Massive frobstages refactoring in materials: new macros are used now (5427). * Trace model: limits increased and refactoring (5887). * Massive cleaning of prefabs, automaton station script fix (6013). * Fixed rotten_paper_nancy_hand GUI in world view. * Perfume bottle model uses smooth shading, lampion skin fixes. * Some cleanup: idRenderMatrix memory alignment, face planes in SEED model clone, Elbrus FFmpeg compile fix, old shaders disabled. dev16629-10139 * Added implicit generation of frobstages and simple customization macros (5427, thread). * Added support for OBJ models (thread). * Fixed chandelier_gas4 model (6125), improved wooden chest prefab sounds (4206). * Optimized silhouette preprocessing during model loading. dev16625-10132 * "Light from above" behavior applies only to lights of ambient_world type (6090). * Major changes in normal-dependent ambient shading (6090). * Optimized FixGlobalTJunctions in dmap, restored vertex grid snapping (6085). * Updated "Tears of Saint Lucia" mission with EFX and other fixes (thread). * Replaced algorithm for assigning shadow maps resolution. * Fixed a brief wrong frame with X-ray (6109). * Added getCurInvItemCount script function (6096). * Fixed old rendering backend. * Slightly better culling due to fixed depth bounds computation. * Added textures/darkmod/window/metal_irregularpanes_moonlit_bright (6119). dev16617-10107 * Major changes in ambient/interaction shaders for more consistency (5828, thread). * Major changes in blackjack knockout behavior (4289 thread). * Optimized stencil shadows with antialiasing by using scissors (5851). * Stencil shadow shadows tile-based culling optimization (6076 thread). * Added wiki article (link) about Tracy timeline profiler; thread names fix, print version. * More asset changes to fix warnings, added "load all assets" test maps (6019). * Added teleportArea command, which allows to find area by number (6083). * Refactored ambient interaction shader, deleted unused ambientRimColor (5828). * Fixed overflow crash in idAASBuild::GetFaceForPortal. * Enabled GL debug groups by default, fixed borderless FBO mismatch warnings. * Added transparent grate textures (6089). * Fixed textures/common/mirror. Known issues: * ambientCubicMap broken yet, will be restored in future (6090). * Visual look has changed, mostly with stronger specular. dev16599-10071 * Fixed startup error on: Night to Remember, Cole Hurst 1 Eaton (5845). * Shadow maps refactoring: now volumetrics work if stencil shadows are selected (5880, post). * Fixed SSAO on new AMD driver (post). * Ensured that mission decls silently override same-named core decls (5766). * Fixed order of operations in expressions in materials and GUI scripts (6026). * GUI scripts: do not block autoupdate for window registers referenced in scripts; fixed vector component indexing, allow expressions on the right side of Set command (6028, thread). * Major refactor of objectives GUI: checkboxes no longer empty on failure screen (5852). * Added pm_mantle_tilt_mod cvar to tone down mantle movements. * Fixed noclip while shouldering a body (5244). * Fixed textures/skies/cubeSky material (5218). * Fixed items frobability in cabinet prefabs (6025). * Hundreds of fixes for core asset issues that were detected by a new systematic procedure. There should be far fewer broken assets and console warnings. Ongoing process (6019). * testmap command no longer sets developer mode, saving us from some warnings. * Started refactoring of interaction shaders (5828). dev16574-10036 * Add Dragofer's fully mapped ship prefabs, vintage lamps set, barouche carriage and camgoyle sentry turret with power source (4687) * Added BVH-based interaction culling for large meshes (5886, thread). * Added warnings for wrong GUI code, fixed them in core GUI (5869, thread). * Fixed leaning against non-axis-aligned door (5899). * Fixed skin of non-rotating security camera (6004). * Tweaked inlining and optimization, new debug builds Fast/Editable. * Disabled multiple rendercopies for warping materials (post). * Created materials for previously unreferenced textures, now available for use (5563, 5178) * Fixed 50 skin-related, auto-detected bugs that were generating console warnings (6019) * Female mage legs are now textured (5994) * Adjusted LOD offsets for atdm:nature_pine to avoid popping (3987) * Wooden torches now have burning/burnt tops (1293) * tdm_grass_clump and tdm_wildgrass particles no longer render fullbright (5689) * Added inclusion guards to all core script files (4427) * small_round_furnace_openable.pfb fixed with regards to model gaps and door origin (6018) * Fixed underwater_bubblesbubbles particle (5198) * Fixed burnt log end cap texture alignment (4896) * Added unlit and moonlit versions of textures/darkmod/window/ornate/round_spokes01 (5857) * Added specularmap to rivet_strip01 textures (5999) * Restored plain_robes skin for mages, pagan_orb_effect particle, fix windows in tudor building4 etc. (5690) * Fixed models that made use of missing materials (4390) * Diffusemap for wallpaper_ornamental_01_red now matches its normalmap (4798) * Hardwood materials now use wooden footstep sounds (4988) * Fixed skins for 6-candle chandeliers and nails (5900, 5217) * All fence_spike_01_tall models are now solid (6010) * Fixed typo in shouldered manbeast name (5877) dev16519-9985 * Now AIs think once per frame on low FPS when several game tics are modelled (5992). * More responsive crouch toggle (5973, thread). * Added "absence_alert_increase" as correct implementation of "absence_alert" (5987). * Allow drawing up to 4 postprocessing surfaces, as long as draw order is right (thread). * Missions can be sorted by date in in-game mission downloader. * Added getAnimRate/setAnimRate script events (540). * Fixed lean-peeking sound not always stopping when player goes away from door (5899). * Fixed wrong sounds of func_fracture after save/load (5363). * Fixed scorch and smear01 decals (5970). * Fixed fx/sparks effect, set "triggered 1" for newly added effects (5034). * Fixed startup image/sound warnings on some AIs (5993). * Fixed joints warnings on zombies (5466). * Fixed "screw" skin not showing in DR on appropriate models (5217). * Fixed for frobability in kitchen_cupboard_openable.pfb (5989). * Added editor images for panel_halfcircle_walnut and panel_vase_polished_walnut. * Bumped maximum number of edges to 1 million for stencil shadows, added overflow warning. * Fixed debug cvars tdm_ai_opt_forceopt and tdm_ai_opt_forcedormant 5992). * Tiny optimization: memcpy is now using streaming stores only at vertex cache. * Removed support of bindless textures (5891). * Extracted tdm_package and removed tdm_update source code (5076). dev16498-9944 * Updated Tracy library, hopefully fixed running on Windows 7 (post). * Fixed crash on loading save done while elemental is dying (5845). * Implemented multiloot on holding frob button (5984). * Crouched state does not affect player speed on ladder/rope (5961). * Crouch-toggle takes effect on keydown rather than release (5973). * Added setviewpos to screenshot filename (5819). * Show estimate for total number of pickpockets on end-mission screen (5678). * In-game downloader: show asterisk/sharp at the beginning (5842). * Trigger entities now work on AI which stands still (5319). * Added setObjectiveNotification, which allows to change objective silently (5967). * Added script functions to add/remove frob peers (5976). * AIs notice destroyed fracture entities (5978). * Enabled frobhelper by default (post). * Fixed some architecture skins by Nort. * Fix graffiti materials (5930). * Now default quicksave/quickload are F5/F9 (post). * Minor optimizations: SSE in idRenderMatrix, cache "drunk" spawnarg. * Looped bind does not cause crash, although behavior is undefined (post). Known problems: * Night to Remember, Cole Hurst 1 Eaton: cannot start missions due to hard error. * Painter's Wife: killing elemental should cause hard error (mission fixed). dev16487-9919 * Fixed saving/loading JPEG crash on Linux (5881). * Fixed wrong sound on strafe right (5554). * Major refactoring and optimization on LOD system, LOD entities no longer "think" (5944). * Improved time distribution of stims and LOD checks for more solid performance. * Optimized creation/destruction of script threads. * Optimized idClip = broad phase collision detection (5954). * Reduced size of Linux executable back from 24 MB to 18 MB by removing globals. * Now in-game downloader prints URL of download to game console. Known problems: * Won't boot on Windows 7 dev16485-9903 * Optimized iteration over active entities by switching from linked list to array. * Fixed bow sometimes not working on savegame load (5928). * Allow headbob cvar changes to persist between sessions (post). * Player speed modifiers (like pm_runmod) are no longer archived (post). * Applied Clang build fixes by @Partmedia (post). * Fixed "testVideo withAudio" command. * Fixed unbounded brush AAS warning by trying to process each edge of brush once (5648). * Use double precision for winding splits in dmap and collision. * Reworked FFmpeg player to not use deprecated functions, fixed protocol warning (5881). * Fixed 2GB overflow in printMemInfo. Known problems: * Won't boot on Windows 7 * JPEG saving and loading crashes on Linux. Setting r_screenshot_format to "png" may help... dev16481-9881 * Updated Visual C++ from 2017 to 2022, build game and idlib as on VC project (5820). * Updated all third-party libraries (5881). * Render scale does not affect main menu GUI. * Optimized compass rendering: don't copy depth buffer. * Fixed debug polygons not showing up. * Don't draw debug lines in subviews. * Don't open game console by tilde if com_allowConsole is 0 on Linux (post). * Moving GUI slider with mouse now results in discrete increments. * Restored code for 16-bit colors (via r_fboColorBits cvar only). * Game console bottom line gets thinner on smaller console font. * Added tuneDown command to quickly ender very low graphics mode. * Added r_fboScaling cvar which allows to change Render scale filtering to nearest. * Avoid purging/reloading all images on Alt+Tabbing in Windows. Known problems: * Won't boot on Windows 7 Changelog of earlier versions can be found here.
  15. Changelog of 2.11 development: beta211-08 (rev 16770-10264) * Fixed crash when minimizing TDM on Windows (post). * Added HD carpets (thread). * Fixed player getting delayed and lower damage on high fall ending with mantle (6231). * Removed wrong LOD stage in atdm:env_ragdoll_commoner_female. * Reverted addition of default "map of" inventory item. * Made it easier for modders to substitute invgrid parchment background (6241). beta211-07 (rev 16758-10258) * Fixed extinguished candles stim-lighting each other on game start (6223). * Added menu settings for sheathe toggle, and changed default (6232 thread). * Saint Lucia mission improvements (thread). * Fixed GUI warnings in New Job. * Renamed "New Missions" to "Missions List" in main menu (6230). * Fixed initial difficulty highlight on Objectives screen (6229). * Fixed Objectives title slightly cut off on low text scale (6234). * Added mansion01 window assets (6235). * Fixed normal map of turquoise_uneven (6222). * Allow user to tweak pm_noclipspeed (6237). beta211-06 (rev 16739-10248) * Saint Lucia mission improvements (thread). * Fixed rare crash during melee combat (6225). * Fixed func_peek crash on Linux (5553). * Fixed bottle crash in "Pearls and Swine" (6227). * Fixed textures of cheapbeermug (post). * Fixed warnings in book_ornate_gothic readables (post). * Fixed minor issue in broad phase of collision detection. beta211-05 (rev 16727-10239) * Fixed rare NaN blocks from volumetric lights on AMD driver (post). * Fixed rare thin holes in geometry on low "render scale". * Fixed major performance regression in "r_shadowMapSinglePass 1" mode. * Added subtitles to New Job mission (5914). * Fixed subtitles hidden during CameraView type of cutscene (6197). * Fixed last character of subtitles occasionally clipped away (5914). * Fixed missed alert count if player hides into darkness during guard's combat startup (6211). * Added blueprint assets by Dram. * Fixed UV map in bwindow01_frame model (6217). * Allow female guards to sleep on floor (6208). * Dmap messages about PlanarGraph and EarCut now include 3D world position. * Some minor rounding changes in text placement in GUI. * Restored value of pm_bobup from 2.10. beta211-04 (rev 16714-10226) * Fixed wrong lightgem values briefly after game load/start (6088). * Fixed alert counter for civilians immediate alert (5286). * Some main menu text made translatable (2960). * New assets: Precursor "ancient" loot by Kingsal, galleon wreck, gothic cabinet, grandfather clock with new clock scriptobject, pagan menir (standing stone statue), pair of large marble lion statues, feather duster prop * Make sure all newly created door entities have the right rotate value set (5051) * Fix missing normalmap for audiograph, fixed shadowmesh for armchair_victorian_02.ase * Various small asset fixes (missing faces in LOD stage of boiler02_med.lwo, mangled stairs in galleon.lwo, gaps in spade models, normals on desk2 and desk3 models, UV issues on various other models) (3771). * Improved resolution for shield_goldarms texture (4894). * Added "looping" keyword to looping clock ticking sounds. * Exclude female pagan materials from release builds. beta211-03 (rev 16689-10219) * Avoid copying of large array on AMD, fixing a terrible performance regression (thread). * Enabled Frontend Acceleration = r_useParallelAddModels by default. * Fixed error when same decl file exists packed and unpacked with different case (post). * Don't crash TDM if automation port is occupied: warn, retry, and disable instead (thread). * New Job: the mission is no longer unfinishable if you guess the safe combination without visiting the Lord's room + visportal fixes. * Ambient world prefab: expanded light radius from 1K to 10K. * Added currency pack, cobblestone pack, furniture pack and tiling treasure hoard texture * Added wall mounted locks, improved sofa and leather ottoman * Added star wallpaper * Block CMake build without setting build type (post), fixed CMake + MSVC build. beta211-02 (rev 16670-10208) * Fixed bugs with counting number of alerts (5286, 6186). * Fixed bugs in in-game and savegame screenshots (link). * Disable GL debug groups to fix performance on some AMD drivers. * Added a lot of new assets from Epifire's missions (6188). * Added and refactored locks/safes by Obsttorte, Epifire, Dragofer. * Added book skins by Wellingtoncrab. * Fixed missing wastebasket material in Hazard Pay (link). * Support r_skipAmbient and r_skipInteractions in new backend. * Added spawnarg call_used_action_script on frobable movers. * Fixed definitions of ambient lights with normal-dependent color (6090). * Fixed KOBoxSize not being restored for the sake of blackjack. beta211-01 (rev 16656-10189) * Many improvements in new volumetric lights implementation + added cvars (5850, thread). * r_softShadowsMipmaps: fixed render scale, fixed screenshots. * Faster shadow volume generation with BVH, more cvars and tweaking (5886). * Optimized stencil shadows: turbo shadow vertices are static on GPU. * Improved solidness / visibility logic on models (6175). * Added spawnargs allow_idle_anims and allow_random_headturning. * Avoid sound amplification due to negative sound loss spawnarg (5913). * Fixed weird glitch on game load (6149). * Removed one frame of latency from "com_smp 0" mode (5875). dev16650-10157 * Volumetric lights reimplemented: dither pattern removed, performance improved (5850). * Added audiograph entity and assets. * Fixed shader compilation with r_softShadowsMipmaps on some Linux AMD GPUs (post). * Fixed bug in new frobstage_xxx material macros (5427). * Massive frobstages refactoring in materials: new macros are used now (5427). * Trace model: limits increased and refactoring (5887). * Massive cleaning of prefabs, automaton station script fix (6013). * Fixed rotten_paper_nancy_hand GUI in world view. * Perfume bottle model uses smooth shading, lampion skin fixes. * Some cleanup: idRenderMatrix memory alignment, face planes in SEED model clone, Elbrus FFmpeg compile fix, old shaders disabled. dev16629-10139 * Added implicit generation of frobstages and simple customization macros (5427, thread). * Added support for OBJ models (thread). * Fixed chandelier_gas4 model (6125), improved wooden chest prefab sounds (4206). * Optimized silhouette preprocessing during model loading. dev16625-10132 * "Light from above" behavior applies only to lights of ambient_world type (6090). * Major changes in normal-dependent ambient shading (6090). * Optimized FixGlobalTJunctions in dmap, restored vertex grid snapping (6085). * Updated "Tears of Saint Lucia" mission with EFX and other fixes (thread). * Replaced algorithm for assigning shadow maps resolution. * Fixed a brief wrong frame with X-ray (6109). * Added getCurInvItemCount script function (6096). * Fixed old rendering backend. * Slightly better culling due to fixed depth bounds computation. * Added textures/darkmod/window/metal_irregularpanes_moonlit_bright (6119). dev16617-10107 * Major changes in ambient/interaction shaders for more consistency (5828, thread). * Major changes in blackjack knockout behavior (4289 thread). * Optimized stencil shadows with antialiasing by using scissors (5851). * Stencil shadow shadows tile-based culling optimization (6076 thread). * Added wiki article (link) about Tracy timeline profiler; thread names fix, print version. * More asset changes to fix warnings, added "load all assets" test maps (6019). * Added teleportArea command, which allows to find area by number (6083). * Refactored ambient interaction shader, deleted unused ambientRimColor (5828). * Fixed overflow crash in idAASBuild::GetFaceForPortal. * Enabled GL debug groups by default, fixed borderless FBO mismatch warnings. * Added transparent grate textures (6089). * Fixed textures/common/mirror. Known issues: * ambientCubicMap broken yet, will be restored in future (6090). * Visual look has changed, mostly with stronger specular. dev16599-10071 * Fixed startup error on: Night to Remember, Cole Hurst 1 Eaton (5845). * Shadow maps refactoring: now volumetrics work if stencil shadows are selected (5880, post). * Fixed SSAO on new AMD driver (post). * Ensured that mission decls silently override same-named core decls (5766). * Fixed order of operations in expressions in materials and GUI scripts (6026). * GUI scripts: do not block autoupdate for window registers referenced in scripts; fixed vector component indexing, allow expressions on the right side of Set command (6028, thread). * Major refactor of objectives GUI: checkboxes no longer empty on failure screen (5852). * Added pm_mantle_tilt_mod cvar to tone down mantle movements. * Fixed noclip while shouldering a body (5244). * Fixed textures/skies/cubeSky material (5218). * Fixed items frobability in cabinet prefabs (6025). * Hundreds of fixes for core asset issues that were detected by a new systematic procedure. There should be far fewer broken assets and console warnings. Ongoing process (6019). * testmap command no longer sets developer mode, saving us from some warnings. * Started refactoring of interaction shaders (5828). dev16574-10036 * Add Dragofer's fully mapped ship prefabs, vintage lamps set, barouche carriage and camgoyle sentry turret with power source (4687) * Added BVH-based interaction culling for large meshes (5886, thread). * Added warnings for wrong GUI code, fixed them in core GUI (5869, thread). * Fixed leaning against non-axis-aligned door (5899). * Fixed skin of non-rotating security camera (6004). * Tweaked inlining and optimization, new debug builds Fast/Editable. * Disabled multiple rendercopies for warping materials (post). * Created materials for previously unreferenced textures, now available for use (5563, 5178) * Fixed 50 skin-related, auto-detected bugs that were generating console warnings (6019) * Female mage legs are now textured (5994) * Adjusted LOD offsets for atdm:nature_pine to avoid popping (3987) * Wooden torches now have burning/burnt tops (1293) * tdm_grass_clump and tdm_wildgrass particles no longer render fullbright (5689) * Added inclusion guards to all core script files (4427) * small_round_furnace_openable.pfb fixed with regards to model gaps and door origin (6018) * Fixed underwater_bubblesbubbles particle (5198) * Fixed burnt log end cap texture alignment (4896) * Added unlit and moonlit versions of textures/darkmod/window/ornate/round_spokes01 (5857) * Added specularmap to rivet_strip01 textures (5999) * Restored plain_robes skin for mages, pagan_orb_effect particle, fix windows in tudor building4 etc. (5690) * Fixed models that made use of missing materials (4390) * Diffusemap for wallpaper_ornamental_01_red now matches its normalmap (4798) * Hardwood materials now use wooden footstep sounds (4988) * Fixed skins for 6-candle chandeliers and nails (5900, 5217) * All fence_spike_01_tall models are now solid (6010) * Fixed typo in shouldered manbeast name (5877) dev16519-9985 * Now AIs think once per frame on low FPS when several game tics are modelled (5992). * More responsive crouch toggle (5973, thread). * Added "absence_alert_increase" as correct implementation of "absence_alert" (5987). * Allow drawing up to 4 postprocessing surfaces, as long as draw order is right (thread). * Missions can be sorted by date in in-game mission downloader. * Added getAnimRate/setAnimRate script events (540). * Fixed lean-peeking sound not always stopping when player goes away from door (5899). * Fixed wrong sounds of func_fracture after save/load (5363). * Fixed scorch and smear01 decals (5970). * Fixed fx/sparks effect, set "triggered 1" for newly added effects (5034). * Fixed startup image/sound warnings on some AIs (5993). * Fixed joints warnings on zombies (5466). * Fixed "screw" skin not showing in DR on appropriate models (5217). * Fixed for frobability in kitchen_cupboard_openable.pfb (5989). * Added editor images for panel_halfcircle_walnut and panel_vase_polished_walnut. * Bumped maximum number of edges to 1 million for stencil shadows, added overflow warning. * Fixed debug cvars tdm_ai_opt_forceopt and tdm_ai_opt_forcedormant 5992). * Tiny optimization: memcpy is now using streaming stores only at vertex cache. * Removed support of bindless textures (5891). * Extracted tdm_package and removed tdm_update source code (5076). dev16498-9944 * Updated Tracy library, hopefully fixed running on Windows 7 (post). * Fixed crash on loading save done while elemental is dying (5845). * Implemented multiloot on holding frob button (5984). * Crouched state does not affect player speed on ladder/rope (5961). * Crouch-toggle takes effect on keydown rather than release (5973). * Added setviewpos to screenshot filename (5819). * Show estimate for total number of pickpockets on end-mission screen (5678). * In-game downloader: show asterisk/sharp at the beginning (5842). * Trigger entities now work on AI which stands still (5319). * Added setObjectiveNotification, which allows to change objective silently (5967). * Added script functions to add/remove frob peers (5976). * AIs notice destroyed fracture entities (5978). * Enabled frobhelper by default (post). * Fixed some architecture skins by Nort. * Fix graffiti materials (5930). * Now default quicksave/quickload are F5/F9 (post). * Minor optimizations: SSE in idRenderMatrix, cache "drunk" spawnarg. * Looped bind does not cause crash, although behavior is undefined (post). Known problems: * Night to Remember, Cole Hurst 1 Eaton: cannot start missions due to hard error. * Painter's Wife: killing elemental should cause hard error (mission fixed). dev16487-9919 * Fixed saving/loading JPEG crash on Linux (5881). * Fixed wrong sound on strafe right (5554). * Major refactoring and optimization on LOD system, LOD entities no longer "think" (5944). * Improved time distribution of stims and LOD checks for more solid performance. * Optimized creation/destruction of script threads. * Optimized idClip = broad phase collision detection (5954). * Reduced size of Linux executable back from 24 MB to 18 MB by removing globals. * Now in-game downloader prints URL of download to game console. Known problems: * Won't boot on Windows 7 dev16485-9903 * Optimized iteration over active entities by switching from linked list to array. * Fixed bow sometimes not working on savegame load (5928). * Allow headbob cvar changes to persist between sessions (post). * Player speed modifiers (like pm_runmod) are no longer archived (post). * Applied Clang build fixes by @Partmedia (post). * Fixed "testVideo withAudio" command. * Fixed unbounded brush AAS warning by trying to process each edge of brush once (5648). * Use double precision for winding splits in dmap and collision. * Reworked FFmpeg player to not use deprecated functions, fixed protocol warning (5881). * Fixed 2GB overflow in printMemInfo. Known problems: * Won't boot on Windows 7 * JPEG saving and loading crashes on Linux. Setting r_screenshot_format to "png" may help... dev16481-9881 * Updated Visual C++ from 2017 to 2022, build game and idlib as on VC project (5820). * Updated all third-party libraries (5881). * Render scale does not affect main menu GUI. * Optimized compass rendering: don't copy depth buffer. * Fixed debug polygons not showing up. * Don't draw debug lines in subviews. * Don't open game console by tilde if com_allowConsole is 0 on Linux (post). * Moving GUI slider with mouse now results in discrete increments. * Restored code for 16-bit colors (via r_fboColorBits cvar only). * Game console bottom line gets thinner on smaller console font. * Added tuneDown command to quickly ender very low graphics mode. * Added r_fboScaling cvar which allows to change Render scale filtering to nearest. * Avoid purging/reloading all images on Alt+Tabbing in Windows. Known problems: * Won't boot on Windows 7 Changelog of earlier versions can be found here.
  16. Recently revisiting the forums after a longer period of time I wanted to check the unread content. I don't know if I am doing this wrong since.. ever... but on mobile (visiting the unread content page on my smartphone) you have to click on that tiny speech bubble to go to the most recent post in a thread. If you don't click correctly you'll hit the headline and end up at post 1 in the beginning of the thread. It's terrible on mobile, since not only the speech bubble is really small and was to miss. But also the thread headline is just millimeters away from it so you go right to the first post that was ever made instead of the most recent ones. Am I doing it wrong? I just want to go through u read content a d the to the newest post from that topic.
  17. Hello, everyone! In this multi-part, comprehensive tutorial I will introduce you to a new light type that has been available in The Dark Mod since version 2.06, what it does, why you would want to use it and how to implement it in your Fan Missions. This tutorial is aimed at the intermediate mapper. Explanations of how to use DarkRadiant, write material files, etc. are outside of its scope. I will, however, aim to be thorough and explain the relevant concepts comprehensively. Let us begin by delineating the sections of the tutorial: Part 1 will walk you through four, distinct ways to add ambient light to a scene, the last way using irradiance environment maps (or IEMs). Lighting a scene with an IEM is considered image-based lighting. Explaining this concept is not in the scope of this tutorial; rather, we will compare and contrast our currently available methods with this new one. If you already understand the benefits IBL confers, you may consider this introductory section superfluous. Part 2 will review the current state of cubemap lights in TDM, brief you on capturing an environment cubemap inside TDM and note limitations you may run into. Three cubemap filtering applications will be introduced and reviewed. Part 3 will go into further detail of the types of inputs and outputs required by each program and give a walkthrough of the simplest way to get an irradiance map working in-game. Part 4 will guide you through two additional, different workflows of how to convert your cubemap to an irradiance map and unstitch it back to the six separate image files that the engine needs. Part 5 will conclude the tutorial with some considerations as to the scalability of the methods hitherto explained and will enumerate some good practices in creating IEMs. Typical scenes will be considered. Essential links and resources will be posted here and a succinct list of the steps and tools needed for each workflow will be summarized, for quick reference. Without further ado, let us begin. Part 1 Imagine the scene. You’ve just made a great environment for your map, you’ve got your geometry exactly how you want it… but there’s a problem. Nobody can appreciate your efforts if they can’t see anything! [Fig. 1] This will be the test scene for the rest of our tutorial — I would tell you to “get acquainted with it” but it’s rather hard to, at the moment. The Dark Mod is a game where the interplay between light and shadow is of great importance. Placing lights is designing gameplay. In this example scene, a corridor with two windows, I have decided to place 3 lights for the player to stealth his way around. Two lights from the windows streak down across the floor and a third, placeholder light for a fixture later to be added, is shining behind me, at one end of the corridor. Strictly speaking, this is sufficient for gameplay in my case. It is plainly obvious, however, that the scene looks bad, incomplete. “Gameplay” lights aside, the rest of the environment is pitch black. This is undesirable for two reasons. It looks wrong. In real life, lights bounce off surfaces and diffuse in all directions. This diffused, omni-directional lighting is called ambient lighting and its emitment can be termed irradiance. You may contrast this with directional lighting radiating from a point, which is called point lighting and its emitment — radiance. One can argue that ambient lighting sells the realism of a scene. Be that as it may, suppose we disregard scary, real-life optics and set concerns of “realism” aside… It’s bad gameplay. Being in darkness is a positive for the player avatar, but looking at darkness is a negative for the player, themselves. They need to differentiate obstacles and objects in the environment to move their avatar. Our current light level makes the scene illegible. The eye strain involved in reading the environment in these light conditions may well give your player a headache, figurative and literal, and greatly distract them from enjoying your level. This tutorial assumes you use DarkRadiant or are at least aware of idtech4’s light types. From my earlier explanation, you can see the parallels between the real life point/ambient light dichotomy and the aptly named “point” and “ambient” light types that you can use in the editor. For further review, you can consult our wiki. Seeing as how there is a danger in confusing the terms here, I will hereafter refer to real life ambient light as “irradiant light”, to differentiate it from the TDM ambient lights, which are our engine’s practical implementation of the optical phenomenon. A similar distinction between “radiant light” and point lights will be made for the same reason. Back to our problem. Knowing, now, that most all your scenes should have irradiant light in addition to radiant light, let’s try (and fail, instructionally) to fix up our gloomy corridor. [Fig. 2] The easiest and ugliest solution: ambient lights. Atdm:ambient_world is a game entity that is basically an ambient light with no falloff, modifiable by the location system. One of the first things we all do when starting a new map is putting an ambient_world in it. In the above image, the darkness problem is solved by raising the ambient light level using ambient_world (or via an info_location entity). Practically every Dark Mod mission solves its darkness problem1 like this. Entirely relying on the global ambient light, however, is far from ideal and I argue that it solves neither of our two, aforementioned problems. Ambient_world provides irradiant light and you may further modulate its color and brightness per location. However, said color and brightness are constant across the entire scene. This is neither realistic, nor does it reduce eye strain. It only makes the scene marginally more legible. Let’s abandon this uniform lighting approach and try a different solution that’s more scene-specific. [Fig. 3] Non-uniform, but has unintended consequences. Our global ambient now down to a negligible level, the next logical approach would be hand-placed ambient lights with falloff, like ambient_biground. Two are placed here, supplementing our window point lights. Combining ambient and point lights may not be standard TDM practice, but multiple idtech4 tutorials extol the virtues of this method. I, myself, have used it in King of Diamonds. For instance, in the Parkins residence, the red room with the fireplace has ambient lights coupled to both the electric light and the fire flame. They color the shadows and enrich the scene, and they get toggled alongside their parent (point) lights, whenever they change state (extinguished/relit). This is markedly better than before, but to be honest anything is, and you may notice some unintended side-effects. The AI I’ve placed in the middle of the ambient light’s volume gets omnidirectionally illuminated far more than any of the walls, by virtue of how light projection in the engine works. Moving the ambient lights’ centers closer to the windows would alleviate this, but would introduce another issue — the wall would get lit on the other side as well. Ambient lights don’t cast shadows, meaning they go through walls. You could solve this by creating custom ambient light projection textures, but at this point we are three ad hocs in and this is getting needlessly complicated. I concede that this method has limited use cases but illuminating big spaces that AI can move through, like our corridor, isn’t one of them. Let’s move on. [Fig. 4] More directional, but looks off. I have personally been using this method in my WIP maps a lot. For development (vs. release), I even recommend it. A point light instead of an ambient light is used here. The texture is either “biground1” or “defaultpointlight” (the latter here). The light does not cast shadows, and its light origin is set at one side of the corridor, illuminating it at an angle. This solves the problem of omnidirectional illumination for props or AI in the middle of the light volume, you can now see that the AI is lit from the back rather than from all sides. In addition, the point light provides that which the ambient one cannot, namely specular and normal interaction, two very important features that help our players read the environment better. This is about as good as you can get but there are still some niggling problems. The scene still looks too monochromatic and dark. From experience, I can tell you that this method looks good in certain scenes, but this is clearly not one of them. Sure, we can use two, non-shadowcasting point lights instead of one, aligned to our windows like in the previous example, we can even artfully combine local and global ambient lights to furnish the scene further, but by this point we will have multiple light entities placed, which is unwieldy to work with and possibly detrimental to performance. Another problem is that a point light’s movable light origin helps combat ambient omnidirectionality, but its projection texture still illuminates things the strongest in the middle of its volume. I have made multiple experiments with editing the Z-projection falloff texture of these lights and the results have all left me unsatisfied. It just does not look right. A final, more intellectual criticism against this method is that this does not, in a technical sense, supply irradiant light. Nothing here is diffuse, this is just radiant light pretending the best it can. [Fig. 5] The irradiance map method provides the best looking solution to imbuing your scene with an ambient glow. This is the corridor lit with irradiance map lights, a new lighting method introduced in The Dark Mod 2.06. Note the subtle gradients on the left wall and the bounced, orange light on the right column. Note the agreeable light on the AI. Comparing the previous methods and this, it is plainly obvious that an irradiance environment map looks the most realistic and defines the environment far better than any of the other solutions. Why exactly does this image look better than the others? You can inform yourself on image-based lighting and the nature of diffuse irradiance, but images speak louder than words. As you can see, the fact of the matter is that the effect, subtle as it may be, substantially improves the realism of the scene, at least compared to the methods previously available to us. Procuring irradiance environment maps for use in lighting your level will hereafter be the chief subject of this tutorial. The next part will review environment cubemap capture in TDM, the makeIrradiance keyword and three external applications that you can use to convert a TDM cubemap into an irradiance map. 1 “ Note that the color buffer is cleared to black: Doom3 world is naturally pitch black since there is no "ambient" light: In order to be visible a surface/polygon must interact. with a light. This explains why Doom3 was so dark ! “ [source] Part 2 Cubemaps are not new to The Dark Mod. The skybox materials in some of our prefabs are cubemaps, some glass and polished tile materials use cubemaps to fake reflections for cheap. Cubemap lights, however, are comparatively new. The wiki page linked earlier describes these two, new light types that were added in TDM 2.05. cubicLight is a shadow-casting light with true spherical falloff. An example of such a light can be found in the core files, “lights/cubic/tdm_lampshade_cubic”. ambientCubicLight is the light type we will be focusing on. Prior to TDM 2.06, it acted as a movable, on-demand reflection dispenser, making surfaces in its radius reflect a pre-set cubemap, much like glass. After 2.06, the old behavior was discarded and ambientCubicLight was converted to accept industry standard irradiance environment maps. Irradiance environment maps (IEMs) are what we want to make, so perhaps the first thing to make clear is that they aren’t really “handmade”. An IEM is the output of a filtering process (convolution) which requires an input in the form of a regular environment cubemap. In other words, if we want to make an IEM, we need a regular cubemap, ideally one depicting our environment — in this case, the corridor. I say a snapshot of the environment is ideal for lighting it because this emulates how irradiant light in the real world works. All radiating surfaces are recorded in our cubemap, our ambient optic array as it were, then blurred, or convoluted, to approximate light scatter and diffusion, then the in-game light “shines” this approximation of irradiant light back to the surfaces. There is a bit of a “chicken and the egg” situation here, if your scene is dark to begin with, wouldn’t you just get a dark irradiance map and accomplish nothing? In the captured cubemap faces in Fig. 6, you may notice that the environment looks different than what I’ve shown so far. I used two ambient lights to brighten up the windows for a better final irradiance result. I’ve “primed the pump”, so to speak. You can ignore this conundrum for the moment, ways to set up your scenes for better results, or priming the pump correctly, will be discussed at the end of the tutorial. Capturing the Environment The wiki has a tutorial on capturing cubemaps by angua, but it is woefully out of date. Let me run you through the process for 2.07 really briefly. To start with, I fly to approx. the center of the corridor with noclip. I then type “envshot t 256” in the console. This outputs six .tga images in the <root>/env folder, simply named “t”, sized 256x256 px and constituting the six sides of a cube and depicting the entire environment. This is how they look in the folder: [Fig. 6] The six cube faces in the folder. Of note here is that I do not need to switch to a 640x480 resolution, neither do I need to rename these files, they can already be used in an ambientCubicLight. Setting Up the Lights For brevity’s sake, I’ll skip explaining material definitions, if you’ve ever added a custom texture to your map, you know how to do this. Suffice it to say, it is much the same with custom lights. In your <root>/materials/my_cool_cubemaps.mtr file, you should have something like this: lights/ambientcube/my_test_IEM_light { ambientCubicLight { forceHighQuality //cameraCubeMap makeIrradiance(env/t) cameraCubeMap env/t colored zeroClamp } } We’ll play with the commented out line in just a bit. Firstly, let’s place the actual light in DarkRadiant. It’s as simple as creating a new light or two and setting them up in much the same way you would a regular ambient light. I select the appropriate light texture from the list, “my_test_IEM_light” in the “ambientcube” subfolder and I leave the light colored pure white. [Fig. 7] The corridor in DR, top view, with the ambient cubic lights highlighted. I can place one that fills the volume or two that stagger the effect somewhat. Remember that these lights still have a spherical falloff. Preference and experimentation will prove what looks best to you. Please note that what the material we defined does is load a cubemap while we established that ambientCubicLights only work with irradiance maps. Let’s see if this causes any problems in-game. I save the map and run it in game to see the results. If I already have TDM running, I type “reloadDecls” in the console to reload my material files and “reloadImages” to reload the .tga images in the /env folder. [Fig. 8] Well this looks completely wrong, big surprise. Wouldn’t you know it, putting a cubemap in the place of an irradiance map doesn’t quite work. Everything in the scene, especially the AI, looks to be bathed in slick oil. Even if a material doesn’t have a specular map, it won’t matter, the ambientCubicLight will produce specular reflections like this. Let’s compare how our cubemap .tga files compares with the IEM .tgas we’ll have by the end of the tutorial: [Fig. 9] t_back.tga is the back face of the environment cubemap, tIEM_back.tga is the back face of the irradiance map derived from it. As you can see, the IEM image looks very different. If I were to use “env/tIEM” instead of “env/t” in the material definition above, I would get the proper result, as seen in the last screenshot of part 1. So it is that we need a properly filtered IEM for our lights to work correctly. Speaking of that mtr def though, let’s not invoke an irradiance map we haven’t learned to convert yet. Let’s try an automatic, in-engine way to convert cubemaps to IEMs, namely the makeIrradiance material keyword. makeIrradiance and Its Limitations Let’s uncomment the sixth line in that definition and comment out the seventh. cameraCubeMap makeIrradiance(env/t) //cameraCubeMap env/t Here is a picture of how a cubemap ran through the makeIrradiance keyword looks like: [Fig. 10] Say ‘Hi’ to our friend in the back, the normalmap test cylinder. It’s a custom texture I’ve made to demonstrate cubemap interactions in a clean way. Hey now, this looks pretty nice! The scene is a bit greener than before, but you may even argue it looks more pleasing to the eyes. Unfortunately, the devil is in the details. Let’s compare the makeIrradiance keyword’s output with the custom made irradiance map setup seen at the end of part 1. [Fig. 11, 12] A closer look at the brick texture reveals that the undesired specular highlighting is still present. The normal map test cylinder confirms that the reason for this is the noisy output of the makeIrradiance keyword. The in-engine conversion is algorithmic, more specifically, it doesn't allow us to directly compare .tga files like we did above. Were we able to, however, I'm sure the makeIrradiance IEM would look grainy and rough compared to the smooth gradient of the IEM you’ll have by the end of this tutorial. The makeIrradiance keyword is good for quick testing but it won’t allow you fine control over your irradiance map. If we want the light to look proper, we need a dedicated cubemap filtering software. A Review of Cubemap Filtering Software Here I’ll introduce three programs you can produce an irradiance map with. In the coming parts, I will present you with a guide for working with each one of them. I should also note that installing all of these is trivial, so I’ll skip that instructional step when describing their workflows. I will not relay you any ad copy, as you can already read it on these programs’ websites. I’ll just list the advantages and disadvantages that concern us. Lys https://www.knaldtech.com/lys/ Advantages: Good UI, rich image manipulation options, working radiance/specular map filtering with multiple convolution algorithms. Disadvantages: $50 price tag, limited import/export options, only available on Windows 64-bit systems. cmftStudio https://github.com/dariomanesku/cmftStudio Advantages: Available on Windows, OSX and Linux, free, open source software, command line interface available. Disadvantages: Somewhat confusing UI, limited import options, missing features (radiance/specular map filtering is broken, fullscreen doesn’t work), 32-bit binaries need to be built from source (I will provide a 32-bit Windows executable at the end of the tutorial). Modified CubeMapGen https://seblagarde.wordpress.com/2012/06/10/amd-cubemapgen-for-physically-based-rendering/ Advantages: Free software, quickest to work with (clarified later). Disadvantages: Bad UI, only Windows binaries available, subpar IEM export due to bad image adjustment options. Let’s take a break at this point and come back to these programs in part 3. A lot of caveats need to be expounded on as to which of these three is the “best” software for making an irradiance map for our purposes. Neither of these programs has a discreet workflow; rather, the workflow will include or exclude certain additional programs and steps depending on which app you choose to work with. It will dovetail and be similar in all cases. Part 3 The aim of this tutorial is twofold. First, it aims to provide the most hands-free and time-efficient method of converting an envshot, environment cubemap to an IEM and getting it working in-game. The second is using as few applications as possible and keeping them all free software that is available for download, much like TDM itself. The tutorial was originally going to only cover IEM production through Lys, as that was the app I used to test the whole process with. I soon realized that it would be inconsiderate of me to suggest you buy a fifty dollar product for a single step in a process that adds comparatively little to the value of a FM, if we’re being honest (if you asked me, the community would benefit far more from a level design tutorial than a technical one like this, but hey, maybe later, I’m filling a niche right now that nobody else has filled). This led me to seek out open-source alternatives to Lys, such as Cubemapgen, which I knew of and cmftStudio, which I did not. I will preempt my own explanations and tell you right away that, in my opinion, cmftStudio is the program you should use for IEM creation. This comes with one big caveat, however, which I’m about to get into. Six Faces on a Cross and The Photoshop Problem Let’s review. Taking an envshot in-game gives you six separate images that are game-ready. Meaning, you get six, split cubemap faces as an output, you need six, split irradiance map faces as an input. This is a problem, because neither Lys nor cmftStudio accept a sequence of images as such. They need to be stitched together in a cube cross, a single image of the unwrapped cube, like this: [Fig. 13] From Lys. Our cubemap has been stitched into a cross and the “Debug Cube Map Face Position” option has been checked, showing the orientations of each face. In Lys only panoramas, sphere maps and cube maps can be loaded into the program. The first two do not concern us, the third specifically refers to a single image file. Therefore, to import a TDM envshot into Lys you need to stitch your cubemap into a cross. Furthermore, Lys’ export also outputs a cubemap cross, therefore you also need to unstitch the cubemap into its faces afterwards if you want to use it in TDM. In cmftStudio you can import single map faces! Well… no, you can’t. The readme on GitHub boasts “Input and output types: cubemap, cube cross, latlong, face list, horizontal and vertical strip.” but this is false. The UI will not allow you to select multiple files on import, rendering the “face list” input type impossible.2 Therefore, to import a TDM envshot into cmftStudio you need to stitch your cubemap into a cross. Fortunately, the “face list” export type does work! Therefore, you don’t need to unstitch the cubemap manually, cmftStudio will export individual faces for you. In both of these cases, then, you need a cubemap cross. For this tutorial I will use Adobe Photoshop, a commercial piece of software, to stitch our faces into a cubemap in an automated fashion (using Photoshop’s Actions). This is the big caveat to using cmftStudio, even if you do not want to buy Lys, PS is still a prerequisite for working with both programs. There are, of course, open source alternatives to Photoshop, such as GIMP, but it is specifically Photoshop’s Action functionality that will power these workflows. GIMP has its own Actions in the form of Macros, but they are written with python. GIMP is not a software suite that I use, neither is python a language I am proficient with. Out of deference for those who don’t have, or like working with, Photoshop, I will later go through the steps I take inside the image editor in some detail, in order for the studious reader to reconstruct them, if they so desire, in their image editing software of choice. At any rate, and at the risk of sounding a little presumptuous, I take it that, as creative types, most of you already have Photoshop on your computers. 2 An asterisk regarding the “impossibility” of this. cmftStudio is a GUI for cmft, a command line interface that does the same stuff but inside a command prompt. I need to stress that I am certain multiple faces can be inputted in the command line, but messing with unwieldy prompts or writing batch files is neither time-saving nor user-friendly. This tutorial is aimed at the average mapper, but a coder might find the versatility offered in cmft interesting. The Cubemapgen Workflow You will have noticed that I purposefully omitted Cubemapgen from the previous discussion. This is because working with Cubemapgen, wonderfully, does not need Photoshop to be involved! Cubemapgen both accepts individual cubemap faces as input and exports individual irradiance map faces as output. Why, then, did I even waste your time with all the talk of Lys, cmftStudio and Photoshop? Well, woefully, Cubemapgen’s irradiance maps look poor at worst and inconsistent at best. Comparing IEMs exported from Lys and cmftStudio, you will see that both look practically the same, which is good! An IEM exported from Cubemapgen, by default, is far too desaturated and the confusing UI does not help in bringing it to parity with the other two programs. If you work solely with Cubemapgen, you won’t even know what ‘parity’ is, since you won’t have a standard to compare to. [Fig. 14] A comparison between the same irradiance map face, exported with the different apps at their respective, default settings. Brightened and enlarged for legibility. This may not bother you and I concede that it is a small price to pay for those not interested in working with Photoshop. The Cubemapgen workflow is so easy to describe that I will in fact do just that, now. After I do so, however, I will argue that it flies in the face of one of the aims of this tutorial, namely: efficiency. Step 1: Load the cubemap faces into Cubemapgen. Returning to specifics, you will remember that we have, at the moment, six .tga cubemap faces in a folder that we want to convert to six irradiance map faces. With Cubemapgen open, direct your attention to these buttons: [Fig. 15] You can load a cubemap face by pressing the corresponding button or using the hotkey ‘F’. To ensure the image faces the correct way, you must load it in the corresponding “slot”, from the Select Cubemap Face dropdown menu above, or by pressing the 1-6 number keys on your keyboard. Here is a helpful list: X+ Face <1> corresponds to *_right X- Face <2> corresponds to *_left Y+ Face <3> corresponds to *_up Y- Face <4> corresponds to *_down Z+ Face <5> corresponds to *_forward Z- Face <6> corresponds to *_back ...with the asterisk representing the name of your cubemap. With enough practice, you can get quite proficient in loading cubemap faces using keyboard shortcuts. Note that the ‘Skybox’ option in the blue panel is checked, I recommend you use it. Step 2: Generate the Irradiance Map [Fig. 16] The corridor environment cubemap loaded in and filtered to an irradiance map. The options on the right are my attempt to get the IEM to look right, though they are by no means prescriptive. Generating an IEM with Modified CubeMapGen 1.66 is as easy as checking the ‘Irradiance cubemap’ checkbox and hitting ‘Filter Cubemap’ in the red panel. There are numerous other options there, but most will have no effect with the checkbox on. For more information, consult the Sébastien Lagarde blog post that you got the app from. I leave it to you to experiment with the input and output gamma sliders, you really have no set standard on how your irradiance map is supposed to look, so unfortunately you’ll have to eyeball it and rely on trial and error. Two things are important to note. The ‘Output Cube Size’ box in the red panel is the resolution that you want your IEM to export to. In the yellow panel, make sure you set the output as RGB rather than RGBA! We don’t need alpha channels in our images. Step 3: Export Irradiance Map Faces Back in the green panel, click the ‘Save CubeMap to Images’ button. Save the images as .tga with a descriptive name. [Fig. 17] The exported irradiance map faces in the folder. These files still need to be renamed with appropriate suffixes in order to constitute a readable cubemap for the engine. The nomenclature is the same as the table above: “c00” is the X+ Face, to be renamed “right”, “c01” is the X- Face and so on. Right left, up down, forward and back. That’s the order! This is all there is to this workflow. A “cameraCubeMap env/testshot” in the light material will give us a result that will look, at the very least, better than the inbuilt makeIrradiance material keyword. [Fig. 17] The map ended up being a little bright. Feel free to open Fig. 4 and this in seperate tabs and compare the Lys/cmft export with the cubemapgen one. A Review of the Workflow Time for the promised criticism to this workflow. I already stated my distaste for the lack of a standardised set of filtering values with this method. The lack of any kind of preset system for saving the values you like makes working with Cubemapgen even more slipshod. Additionally, in part 2, I said that Cubemapgen is the fastest to work with, but this needs to be qualified. What we just did was convert one cubemap to an irradiance map, but a typical game level ought to use more than a single IEM. Premeditation and capturing fake, “generic” environment cubemaps (e.g. setting up a “blue light on the right, orange on the left” room or a “bright skylight above, brown floor” room, then capturing them with envshot) might allow for some judicious reuse and keep your distinct IEM light definition count down to single digits, but you can only go so far with that. I am not arguing here for an ambient cubic light in every scene either, certainly only those that you deem need the extra attention, or those for which the regular lighting methods enumerated in Part 1 do not quite work. I do tentatively assume, though, that for an average level you would use between one and two dozen distinct IEMs. Keep in mind that commercial games, with their automated probe systems for capturing environment shots, use many, many more than that. With about 20 cubemaps to be converted and 6 faces each to load into Cubemapgen, you’ll be going through the same motions 120 whole times (saving and renaming not included). If you decide to do this in one sitting (and you should, as Cubemapgen, to reiterate, does not keep settings between sessions), you are in for a very tedious process that, while effective, is not very efficient. The simple fact is that loading six things one by one is just slower than loading a single thing once! The “single thing” I’m referring to is, of course, the single, stitched cubemap cross texture. In the next part, I will go into detail regarding how to make a cubemap cross in Photoshop in preparation for cmftStudio and Lys. It will initially seem a far more time-consuming process to you than the Cubemapgen workflow, but through the magic of automation and the Actions feature, you will be able to accomplish the cubemap stitch process in as little as a drag-and-drop into PS and a single click. The best thing is that after we go through the steps, you won’t have to recreate them yourself, as I will provide you with a custom Actions .atn file and save you the effort. I advise you not to skip the explanations, however. The keen-eyed among you may have noticed that you can also load a cube cross in Cubemapgen. If you want to use both Cubemapgen and Photoshop together to automate your Cubemapgen workflow, be aware that Cubemap gen takes crosses that have a different orientation than the ones Lys and cmftStudio use. My macros (actions) are designed for the latter, so if you want to adjust them for Cubemapgen you would do well to study my steps and modify them appropriately. For the moment, you’ve been given the barebones essentials needed to capture an envshot, convert it to an irradiance map and put it in your level at an appropriate location, all without needing a single piece of proprietary software. You can stop here and start cranking out irradiance maps to your heart’s content, but if you’re in the mood for some more serious automation, consider the next section.
  18. To add to frost_salamander reply about performance, game objects/entities, created by native c++ code and used in editor, through the entity definitions func_* whatever, imo should be faster than a custom pure script based object, for the simple reason that like I mentioned, they are made/call directly from a c++ based class, and c++ is objectively faster than DoomScript.
  19. A@datiswous Ah yeah, well sorry, I was quiet busy and only visiting discord. First time here on the forums since months now I think.. Thank you for the subtitles. I encourage everyone who is interested in using them to download it from here as I'm not sure when I'll be able to implement them myself into the mission. Again, thank you for your work.
  20. That moment you log into TDM forums and suddenly feel nostalgic...

    1. Sotha

      Sotha

      Protip: if you never log off and stay for ever, there is no nostalgia when you visit.

    2. Melan

      Melan

      Welcome back!

    3. RPGista

      RPGista

      Haha yeah, I feel like that from time to time. Good to see you around.

  21. Figured I'd ask about this here before posting on the bug tracker, there might be a reason why it hasn't been done yet. Let me explain my reasoning first: When creators are working on multiple FM's at once, each one will obviously be located in its own directory. Most FM's contain custom assets and definitions, when working with maps in DarkRadiant you need to select their data folder for additional defs. This is done by going to File - Game / Project Setup - Mission and selecting it there. The issue: Let's say you want to take a break from one FM and work on another. Each time you load a map from a different FM, you also need to go to that menu and select it from there, otherwise custom assets won't be detected and appear as missing in DR. This is quite a bit of an annoyance. Suggestion: Is it not possible to detect and automatically select the active mission from the path the map is located in? We know every map should be located in "darkmod/fms/name/maps", so why not automatically extract the maps directory and set that to "darkmod/fms/name"? If there's an issue with getting such detection right, we can at worst simply store this information in the map.darkradiant file, so even if the player needs to first select it manually the choice is remembered per map and automatically reverted when you load it. We could technically do this with the other settings in that menu, such as Game Type and Darkmod Path. Not sure how much we need it for those unless someone is working with multiple installs and wants the convenience. Sounds good if doable but the important one is the mission directory as that must always be changed with the map you're editing.
×
×
  • Create New...