Hi! Since I haven't found a dedicated KMQ2 bug reports thread or a public repository I can submit bug reports to, I guess I'll try my luck here.
1. Some accel/deccel/speed/plat height values (500/500/100/360 in the example map) can lock func_plat movement. How to reproduce: load the example map, step on the platfrom in front of you. It will never reach the top position.
2. In some cases target_command is not executed/executed incorrectly. How to reproduce: load the example map, the left button is supposted to display "say I'm not shown!" message, yet it never does. Instead in some cases it shows "say I'm shown!" message, which is assigned to the right button.
3. Using target_animation breaks game saving, because it uses a custom mmove_t, which is not taken into account when SAVEGAME_USE_FUNCTION_TABLE define is enabled. How to reproduce: load the example map, try to save the game.
4. Using text colouring sequences results in horizontally misaligned text. How to reproduce: load the example map, press the buttons to display example text on screen and in the help computer.
5. Lazarus docs mention trigger_key having "key_message" property. It's not implemented.
Also, a question / posiible feature request if I may: is it possible to make skies unaffected by fog? If not, is it possible to implement this functionality from game.dll? If not, are there any chances to get this functionality implemented in KMQ2?
Last Edit: Mar 12, 2020 16:34:30 GMT -5 by knightmare
Post by knightmare on Apr 13, 2017 16:10:32 GMT -5
1. This is a vanilla Q2 bug. I tried the test map in the missionpack game DLL, and it doesn't happen there. It turned out to be an easy fix.
2. I'm still looking into this.
3. I never tested the target_animation entity (it's not even used in any of the Lazarus test maps). From looking at the code, it's very badly implemented. Even without the savegame changes, its use of a dynamically allocated mmove_t struct looks like it would crash from a bad pointer if you tried using it after loading a saved game. It may be that a proper fix is not feasible and I'll just have to disable/remove this entity the way I removed target_playback.
4. This was a minor oversight in the HUD string drawing, and it's now fixed.
5. Got it added. Turned out I already have this implemented in the missionpack game DLL.
6. Years ago I played around with the idea of not fogging the sky, and it just ended up looking silly. Changing this is not possible from the game DLL.
A mapper-specified sky far fog distance (like in Daikatana) could be added in the next major release, but it would take a change to the servercommand for this, and thus break the protocol.
In the meantime, how about a cvar that controls a far fog distance that's proportional to the regular fog distance or density? Maybe r_fog_skyratio with a default of 10?
Last Edit: Apr 13, 2017 16:11:57 GMT -5 by knightmare
Thanks for the fixes! Is there a way to view the stuff you've changed? I'm currently working on a small project, which uses a custom game.dll, so it would be nice if I could update it with those fixes.
About the fog: for me, a cvar would suffice. I'd like to have a relatively dense fog without either turning the sky into a solid colour, or lowering the r_skydistance so much that it clips through faraway level geometry.
Also, there are several things, which are not affected by fog: - Decals. - Particles. - Surfaces with "Warp" flag when "Texture shader warp" option is enabled. - Underwater caustics when "Underwater caustics" option is set to "Hardware warp".
Got that second plat bug fixed as well. Just had to add a special case to add lip instead of subtracting it for the trigger bbox bottom height when that spawnflag is enabled (it probably wouldn't break anything to change it for all cases, but I'm being extra cautious).
I'm still trying to figure out the target_command issue. Target_animation has been disabled.
As far as certain things not being fogged, they look far worse with fog enabled, so I had to skip fogging them.
When I've got the last issue resolved, I can post a new build of KMQ2 for you, maybe as a 0.20 Update 8.
Looks like in some cases door movement sound can loop indefinitely when door movement is blocked by a monster. How to reproduce: load the example map, press the button several times (on my side 2-5 times was always enough) to make at least one of the doors play the movement sound despite being in the initial position.
Also a minor complaint: when launching a map with "developer" param enabled, I'm getting lots of "Bad jpg/pcx file [sometexture].jpg" warnings. All textures in my mod are in .tga format, so it would be nice if those messages were displayed only when the engine was unable to find a texture of any supported format with given name.
Post by knightmare on May 29, 2017 21:45:57 GMT -5
OK, got that one fixed for both doors and plats too. I just had to clear the looped sound in all cases when the door reaches either end point.
As for the target_command not working, I found out that it's network related. Target_command issues an svc_stuffcommand message, at the same time as the light updates from the lights you're switching are sent over the net. So it usually gets clobbered and doesn't show up. I found that putting it behind a trigger_relay with a delay of at least 0.2 remedies the problem.
I've already got a fix for the bad image messages- you'll now need to set developer to 2 to see them.
Welp, I've got another one. It's more finicky to reproduce and seems to require some rather specific level geometry, so I've attached a video showing the bug. Looks like in some cases monsters can get stuck in place after avoiding a grenade. How to reproduce: load the example map, grab the Grenade launcher to agitate the gunner, then make the gunner avoid it's own grenade.
Then it must be because Jack uses Half Life's map format 220, which makes aligning textures way easier and makes some alignments possible, but gives problems with other editors. AS far as i know, for Quake 2 mapping, only Trenchbroom can open that format aside from Jack. For Quake, there is some more.
Last Edit: May 31, 2017 14:00:01 GMT -5 by cocerello
1. Looks like in some cases crane_hook doesn't stay exactly below crane_hoist after moving. How to reproduce: load the example map. Use the crane control panel in front of you to move the crane left/right/forward/back.
2. Looks like in some cases the cable model is not spawned when using the crane entity. Can be seen in the same example map.
I'm still looking into the monster movement and crane cable issue, but the crane hook lagging is likely a result of entity order in the map file (Lazarus's movewith code is very sensitive to this). Try editing the .map file so that the child movers (crane_hoist, crane_hook) come after the parent movers (crane_beam, crane_hoist) in the .map file.
As far as I understand, gib_touch is never called, because gibs are non-solid, which makes them ignored by SV_Impact (which seems to be the only place gib_touch can be processed, because touch invoking is commented out in SV_Physics_Toss).