View Issue Details

IDProjectCategoryView StatusLast Update
0005186The Dark ModMappingpublic15.02.2021 05:29
ReporterDragofer Assigned Tostgatilov  
PrioritynormalSeveritynormalReproducibilityN/A
Status resolvedResolutionfixed 
Product VersionTDM 2.08 
Target VersionTDM 2.09Fixed in VersionTDM 2.09 
Summary0005186: Make prefabs with rotation hacks comply with new rules
DescriptionWith new rules for the use of rotation hacks, mappers can no longer compile their maps if they place a prefab that contains rotation-hacked models, unless they have g_rotationhack 0. This is not the default value, so the mapper will have to use the console to change it, which may be unintuitive especially for newer mappers.

It may be necessary to identify all prefabs which use rotation hacked models and find ways to replace these models, preferrably without cluttering the main model list with rescaled models.

If there are too many affected prefabs a different solution may be needed.
Steps To ReproduceAn example is fireplace/small_round_furnace_openable.pfb, which uses firewood at 80% of its original size to fit inside the small furnace.
Additional InformationLink to thread on forums:
  https://forums.thedarkmod.com/index.php?/topic/20180-rotation-hack/&do=findComment&comment=445006

There is the full list of problematic prefabs.
TagsNo tags attached.

Relationships

related to 0004970 resolvedstgatilov Avoid problems with rotation-resized models 

Activities

stgatilov

stgatilov

05.12.2020 13:21

administrator   ~0013103

TDM 2.09 will not stop mapper from dmapping a map with hack-rotated things.
However, there is still a warnings, so the problem is not gone completely.

The options are:
1) Add proxy models to problematic prefabs and replace hack-rotation with using them explicitly.
  The obvious downside is that DR won't handle them properly.
2) Rescale the models physically.
  There are only 65 such models, perhaps it could be done quickly with a right tool.
3) Disable dmap warning for func_static-s.
  Basically, with the latest incarnation of 0004970, hack-rotated entity is replaced with auto-generated model straight on player's machine.
  So from player's perspective, they should work perfectly as is.
Dragofer

Dragofer

04.01.2021 20:27

developer   ~0013363

Option 3 sounds quite palatable for solving this issue.

While option 2 wouldn't solve future rotation hacked prefabs, and option 1: I think proxy models are better used automatically, rather than something the mapper should deal with.
stgatilov

stgatilov

06.01.2021 12:37

administrator   ~0013402

Right now there is one warning for all func_static-s, which prints their number and a list of up to 10 random names.

Would it be OK if I change it from warning to ordinary printed message?
It will display with ordinary color (not red), and won't de repeated at the end of dmap.
Dragofer

Dragofer

06.01.2021 14:02

developer   ~0013406

Last edited: 06.01.2021 14:19

I suppose the purpose of the warnings is to encourage the mapper to fix the rotation-hacked models. But what I liked about your proxy-models being auto-generated on the player's machine at map start is that it seems to automatically fix the problem, so the mapper wouldn't need to do anything about them. That would remove the need for any kind of warnings/console output about rotation hacked models.

Otherwise, if the mapper should try to fix rotation-hacked models, itd probably be better to fix the prefabs in the TDM core (Option 1 or 2), rather than asking every mapper to fix the prefabs every time they use them. This avoids unnecessary work duplication.
stgatilov

stgatilov

06.01.2021 16:52

administrator   ~0013411

Last edited: 06.01.2021 16:53

I disabled warning in svn rev 9068.
The warning for entities of other classes remains.

I see two entities in stock prefabs which are hack-rotated and are not func_static-s:
  MerryChest5Handle in \prefabs\containers\openable\MerryChest5.pfb
  MerryChest9Handle in \prefabs\containers\openable\MerryChest9.pfb
They should be fixed manually.
Dragofer, could you do it?
Dragofer

Dragofer

07.01.2021 12:55

developer   ~0013418

Manually removed rotation-hacks from those 2 chest prefabs in 16069.

However, I noticed that there were also 2 rotation-hacked func_statics in the prefabs (locks) and they showed up as black boxes ingame (missing model). The console complained about not being able to open the .proxy models.
Dragofer

Dragofer

07.01.2021 12:58

developer   ~0013419

