NightFright2k19 / duke3d_voxelpack

Duke3D Voxel Pack for EDuke32
https://forums.duke4.net/topic/3322-duke-3d-voxel-pack
Other
73 stars 6 forks source link

Voxels occasionally facing the wrong direction #125

Closed IfGremlinThen closed 7 months ago

IfGremlinThen commented 8 months ago

Hello, I realize this may be a dead project, but I've noticed that some models sometimes appear to be facing in the wrong direction (they are not set to rotate in rotation.con).

The two most apparent examples of this are

1.) the hidden RPG at the start of L.A. Meltdown, which normally sits off-center, lengthwise along the platform that raises it into view, but occasionally appears perpendicular and clips through the walls.

2.) the toilet in the second restroom of Red Light District (with the secret entrance behind it) sometimes appears sideways (turned 90 degress to the right), clipping through the wall of the stall it's in.

I'm sure this happens with more voxels elsewhere, but these are the most immediate and obvious to me.

I haven't been able to determine any consistency with when it happens yet, but I am running a variety of other mods alongside this one.

EDIT: Running this in eDuke32.

Dzierzan commented 8 months ago

I realize this may be a dead project.

No, it's not dead.

Anyway, those two spots need most likely a maphack to correct the rotation (not in rotation.con). Care to show pictures of that?

IfGremlinThen commented 8 months ago

Found a couple more. Again, this does not happen all the time.

Start of L.A. Meltdown: sample2

Behind wall in projector room: sample1

Entrance to strip club in Red Light District: sample3

Restroom in strip club: sample4

Dzierzan commented 8 months ago

Eduke32: duke0015

RedNukem: duke0016

Raze: Duke_0009

Well, I've never encountered such issue before. I mean maphacks were always loaded correctly. Sorry to say, but as some coders say "it works on my machine".

Maybe try getting the latest build of eduke32?

NightFright2k19 commented 8 months ago

These maphacks went through tons of iterations and the voxels haven't changed. This is obvious stuff and I don't believe it has been missed.

Maphacks are different for Duke3D 1.3D, Atomic and World Tour. You might be using the wrong ones. And if it's not happening all the time, something must be wrong on your end. Hacks don't just turn themselves on and off randomly.

IfGremlinThen commented 8 months ago

I'm really struggling to recreate the steps I took to get this particular issue, but it's clear to me now that it's only happening when I add it to my existing mod folder and finagle it into a working state. I suspect it's a filepath issue.

I'm using the 64bit Windows version of eDuke32 released yesterday and the latest release of duke3d_voxelpack from here, and running it on Linux under Wine.

STEP 1\ When I launch eduke32 with duke3d_voxelpack as the "Custom game content directory", it works. ✅

STEP 2\ When I drag the duke3d.def & eduke.con files into main eduke32 folder and launch the same way, it works. ✅

STEP 3\ When I create a new folder, "mod", and drag duke3d_voxelpack into that and run that in eduke32, the voxelpack can't be found, which makes sense because the duke3d.def and eduke.con filepaths are broken.

STEP 4\ But when I drag duke3d.def and eduke.con into the "mod" folder, it still can't be found, that's where I start to get confused, because their relative path to the eDuke32 folder is identical to STEP 1, which worked, and their relative path to duke3d_voxels is identical to STEP 2, which also worked.

So at this point I'm inclined to guess that duke3d.def (at least) either has far more nebulous properties than I thought, or eDuke32 has some sort of depth limit for dragging files into the game.

And that is more or less how I ended up with a folder like this:

example

This is enclosed in another folder containing a variety of other mods, which I select as my "Custom game content directory". That folder contains the duke3d.def and eduke.con files are used to pull in all other mods' .def and .con files and which evidently path correctly to duke3d_voxels.def and duke3d_maphacks.def which I have not edited.

(This took a while because I still do not fully understand how eDuke32 accepts filepaths, and it generally sucks at logging.)

So even though I can launch eDuke32, with duke3d_voxels in a subdirectory of a custom folder, without any warnings or errors, have the voxels render in game, and have only some of them appear oriented incorrectly is quite baffling.

STEP 5:\ To top it off, I just repeated STEP 2 with that modified duke3d_voxels directory, with duke3d.def and eduke.con in a fresh eDuke32, and it runs perfectly fine. ✅

So there's nothing fundamentally wrong with organizing it this way, therefor it must have something to do with the rest of duke3d_voxelpack being 1 subfolder deeper because that just seems to break everything and I can't figure out why.

My best guess it that files "included" by .def or .con files need only be located relative to those files, but other files (possibly the individual maphacks?) must have a filepath relative to eDuke32 itself.

I realize this may well not be a problem with the voxelpack at all, but my understanding of how eDuke32 works, but brute force trial-and-error has only got me so far and this sort of orientation discrepancy seems to be unique to this mod.

