#Komet

55 messages · Page 1 of 1 (latest)

blissful elbow
#

Komet is now public!

With a lot of time, hard work and math it's released, both on the ModDB Page, as well as on Github.

Komet (previously vsperf <- this was a placeholder) is a performance booster mod which uses harmony patching.

https://mods.vintagestory.at/komet

Komet is a performance mod, which optimizes the Vintage Story rendering.

#

Komet - Performance Mod

blissful elbow
#

New Beta Release!

I've released the first Preview Build of 1.2.0.

Changelog:
Incremental Cull Cache Removal

  • Replaced full cache rebuilds with direct slot removal for re-tessellated chunks.
  • Reduced unnecessary cache misses across 4–8 pools.
  • Added support for open appends during streaming to avoid unnecessary rebuild fallbacks.
    Rebuild Attribution in Hitch Logs
  • Hitch log entries now report rebuild contribution as (X rebuilds, N pools).
  • Makes it easier to identify whether 11–16 ms sweeps are caused by cache rebuilds.
    Frustum Culling for AnimatableRenderer
  • Added stage-specific frustum checks for animated block entities.
  • Skips rendering only when fully outside the relevant stage frustum.
  • Shadow stages use the corresponding light-space bounds.
  • Avoids unnecessary shader, lighting, uniform, UBO, and draw calls.
    Dedicated Pool for Chunk Mesh Clones
  • Added size-class pooling for per-face arrays and custom-part data.
  • Reduced recurring 18 MB/s clone allocations.
  • Objects are now recycled instead of being allocated and discarded after Gen1 promotion.
  • Pool return is handled via TesselatedChunkPart.AddToPools rather than Dispose.
    Added new Compact F7 Hud (Toggle by Pressing F7)
honest wren
#

As you can see i have high hopes for your mod

#

my laptop really struggling with game and capture even on low settings

blissful elbow
honest wren
#

Noticed error in main log
2.9.2026 22:48:35 [Error] [komet] could not enable 'frame + render stage measurement', running without it. This is safe but you lose the speedup.
2.9.2026 22:48:35 [Error] [komet] Exception: Ambiguous match in Harmony patch for Vintagestory.Client.NoObf.ChunkTesselator:populateTesselatedChunkPart
---> System.Reflection.AmbiguousMatchException: Ambiguous match found for 'Vintagestory.Client.NoObf.ChunkTesselator Int32 populateTesselatedChunkPart(Vintagestory.API.Client.MeshData[][][], Vintagestory.Client.NoObf.TesselatedChunkPart[] ByRef)'.
at HarmonyLib.AccessTools.<>c__DisplayClass50_0.<Method>b__0(Type t)
at HarmonyLib.AccessTools.Method(Type type, String name, Type[] parameters, Type[] generics)
--- End of inner exception stack trace ---
at HarmonyLib.AccessTools.Method(Type type, String name, Type[] parameters, Type[] generics)
at Komet.Measure.MeasurementPatches.Apply(Harmony harmony)
at Komet.KometModSystem.<ApplyPatches>b__58_5()
at Komet.KometModSystem.Patch(Action apply, String what)

#

maybe something to do with that

blissful elbow
#

Thank you for the logs, I will try to fix the issues for the next preview build:)

#

@honest wren

honest wren
#

Glad it helped

#

Stable version works perfectly so its not game breaking or anything

blissful elbow
blissful elbow
#

New Preview/Beta Release (V. 1.2.0-pre.2)

Changelog:

  • Fixed measurement patch failures on overloaded engine methods
  • Fixed frozen GPU timing and added GPU usage tracking
  • Fixed GC/allocation statistics when HUD is disabled
  • Improved CPU thread budgeting for low-end hardware
  • Fixed excessive shadow map quality on low-end GPUs
  • Ignored false hitch reports while the game is paused
  • Fixed misleading Linux thread priority reporting
  • Added Harmony patch collision detection
  • Added engine build fingerprint verification
  • Added client-side allocation tracking and GC survivor statistics
  • Added allocation sampling by thread and object type
  • Added server block packet source tracking
  • Added mesh pool allocation tracking
  • Added per-stage GPU timing
  • Added dialog identification for large Ortho hitches
  • Improved diagnostics and crash/report accuracy
  • Expanded verification and regression tests

As this is a preview/beta build, there may be bugs, crashes etc.