chest_merry.txt (13,353 bytes)   
TDM 2.09/64 #9041 (1435:9041) win-x86_64 Dec 14 2020 20:31:06
1190 MHz Intel CPU with SSE & SSE2 & SSE3 & SSSE3 & SSE41 & AVX & AVX2 & FMA3
Winsock Initialized
Found interface: {F05793C1-A0C9-4F90-923A-F7AAE8397573} Realtek PCIe GBE Family
 Controller - 0.0.0.0 NULL netmask - skipped
Found interface: {CAF1F7F7-BB6C-44D3-BDAF-E7CEDC0A50AD} Bluetooth Device (Perso
nal Area Network) - 0.0.0.0 NULL netmask - skipped
Found interface: {8829C9B6-1F8B-4D4B-8C6E-BE7A8A5D0428} Wintun Userspace Tunnel
 - 0.0.0.0 NULL netmask - skipped
Found interface: {F498F6F2-D391-46A5-B469-99AF686F22DE} TAP-Windows Adapter V9
- 0.0.0.0 NULL netmask - skipped
Found interface: {192734A0-DC17-4963-82E5-C5E5C0D40D5D} Realtek RTL8821CE 802.1
1ac PCIe Adapter - 192.168.0.135/255.255.255.0
Found interface: {9E591AD9-15C6-466A-B547-24B0A3A662F0} Microsoft Wi-Fi Direct
Virtual Adapter #2 - 0.0.0.0 NULL netmask - skipped
Found interface: {61CD7F7E-C00A-4C51-9B60-110D2933180E} Microsoft Wi-Fi Direct
Virtual Adapter #3 - 0.0.0.0 NULL netmask - skipped
Sys_InitNetworking: adding loopback interface
Found Intel CPU, features: SSE SSE2 SSE3 SSSE3 SSE41 AVX AVX2 FMA3
TDM using AVX2 for SIMD processing.
enabled Flush-To-Zero mode
enabled Denormals-Are-Zero mode
------ Initializing File System ------
Current search path:
  C:\personal\darkmod_svn/
File System Initialized.
--------------------------------------
Couldn't open journal files
----- Initializing Decls -----
------------------------------
I18N: SetLanguage: 'english'.
I18N: Found no character remapping for english.
I18N: 1277 strings read from strings/english.lang
I18N: 'strings/fm/english.lang' not found.
execing default.cfg
execing Darkmod.cfg
execing DarkmodKeybinds.cfg
execing autoexec.cfg
I18N: SetLanguage: 'english'.
I18N: Found no character remapping for english.
I18N: 1277 strings read from strings/english.lang
I18N: 'strings/fm/english.lang' not found.
----- Initializing OpenAL -----
Setup OpenAL device and context
OpenAL: found device 'OpenAL Soft on Speaker (Realtek(R) Audio)' [ACTIVE]
OpenAL: device 'OpenAL Soft on Speaker (Realtek(R) Audio)' opened successfully
OpenAL: HRTF is available
OpenAL vendor: OpenAL Community
OpenAL renderer: OpenAL Soft
OpenAL version: 1.1 ALSOFT 1.19.1
OpenAL: found EFX extension
OpenAL: HRTF is enabled (reason: 1 = ALC_HRTF_ENABLED_SOFT)
OpenAL: found 256 hardware voices
----- Initializing OpenGL -----
Initializing OpenGL subsystem
...getting default gamma ramp: success
...registered window class
...registered fake window class
...created window @ 3,22 (1382x807)
Initializing OpenGL driver
...getting DC: succeeded
...PIXELFORMAT 5 selected
...creating GL context: core-fc
...making context current: succeeded
...initializing QGL

------- Input Initialization -------
Initializing DirectInput...
mouse: DirectInput initialized.
keyboard: DirectInput initialized.
------------------------------------
OpenGL vendor: Intel
OpenGL renderer: Intel(R) UHD Graphics
OpenGL version: 3.3.0 - Build 27.20.100.8681 core
Checking required OpenGL features...
v - using GL_VERSION_3_3
v - using GL_EXT_texture_compression_s3tc
v - using WGL_VERSION_1_0
v - using WGL_ARB_pixel_format
Checking optional OpenGL extensions...
v - using GL_EXT_texture_filter_anisotropic
    maxTextureAnisotropy: 16.000000