Not trying to waste your guys' time or anything, really appreciate the work you've done.

NightFright2k19 commented 8 months ago

At this point I don't see any reason to adjust anything, for...

a) you have found ways to get it working b) reproduction seems unlikely and c) I wouldn't even know what to change.

IfGremlinThen commented 8 months ago

you have found ways to get it working

Not with other mods sharing a folder, as I explained. Either way, I do believe I have managed to reproduce the issue reliably. This is, as I mentioned, with the latest 64bit eDuke32 and duke3d_voxelpack:

1.) Create /mod folder. 2.) Unzip duke3d_voxels into /mod folder. 3.) Drag provided duke3d.def into /mod folder. 4.) Edit duke3d.def:

include voxels/duke3d_voxels.def
include voxels/duke3d_maphacks.def

5.) Drag contents of /voxels into /duke3d_voxels folder. 6.) Rename /duke3d_voxels to /voxels. 7.) Run eDuke32 with /mod as the custom game content directory.

The result is the phenomenon I described, HOWEVER, doing this presents the following warnings on launch:

2.9614s WARN| voxels/duke3d_maphacks.def:4: Failed including maphacks/3drealms_mhk.def
2.9844s WARN| voxels/duke3d_maphacks.def:5: Failed including maphacks/worldtour_mhk.def
3.0078s WARN| voxels/duke3d_maphacks.def:8: Failed including maphacks/dukedc_mhk.def
3.0309s WARN| voxels/duke3d_maphacks.def:9: Failed including maphacks/nwinter_mhk.def
3.0537s WARN| voxels/duke3d_maphacks.def:10: Failed including maphacks/vacation_mhk.def

If I then edit voxels/duke3d_maphacks.def to:

include voxels/maphacks/3drealms_mhk.def
include voxels/maphacks/worldtour_mhk.def
include voxels/maphacks/dukedc_mhk.def
include voxels/maphacks/nwinter_mhk.def
include voxels/maphacks/vacation_mhk.def

Then the above warnings DO NOT appear, and the phenomenon still occurs.

So it's my impression that the maphacks are not being loaded into the game, but are being called in such a way that does not incur a warning message from eDuke32. This happens regardless of whether or not the /voxels/voxels folder exists.

Editing duke3d_maphacks.def to the following also doesn't resolve the issue:

include mod/voxels/maphacks/3drealms_mhk.def
include mod/voxels/maphacks/worldtour_mhk.def
include mod/voxels/maphacks/dukedc_mhk.def
include mod/voxels/maphacks/nwinter_mhk.def
include mod/voxels/maphacks/vacation_mhk.def

Log:

1.4665s INFO| Using duke3d.grp as main data file.
1.4934s  CON| Compiling: GAME.CON (151190 bytes)
1.5075s  CON| Including: DEFS.CON (35992 bytes)
1.5198s  CON| Including: USER.CON (45482 bytes)
1.6646s WARN| USER.CON:844: overwriting existing definition for sound #261 (hydro43.voc)
1.6960s WARN| USER.CON:873: overwriting existing definition for sound #323 (aisle402.voc)
1.7462s  CON| GAME.CON: In actor 'ORGANTIC':
1.7632s WARN| GAME.CON:3967: found 'else' with no 'if'
1.7808s  CON| GAME.CON: In state 'pigshootenemystate':
1.7970s WARN| GAME.CON:5890: found 'else' with no 'if'
1.8144s WARN| Found 4 warning(s), 0 error(s).
1.8349s  CON| Compiled 145216 bytes in 330ms
1.9149s INFO| Initialized 96.0M cache
1.9347s INFO| Loading duke3d.def
1.9690s INFO| Duke3D Voxel Pack v2.0 RC2
2.2462s INFO| Duke3D Maphacks r710
2.2974s INFO| Definitions file 'duke3d.def' loaded in 363 ms.
2.6968s INFO| Loaded DUKE.RTS
2.7142s INFO| Initializing console...

So, this is where it comes down to me probably being ignorant about how eDuke32 handles filepaths, but it SEEMS as though there is no acceptable filepath for duke3d_maphacks.def to find the maphacks, despite the fact that neither duke3d_maphacks.def or the maphacks folder have moved relative to each other.

The main difference is that they no longer share a folder with duke3d.def and are one directory level separated from both it and eDuke32's main directory, but for some reason, editing their filepaths results in eDuke32 either failing to launch with Errors, Warning that the maphacks can't be found, or running without any indication that the maphacks haven't loaded.

EDIT: And to further clarify, the whole reason I moved files around the way I did was because I'm trying to get duke3d_voxels to run alongside other mods in an unzipped folder, and it was failing to load as-is without my tinkering.

NightFright2k19 commented 7 months ago

Also closing this now since I think we are done.