3 stories · 1 update

nighty on LuaJIT versions, a lua_shared fork and Jolt physics

In #developer-talk, nighty said the main branch uses LuaJIT 2.0.4 and the x86-64 beta uses LuaJIT 2.1 beta 3. Zaurzo added that 64-bit main uses the same LuaJIT as x86-64. nighty described his lua_shared fork: it targets a custom language but should run existing GMod Lua exactly like stock, and isn't public yet. Its threading is worker-based, with message passing between separate Lua states. He also showed Jolt physics experiments.

DrawTexturedRectUV change breaks RNDX-based UIs on dev

In #next-update, Zaurzo reported his UI broken on dev. Rubat said it's likely the surface.DrawTexturedRectUV change, and Zaurzo confirmed that was the cause, since RNDX uses the function. He will fix his copy of RNDX, and suggested the new behaviour may need to go behind an argument since it's "already starting to break shit".

Details

The thread turned to RNDX's author: puffy asked whether Srlion still works on his GMod projects, Nykez said "no, he quit", and Astralcircle noted he left the GMod Discord too.

Artemking4 argues Mesh:DrawSkinned should allow bone 0

In #next-update, Artemking4 said IMesh:DrawSkinned can't use all 53 matrices: it's off by one and wrongly errors on the last bone. Rubat replied that matrix 0 is reserved by the engine as far as he remembers, so DrawSkinned gets 1–52. In his tests, setting matrix 0 did nothing or caused issues. Artemking4 disagreed: bone 0 is a normal bone that also serves as the model matrix for unskinned vertices, and his patched client.dll renders models almost perfectly with it.

8 stories

Crash from removed triggers fixed; Hunter pose parameter fix; VPC and gmad build for Linux64

Commit b9fc35 on main fixes a crash with inputs firing from removed triggers, the Hunter NPC's wrong lookup function and lets SetSaveValue set m_hStoredPathTarget; VPC and gmad/gmpublish now build for Linux64.

Details
  • Fixed a crash with inputs firing from removed triggers
  • Fixed the wrong lookup function in Hunter NPC code
  • m_hStoredPathTarget added to the SetSaveValue whitelist
  • VPC and gmad/gmpublish build for Linux64; VPC builds and runs for Win64; VPC colors on Linux; no CodeLite projects on Linux
  • Lowercase min/max macros removed so they don't interfere with C++ headers on 64-bit Linux
  • Minor Hammer code fixes

Autorefresh reworked on dev; Rubat explains how to debug it

In #next-update, Gonzo Pipi said Lua autorefresh stopped working for him on 64-bit dev (Windows 11 26H2) and asked how to debug it. Rubat said he added a console print for when autorefresh will certainly not work. On Windows there may be debug output, visible by attaching a debugger such as Visual Studio or WinDbg. Autorefresh changed in the previous day's dev update; he isn't having issues himself.

InitPostEntity hooks not running traced to an addon returning a value

In #next-update, DMatter04 reported that some addons' InitPostEntity hooks added with hook.Add never run, breaking addons such as Custom FOV. homonovus suggested an addon returns a non-nil value from its hook, and Zaurzo posted a lua_run snippet to find it. On 22 Oct DMatter04 found the culprit, lua/autorun/ultrakill_test_soulorbs.lua from "[DrGBase] ULTRAKILL - Enemies - Act II & Act III", using Zaurzo's whereis tip, and Zaurzo suggested asking the author to fix it.

A whole game ported into GMod; TankNut eyes the original Ace of Spades

In #developer-talk, Redox shared a project "made in gmod" that ran smoothly with a group of players. TankNut, after looking at it, said "they've decompiled the game and ported it wholesale". A1steaksa said he isn't impressed if it's AI-made, while Redox said it's too polished to be pure slop. TankNut added he is more interested in the original Ace of Spades than "the Jagex abomination".

7 stories · 1 update

Barnacle regression fixed, 3 bone weights for meshes, math_counter outputs, Autorefresh rework

Commit 280e7a on main fixes regressions in entity search (including Barnacles), allows three bone weights for procedural meshes, adds OnChangedFromMin/Max to math_counter and substantially changes Autorefresh error handling.

Details
  • Separate Linux client and SRCDS build scripts
  • Classname added to the CUtlRBTree overflow message
  • Fixed some regressions with entity search, including Barnacles
  • ErrorFromLua renamed to ErrorNoHaltStack; added CLuaInterface::FormatError
  • mesh.BoneData can be called with index 2 (weight ignored); Mesh() allows 3 bone weights and Mesh:BuildFromTriangles reads up to 3
  • Two new PhysFrame sub scopes: PhysFrame-CPhysicsEnvironment::Simulate and PhysFrame-VPhysicsShadowUpdate
  • math_counter gains OnChangedFromMin/OnChangedFromMax outputs and SetMaxValueNoFire/SetMinValueNoFire inputs
  • Improved Autorefresh error handling; fixed a memory leak with Windows auto refresh and symlinks ("hopefully without regressions, as the system was changed somewhat substantially")

Rubat: BASS can move a playing sound; the engine's sound system can't

In #lua-help, A1steaksa asked how to move a sound while it plays without attaching it to an entity, since CSoundPatch has no SetPos and needs an entity. homonovus thought it impossible without an entity. Rubat said the BASS audio system can do it but the engine sound system cannot.

Details

A1steaksa is also decoding old WAVE files by hand; Rubat asked for a sample, saying the only common format he hadn't tested with "my thing" is ADPCM, and A1steaksa's file was IMA ADPCM (format 0x11).