#

@honest wren Try it out and let me know if everything works now :)

blissful elbow
#

Fixed

  • Joining a world could crash the client with a NullReferenceException in
      WeatherSystemClient.OnRenderFrame. pre.2 introduced a per-frame budget on the main-thread
      task drain, and a world join queues hundreds of those tasks — including the one that
      finalises the level. Spreading that backlog over frames let a renderer that was already
      registered draw before the packet initialising it had run. The budget now starts only once
      the world is finalised: everything a join queues runs in the frame it arrives, exactly like
      vanilla. Joining is lifecycle, not load, and it is not the place to save milliseconds.
  • Two budgets could stop working instead of falling back. The entity tesselation and
      entity loading budgets reopen their window on the frame boundary and nowhere else. If that
      signal ever stopped arriving while the patch stayed applied, the tesselation budget skipped
      every further entity shape — permanently, for every animated creature in the world — and
      held entities were never loaded. Both now notice the missing signal, run vanilla instead,
      and count it on the HUD; and neither arms itself at all if the measurement it depends on
      failed to apply. A budget that loses its reset has to degrade to slower, never to never.
  • The patch guard was quiet about the collisions that matter most. Where Komet replaces an
      engine method outright (its prefix returns false), another mod's transpiler never runs, a
      prefix ordered behind Komet's is never called, and a postfix sees the result of Komet's
      transcription rather than the original's. All three used to be reported as "info". They are
      now high/high/medium with the reason spelled out — this is the shape behind reports of the
      "entities are invisible since I installed this mod" kind, and it should not need a bisect.
#

Added

  • German HUD and chat. The F7 overlay and the .komet replies follow the game language;
      English and German ship in assets/komet/lang. Missing translations fall back to the English
      text in the source, never to a raw key.
  • Reproducible release builds with a published checksum. The same commit produces the same
      bytes, so the SHA-256 on the download page can be recomputed rather than merely trusted. The
      number is also published on the GitHub release, written by the build job.

Changed

  • Logs, reports and hitch lines are English. They used to be German. These end up in bug
      reports and get read by people who do not run the client that produced them — the HUD and the
      chat replies are the surfaces that follow the player's language, and nothing else does.
  • The mod zip is stored, not compressed (~180 KB → ~450 KB). Identical data does not give
      identical deflate streams across zlib implementations, so compressing would have made the
      checksum unreproducible on a different machine. The download is larger; the promise holds.
  • The unused MeasureRenderStages setting is gone from the config class. It was never read.
      The config layout version stays at 11 on purpose: an existing komet.json keeps working,
      the leftover key is ignored, and nobody's settings get regenerated over a dead entry.
#

Internals

Every build runs on GitHub Actions: both mods built, the full patch and behaviour suite run
  against the real game assemblies, the packaged zips attached to the run, previews published
  under Releases. The SDK version is pinned in global.json — a different patch level produces
  a different assembly, which is measurable and would otherwise break reproducibility silently.

  • Source folders sit next to the project file and each one is its own namespace
      (Culling/Komet.Culling, Measure/Komet.Measure). Not cosmetic: an editor rule
      that derives namespaces from paths had rewritten a generated file and silently disabled the
      engine-drift check.
blissful elbow
blissful elbow
#

Komet 1.2.0 Full release!