v - using GL_ARB_stencil_texturing
X - GL_EXT_depth_bounds_test not found
v - using GL_ARB_buffer_storage
v - using GL_ARB_multi_draw_indirect
v - using GL_ARB_vertex_attrib_binding
v - using GL_ARB_bindless_texture
X - GL_ARB_compatibility not found
v - using GL_KHR_debug
v - using WGL_EXT_swap_control
Max active texture units in fragment shader: 32
Max combined texture units: 192
Max geometry output vertices: 256
Max geometry output components: 1024
Max vertex attribs: 16
---------- R_ReloadGLSLPrograms_f -----------
Linking GLSL program cubeMap ...
Linking GLSL program bumpyEnvironment ...
Linking GLSL program depthAlpha ...
Linking GLSL program fog ...
Linking GLSL program oldStage ...
Linking GLSL program blend ...
Linking GLSL program stencilshadow ...
Linking GLSL program shadowMapA ...
Linking GLSL program shadowMapN ...
Linking GLSL program shadowMapNG ...
WARNING:Linking program shadowMapNG failed:
The  shader uses varying texCoord, but previous shader does not write to it.
Out of resource error.


WARNING:Validation for program shadowMapNG failed:
���~

Linking GLSL program ambientInteraction ...
Linking GLSL program interactionStencil ...
Linking GLSL program interactionShadowMaps ...
Linking GLSL program interactionMultiLight ...
Linking GLSL program frob ...
Linking GLSL program soft_particle ...
Linking GLSL program tonemap ...
---------------------------------
New buffer size: 12288 kb
New buffer size: 12288 kb
Linking GLSL program depth ...
Linking GLSL program depth_bindless ...
Linking GLSL program interaction_ambient ...
Linking GLSL program interaction_stencil ...
Linking GLSL program interaction_shadowmap ...
Linking GLSL program interaction_ambient_bindless ...
Linking GLSL program interaction_stencil_bindless ...
Linking GLSL program interaction_shadowmap_bindless ...
Linking GLSL program manylight ...
Linking GLSL program manylight_bindless ...
Linking GLSL program stencil_shadow ...
Linking GLSL program shadow_map ...
WARNING:Linking program shadow_map failed:
Out of resource error.


Font fonts/english/stone in size 12 not found, using size 24 instead.
--------- Initializing Game ----------
The Dark Mod 2.09/64, win-x86_64, code revision 9041
Build date: Dec 11 2020
Initializing event system
...842 event definitions
Initializing class hierarchy
...172 classes, 835264 bytes for event callbacks
Initializing scripts
---------- Compile stats ----------

Memory usage:
     Strings: 45, 5920 bytes
  Statements: 20303, 812120 bytes
   Functions: 1269, 170000 bytes
   Variables: 91912 bytes
    Mem used: 2095912 bytes
 Static data: 4014424 bytes
   Allocated: 5129480 bytes
 Thread size: 7912 bytes

Maximum object size: 884
Largest object type name: weapon_arrow
...6 aas types
game initialized.
--------------------------------------
Parsing material files
Found 0 new mission packages.
Found 8 mods in the FM folder.
Parsed 0 mission declarations.
-------- Initializing Session --------
Font fonts/english/mason_glow in size 12 not found, using size 48 instead.
Font fonts/english/mason_glow in size 24 not found, using size 48 instead.
Font fonts/english/mason in size 12 not found, using size 48 instead.
Font fonts/english/mason in size 24 not found, using size 48 instead.
session initialized
--------------------------------------
--- Common Initialization Complete ---
------------- Warnings ---------------
during The Dark Mod initialization...
WARNING:Linking program shadow_map failed:
Out of resource error.


WARNING:Linking program shadowMapNG failed:
The  shader uses varying texCoord, but previous shader does not write to it.
Out of resource error.


WARNING:Validation for program shadowMapNG failed:
���~

3 warnings
Couldn't exec autocommands.cfg - file does not exist.
]dmap test_bug
---- dmap ----
--- LoadDMapFile ---
loading maps\test_bug
WARNING:Couldn't load image: textures/darkmod/metal/detailed/rivet_strip01_s
  [decl: textures/darkmod/metal/detailed/rivet_strip01 in materials/tdm_metal_d
etailed.mtr]
  [image: textures/darkmod/metal/detailed/rivet_strip01_s]
   14 total world brushes
    0 total world triSurfs
  182 patches
   90 entities
  270 planes
    0 areaportals
size: -1560,-1408,  -56 to  1248, 1712, 1008
WARNING:Detected 2 func_static-s with bad rotation: ["MerryChest5Lock", "MerryC
hest9Lock"]
############### entity 0 ###############
-- ( worldspawn:  )
  0.0 seconds for BuildLightShadows
11 entities containing primitives processed.
----- WriteOutputFile -----
writing maps\test_bug.proc
Dmap complete, moving on to collision world and AAS...
0 total shadow triangles
0 total shadow verts
-----------------------
    3 seconds for dmap
maps\test_bug.cm is out of date
writing maps\test_bug.cm
collision data:
    11 models
  1340 vertices (31 KB)
  2535 edges (89 KB)
   930 polygons (69 KB)
   142 brushes (19 KB)
    28 nodes (1 KB)
   934 polygon refs (14 KB)
   148 brush refs (2 KB)
  1234 internal edges
    22 sharp edges
   399 contained polygons removed
   147 polygons merged
   227 KB total memory used
48 msec to load collision data.
-------------------------------------
    0 seconds to create collision map
no entities in map that use aas48
=======================================================
no entities in map that use aas96
=======================================================
[Brush Load]
    14 brushes
[Brush Merge]
    14 original brushes
     0 brushes merged
    68 brush sides clipped
[Brush BSP]
    14 brushes
    94 grid cells
   100 %
   213 splits
[Portalize BSP]
   427 nodes
   427 nodes portalized
[Remove Outside]
   132 solid leaf nodes
    12 outside leaf nodes
    70 inside leaf nodes
[Gravitational Subdivision]
     0 subdivisions
[Merge Portals]
     0 portals merged
[Melt Portals]
     0 points inserted
[Ledge Subdivision]
     0 ledges
     0 subdivisions
[Merge Leaf Nodes]
    69 leaf nodes merged
[Merge Portals]
   112 portals merged
[Melt Portals]
     0 points inserted
[Store AAS]
     2 areas
[Reachability]
     1 reachable areas
     0 reachabilities
[Clustering]
     0 invalid portals removed
     1 portals
     2 clusters
     0 reachable areas in cluster 0
     1 reachable areas in cluster 1
     1 reachable areas
     0 reachabilities
     0 KB max routing cache
[Write AAS]
writing maps\test_bug.aas32
done.
     0 seconds to create AAS
=======================================================
no entities in map that use aas100
=======================================================
no entities in map that use aas_rat
=======================================================
no entities in map that use aas_elemental
]map test_bug
reloading guis/mainmenu.gui.
reloading guis/restart.gui.
reloading guis/msg.gui.
--------- Map Initialization ---------
Map: test_bug
----------- Game Map Init ------------
collision data:
    11 models
  1340 vertices (31 KB)
  2535 edges (89 KB)
   930 polygons (69 KB)
   142 brushes (19 KB)
    39 nodes (1 KB)
   934 polygon refs (14 KB)
   148 brush refs (2 KB)
  1234 internal edges
    22 sharp edges
     0 contained polygons removed
     0 polygons merged
   228 KB total memory used
4 msec to load collision data.
map bounds are (2808.0, 3120.0, 1064.0)
max clip sector is (175.5, 97.5, 133.0)
    0 bytes passage memory used to build PVS
    0 msec to calculate PVS
    4 areas
    0 portals
    0 areas visible on average
   16 bytes PVS data
[Load AAS]
loading maps/test_bug.aas48
[Load AAS]
loading maps/test_bug.aas96
[Load AAS]
loading maps/test_bug.aas32
done.
[Load AAS]
loading maps/test_bug.aas100
[Load AAS]
loading maps/test_bug.aas_rat
[Load AAS]
loading maps/test_bug.aas_elemental
ConversationManager: Found 0 valid conversations.
Entering tdm_main()
Exiting tdm_main()
Spawning entities
Linking GLSL program heatHazeWithDepth ...
Linking GLSL program heatHazeWithMaskAndDepth ...
WARNING:Couldn't load model: 'models/_roth_gen/lockbox_02_d5c7e70b52d0e674.prox
y'
WARNING:Couldn't load model: 'models/_roth_gen/lockbox_02_507008e366ac74f8.prox
y'
... 49 entities spawned, 42 inhibited