(again the patchnotes are so big, that I need to put it in an image ^^')

blissful elbow
#

Also now with a new Iocn drawn by me in Aseprite!

Please report any Issues here or on the Github Page!

mental frost
#

Hi! Really like to see more optimization mods, thanks a lot for that

#

I wanted to ask if this mod has some other incompatibilities, as im getting worldgen stuck in a loop when using this mod

blissful elbow
#

Hello! What Mods are you using?
Do you have some logs?

I currently do not have a full incompatibility list yet, but I could improve the Mod if I receive more reports regarding issues with other Mods

mental frost
#

I'll get some logs, for the moment I can give my mod list, thanks for checking!

additivechiseling_0.5.1.zip
algernonsterrainsampler_1.3.0.zip
AmbientsBird.zip
apewindows-v1.22.0-1..0.zip
armoryfork_1.11.1.zip
bedspawnv2_1.7.1.zip
BetterForest_0.1.2_Custom_V19.zip
boatautopilot_1.6.2.zip
butterflydisplayV1.22.0-1.2.0.zip
CaveOnlyOresRevamp.zip
claypress_1.1.0.zip
ClimateScalePatch_1.1.0.zip
CO-idle-reanimation-1.0.0_v1.22.7.zip
combatoverhaulfork_0.18.8.zip
DarcesDriftersRedone-1.3.0.zip
Easy Building 1.2.2.zip
ElkPhysics V3.0.3.zip
EternalStew_v2.0.1.zip
EvergreenPapyrus-1.0.0.zip
fairfish_2.0.0.zip
farseer_1.4.0.zip
fastmap_122.5.1.zip
firewoodtostick.zip
FunctionalMinerBeltAndLantern.zip
gearlock-firearms-net10_1.0.8.zip
immersivemodularbackpacks_1.7.6.zip
jsonpatcheslib_1.5.9.zip
Laboros-machete_1.0.2.zip
manualcrank_1.0.1.zip
MiningDropsMoreStone.zip
Opine_Upon_Pine_v1.0.10.zip
overhaulliblegacycompat_1.2.9.zip
ProspectingScan-1.22.zip
Re-Reforged Tools v1.0.2 Custom.zip
rivers_5.0.3.zip
riversextended_0.1.0.zip
scaffolding_1.3.1.zip
shipwright_1.4.1.zip
simplewatertweaks-0.15.zip
Skyrim Music.zip
SleepingBagMod_1.0.1.zip
spinningwheel_1.2.13.zip
statushudcont_4.4.0.zip
temperatureheighttweak_0.4.0.zip
TerraPrety_7.10.2.zip
toolsanimationsfork_1.2.7.zip
tzpraisethesun_v1.0.1.zip
visiblebags_1.0.2.zip
vsimgui_1.2.7.zip
vsroofing_1.7.2.zip
WarmerElks.zip
warmweathereffects_1.6.0.zip
waterweathersimulationredux_1.2.0.zip

blissful elbow
scenic kestrel
#

How good is this can people confirm, is this better than optitime and tungsten?

edgy ember
scenic kestrel
#

I'll have to test it out

edgy ember
# scenic kestrel Hmmm

Personally ive got better performances after switching from optitime to komet
Dunno about optimum
Could also depends on what is causing your lag

#

The main difference is that i get a the occasional random crash more often and that stuff like crafting or shadows are choppy

mental frost
#

Sorry for not posting the log files, the 1.2.0 release seems to have fixed the issue, the world now generates without problems

scenic kestrel
distant helm
# scenic kestrel How good is this can people confirm, is this better than optitime and tungsten?

for me, in a direct 1-1 comparison, Komet seemingly gets a higher FPS on average VS Optimum, which is already really good.

the problems.
Komet, although getting a higher average FPS, has a less stable FPS average than Optimum.

Optimum has the benefit of being able to load chunks/worlds considerably faster and with much less compute overhead through optimized code, while Komet is simply better utilization of available hardware and block-culling.

I've done recent testing using both optimum and Komet at the same time, and while the FPS gain is rather substantial (ON MY HARDWARE), it comes at the cost of severe instability.

edgy ember
#

@blissful elbow The mod greatly improved my pc's performances, but I'm having issues with crafting, it often lags a lot when trying to put things in the grid
There is also a bug that doesn't let you craft some blocks at random intervals, I don't know how to describe it so I recorded it. To fix it I have to restart the game

blissful elbow
wicked flax
#

hey I'm playing on a heavily modded server and my fps goes to shit when going from the underground to surface near my base. roughly around y=90, the worst offender "opaque" goes from 22% to almost 50%. what does "opaque mean"?

#

upon closer inspection, it seems to refer to blocks placed by me. no matter how many there are in frame, be it a big house or a piece of path, my FPS is low as long as there's man-made stuff in frame. the moment I turn to the forest it goes back to 60fps

#

narrowing FoV seems to SIGNIFICANTLY boost fps

#

hope it helps with development!

#

oh yeah it makes sense it doesn't lag when looking at a forest but lags when looking at a path made of slabs - theres conflicts with place on slabs

blissful elbow
tough owl
#

I have a problem thst only started to show up when i started to use Komet

#

At random intervals, there will be moments where the game freezes for a few seconds

#

Any idea of what could be causing it? It doesn't seem to be triggered by any action in specific

#

I don't recall this happening when i didn't have komet installed