==== Processing events ====
Objective 1: Parsing success and failure logic
Objective 2: Parsing success and failure logic
Objective 3: Parsing success and failure logic
Objective 4: Parsing success and failure logic
Objective 5: Parsing success and failure logic
Objective 6: Parsing success and failure logic
Applied 0 objective conditions.
[aas32]: Assigned 0 multistatemover positions to AAS areas and ignored 0.
--------------------------------------
SpawnPlayer: 0
----- idRenderModelManagerLocal::EndLevelLoad -----
New buffer size: 13786 kb
New buffer size: 12536 kb
Static vertex data ready
New buffer size: 13786 kb
Static index data ready
New buffer size: 12536 kb
    0 models purged from previous level,    77 models kept.
---------------------------------------------------
----- idImageManager::EndLevelLoad -----
    0 purged from previous
  223 kept from previous
  227 new loaded
all images loaded in  15.7 seconds
----------------------------------------
----------------------------------------
----- idSoundCache::EndLevelLoad -----
33654k referenced
 3641k purged
----------------------------------------
sound: missing efxs/test_bug.efx
-----------------------------------
 17029 msec to load test_bug
Interaction table generated: size = 0/4
Initial counts:  91 entities  0 lightDefs  6 entityDefs
------------- Warnings ---------------
during test_bug...
WARNING:Couldn't load model: 'models/_roth_gen/lockbox_02_507008e366ac74f8.prox
y'
WARNING:Couldn't load model: 'models/_roth_gen/lockbox_02_d5c7e70b52d0e674.prox
y'
2 warnings
]condump chest_merry.txt
Dumped console text to chest_merry.txt.

chest_merry.txt (13,353 bytes)   
Dragofer

Dragofer

13.01.2021 08:02

developer   ~0013454

Found the cause for the above issue, see here: https://forums.thedarkmod.com/index.php?/topic/20180-rotation-hack/&do=findComment&comment=455511
nbohr1more

nbohr1more

15.01.2021 21:31

developer   ~0013456

Last edited: 16.01.2021 04:16

The proxy model path has been fixed in 0004970 (svn rev 9074).

Please confirm if there are any more issues with the prefabs.
stgatilov

stgatilov

15.02.2021 05:29

administrator   ~0013682

Marking as resolved, since 2.09 is out already.

Issue History

Date Modified Username Field Change
19.03.2020 12:05 Dragofer New Issue
19.03.2020 12:31 Dragofer Summary Remove rotation hacks from prefabs => Make prefabs with rotation hacks comply with new rules
20.03.2020 07:36 stgatilov Steps to Reproduce Updated
20.03.2020 07:36 stgatilov Additional Information Updated
02.04.2020 06:39 stgatilov Relationship added related to 0004970
02.04.2020 07:14 stgatilov Target Version TDM 2.08 => TDM 2.09
02.04.2020 07:14 stgatilov Assigned To => stgatilov
02.04.2020 07:14 stgatilov Status new => assigned
05.12.2020 13:21 stgatilov Note Added: 0013103
04.01.2021 20:27 Dragofer Note Added: 0013363
05.01.2021 06:33 nbohr1more Status assigned => feedback
06.01.2021 12:37 stgatilov Note Added: 0013402
06.01.2021 14:02 Dragofer Note Added: 0013406
06.01.2021 14:02 Dragofer Status feedback => assigned
06.01.2021 14:19 Dragofer Note Edited: 0013406
06.01.2021 16:52 stgatilov Note Added: 0013411
06.01.2021 16:52 stgatilov Note Edited: 0013411
06.01.2021 16:53 stgatilov Note Edited: 0013411
07.01.2021 12:55 Dragofer Note Added: 0013418
07.01.2021 12:55 Dragofer File Added: darkmod_2021-01-07_13.46.54.jpg
07.01.2021 12:58 Dragofer Note Added: 0013419
07.01.2021 12:58 Dragofer File Added: chest_merry.txt
13.01.2021 08:02 Dragofer Note Added: 0013454
15.01.2021 21:31 nbohr1more Status assigned => feedback
15.01.2021 21:31 nbohr1more Fixed in Version => TDM 2.09
15.01.2021 21:31 nbohr1more Note Added: 0013456
16.01.2021 04:16 stgatilov Note Edited: 0013456
15.02.2021 05:29 stgatilov Status feedback => resolved
15.02.2021 05:29 stgatilov Resolution open => fixed
15.02.2021 05:29 stgatilov Note Added: 0013682