[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92224":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":14,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":13,"starSnapshotCount":13,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},92224,"CS2FOW","karola3vax\u002FCS2FOW","karola3vax",null,"C++",239,12,7,0,81,48.44,"MIT License",false,"main",true,[],"2026-07-22 04:02:05","\u003Cdiv align=\"center\">\n\n# [CS2FOW]\n(Counter-Strike 2 Fog Of War)\n### Server-sided anti-wallhack occlusion culling for Counter-Strike 2 servers\n\n[![Version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fkarola3vax\u002FCS2FOW?style=for-the-badge&label=version)](https:\u002F\u002Fgithub.com\u002Fkarola3vax\u002FCS2FOW\u002Freleases\u002Flatest)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fkarola3vax\u002FCS2FOW\u002Ftotal?style=for-the-badge&label=downloads)](https:\u002F\u002Fgithub.com\u002Fkarola3vax\u002FCS2FOW\u002Freleases)\n[![Issues](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fissues\u002Fkarola3vax\u002FCS2FOW?style=for-the-badge&label=issues)](https:\u002F\u002Fgithub.com\u002Fkarola3vax\u002FCS2FOW\u002Fissues)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fkarola3vax\u002FCS2FOW?style=for-the-badge&label=license)](LICENSE)\n[![Last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fkarola3vax\u002FCS2FOW\u002Fmain?style=for-the-badge&label=last%20commit)](https:\u002F\u002Fgithub.com\u002Fkarola3vax\u002FCS2FOW\u002Fcommits\u002Fmain)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n![CS2FOW demonstration](docs\u002FCS2FOW.gif)\n\n\u003C\u002Fdiv>\n\n## FAQ\n\nThese are the top repeated questions from Reddit, Discord, GitHub, and live\nserver testing.\n\n### What is CS2FOW?\n\nCS2FOW is a server-side anti-wallhack plugin for Counter-Strike 2 community\nservers.\n\nIf an enemy is fully hidden behind solid map geometry, CS2FOW can stop sending\nthat enemy's live entity data to the client. If the client never receives the\nhidden enemy position, a wallhack has much less useful data to draw.\n\nIt is not a visual filter. It does not hide pixels on the player's PC. It runs\non the server and controls which enemy entities are transmitted.\n\n### Does this work on Valve matchmaking or Premier, and can players get VAC banned?\n\nNo. CS2FOW is a Metamod server plugin for community and dedicated servers.\nPlayers do not install it, and it cannot be used on Valve official matchmaking\nunless Valve implements something similar inside the game.\n\nThere is no expected VAC risk from CS2FOW itself. It runs on the server, does\nnot modify client files, does not inject into the client, and does not ask\nplayers to install anything.\n\n### Can cheats bypass this?\n\nNot in the usual \"update the cheat\" way.\n\nIf the server sends enemy positions, cheats can read them. If the server does\nnot send hidden enemy positions, a cheat cannot recover exact live data it never\nreceived.\n\nCheats can still use weaker signals such as sound events, last-known positions,\ncommon prefire spots, teammate information, or game sense. CS2FOW reduces the\nmain wallhack data source; it does not make cheating impossible.\n\n### Does this make the server heavy or run checks every tick?\n\nIn testing, no meaningful overhead was observed.\n\nThe expensive map work is done ahead of time or in a low-priority background\nbake. Runtime checks use pre-baked BVH8 data and AVX math instead of engine\nTraceRay spam.\n\nIn a tested 12v12 worst-case scenario, the old trace-based approach could hit\naround `60ms`. CS2FOW averaged around `1ms`, with worst cases around `8ms`.\n\n`CheckTransmit` only reads the finished visibility matrix. BVH traversal, ray\nmath, file IO, locks, and baking do not run inside the hot transmit hook.\n\nCS2FOW does not calculate visibility every tick. A worker thread refreshes the\nvisibility matrix on an interval. The default is `10ms`. Old snapshots are\nreplaced instead of queued.\n\nThe worst case is more directed enemy pairs, especially if everyone is an\nenemy.\n\nCS2FOW was designed for that shape of work: pre-baked map data, BVH8 traversal,\nAVX packet math, a worker thread, early exits, and cached triangle packets.\nServer owners should still test their own maps and player counts with\n`cs2fow_status`.\n\n### Does it add delay or make peeking feel bad?\n\nThat is the main tradeoff, so CS2FOW intentionally reveals early.\n\nIt uses player movement, ping, a minimum lookahead window, and a short hold time\nto avoid late pop-in. Higher-ping players can receive a larger early-reveal\nbuffer, capped by configuration.\n\nThe preview is tuned to prefer a small near-corner information leak over hiding\nan enemy too late.\n\n### Can I still wallbang hidden enemies?\n\nYes.\n\nThe enemy still exists normally on the server. Hit registration, bullet\npenetration, damage, movement, and game rules still happen server-side. CS2FOW\nonly changes whether that enemy entity is transmitted to a specific client.\n\n### What exactly is hidden?\n\nIn the current preview, CS2FOW filters living enemy pawns and their obvious\nvisual group from living T\u002FCT recipients.\n\nDead players, spectators, HLTV, teammates, self, projectiles, dropped world\nitems, particles, effects, and sounds are not filtered. Bots are treated like\nnormal players when they are alive enemies.\n\n### Does it block radar cheats, sound ESP, or other information leaks?\n\nPartly.\n\nIf a radar cheat depends on enemy entity positions sent by the server, CS2FOW\nreduces that data too. Hidden enemies are not transmitted, so there is less\nlive position data to draw.\n\nIt does not currently hide sound events, teammate information, bomb\ninformation, dropped weapon clues, or every possible world clue. Sounds are\nseparate events, and changing them would affect legitimate players too.\n\n### What about smokes, doors, breakables, props, and weapon pop-in?\n\nThe current preview uses static baked map geometry only.\n\nDynamic occluders such as smokes, doors, breakables, props, particles, and\nprojectiles need different handling. They are intentionally out of scope until\nthey can be handled without breaking normal gameplay.\n\nThe preview also checks player body visibility, not every held weapon muzzle.\nWeapon muzzle or weapon-bounds samples are planned so a player can be revealed\nearly when the held weapon becomes visible first.\n\n### How accurate is it, and why not just use PVS or engine TraceRay?\n\nSpatially, CS2FOW uses the real CS2 map physics resource, not a hand-made map.\nThe baker extracts static world collision triangles from the mounted map, builds\na BVH8 acceleration structure, and the runtime checks multiple observer and\ntarget points against that geometry.\n\nIt is accurate for solid static walls, floors, corners, and normal map cover.\nIt is not a full simulation of every dynamic gameplay object.\n\nPVS is very cheap, but it is area-based and too loose for anti-wallhack. It can\nleak far more than a real visibility check.\n\nEngine TraceRay can be accurate, but doing many traces for every player pair is\nexpensive. CS2FOW avoids that by baking map geometry once and using BVH8 + AVX\nray math in its own worker thread.\n\n## Troubleshooting\n\n### Why does my VDS say AVX is missing?\n\nSome VDS providers hide CPU features from the virtual machine.\n\nEven if the physical CPU supports AVX, the guest OS may not expose AVX or OS\nAVX state. Check with CPU-Z, `lscpu`, or your host provider.\n\n### What does automatic map baking do?\n\nIf the current map has no valid `.bvh8` file, CS2FOW starts the packaged baker\nin the background at low priority.\n\nThe server stays playable and fail-open while baking. After the bake validates,\nCS2FOW can activate during the same map session.\n\n### Does auto-baking support Workshop maps?\n\nYes, if CS2 has mounted the map and the server can read the VPK.\n\nCS2FOW resolves the mounted map VPK, including Workshop addon VPKs that contain\na nested `maps\u002F\u003Cmap>.vpk`, then bakes from that source.\n\n### Why ship optional official map prebakes?\n\nConvenience and hostile hosting environments.\n\nAuto-baking should work for normal installs, but some Linux permissions, panel\nsetups, or VDS policies can block background executables. Optional prebakes let\nserver owners install official map data without running the baker on first\nload.\n\n### What happens if Valve updates a map?\n\nCS2FOW validates the map source before using a bake.\n\nThe bake stores the source physics CRC and size. On map load, CS2FOW compares\nthe current map source with the baked source. If they do not match, the bake is\nrejected and CS2FOW fails open until a new bake is generated.\n\nFor nested Workshop map packages, the nested map VPK source is also tracked.\n\n### What does fail-open mean?\n\nIf CS2FOW is not sure, it shows players normally.\n\nMissing map data, corrupt bakes, wrong CRCs, unsupported CPU features, stale\nworker results, failed hooks, and baking-in-progress states should never hide\nplayers incorrectly.\n\n### Why did Linux report `GLIBCXX_3.4.32 not found`?\n\nOlder Linux packages were built against a newer libstdc++ than some SteamRT3\nservers provide.\n\n`v0.1.1-preview` rebuilt Linux artifacts against Valve's SteamRT3 Sniper SDK and\nadded ABI checks for that runtime baseline.\n\n### Why did Linux report `automatic bake failed: Permission denied`?\n\nThe server likely could not execute the packaged baker or VRF binary.\n\nCheck executable permissions on Linux:\n\n```sh\nchmod +x game\u002Fcsgo\u002Faddons\u002Fcs2fow\u002Fbin\u002Fcs2fow_baker\nchmod +x game\u002Fcsgo\u002Faddons\u002Fcs2fow\u002Ftools\u002Fvrf\u002F*\n```\n\nAlso check whether the hosting panel, container, mount options, or provider\npolicy blocks executing files from the server directory.\n\n### What is gamedata for?\n\nGamedata stores small platform-sensitive offsets used by the plugin.\n\nCS2FOW needs these for things like reading the CheckTransmit recipient slot and\nresolving the entity system. If CS2 changes those layouts, gamedata may need an\nupdate.\n\n### What should I include in a bug report?\n\nInclude:\n\n- CS2FOW version.\n- Windows or Linux.\n- Dedicated server, panel, container, or VDS provider.\n- Map name.\n- `cs2fow_status` output.\n- Server console log around plugin load and map start.\n- Whether the issue happens while alive, dead, spectating, or on bots.\n- A short clip if the report is about pop-in or visibility.\n\n## How It Works\n\n**If the enemy is fully behind solid map geometry, the cheat has no enemy data\nto draw.**\n\nCS2FOW is not a visual filter. It is server-side visibility culling. The plugin\nuses the real CS2 map physics resource, bakes static world triangles into a\nBVH8 acceleration structure, then uses AVX math on a worker thread to decide\nwhich enemy pawns should be transmitted to each player. `CheckTransmit` only\nreads the finished visibility matrix.\n\n```mermaid\nflowchart LR\n  A[\"Mounted map VPK\"] --> B[\"world_physics.vmdl_c\"]\n  B --> C[\"CS2FOW baker\"]\n  C --> D[\"Filtered static triangles\"]\n  D --> E[\"BVH8 map data\"]\n  E --> F[\"Runtime worker thread\"]\n  G[\"Player snapshots\"] --> F\n  F --> H[\"Visibility matrix\"]\n  H --> I[\"CheckTransmit\"]\n  I --> J[\"Hidden enemies are not sent\"]\n```\n\n\u003Cdiv align=\"center\">\n\n![Static map geometry seen by CS2FOW](docs\u002Fscan_cbbl.png)\n\n\u003C\u002Fdiv>\n\n## Why CS2FOW\n\nTraditional server-side anti-wallhack approaches often rely on expensive engine\nTraceRay checks. CS2FOW avoids that runtime cost by doing the heavy map work\noffline or in a low-priority background bake, then using the baked BVH8 data at\nruntime.\n\nIn a 12v12 worst-case test, the old trace-based approach could hit around\n`60ms`. CS2FOW averaged around `1ms`, with worst cases around `8ms`.\n\n**That is up to 50x faster in the tested scenario.**\n\n## Quickstart\n\n\u003Ctable width=\"100%\">\n\u003Ctr>\n\u003Ctd width=\"33%\">\u003Cb>1. Pick your core package\u003C\u002Fb>\u003Cbr>\u003Cbr>\nWindows:\u003Cbr>\n\u003Ccode>cs2fow-0.1.2-preview-windows-x86_64.zip\u003C\u002Fcode>\u003Cbr>\u003Cbr>\nLinux:\u003Cbr>\n\u003Ccode>cs2fow-0.1.2-preview-linux-x86_64.zip\u003C\u002Fcode>\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\">\u003Cb>2. Extract into CS2\u003C\u002Fb>\u003Cbr>\u003Cbr>\nExtract the package into your server's:\u003Cbr>\u003Cbr>\n\u003Ccode>game\u002Fcsgo\u003C\u002Fcode>\u003Cbr>\u003Cbr>\nMetamod:Source for CS2 must already be installed.\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\">\u003Cb>3. Start and check\u003C\u002Fb>\u003Cbr>\u003Cbr>\nStart the server, load a map, then run:\u003Cbr>\u003Cbr>\n\u003Ccode>cs2fow_status\u003C\u002Fcode>\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\nDownload from the latest release:\n\nhttps:\u002F\u002Fgithub.com\u002Fkarola3vax\u002FCS2FOW\u002Freleases\u002Flatest\n\nThe optional official map prebakes from `v0.1.0-preview` remain compatible:\n\n```text\ncs2fow-0.1.0-preview-official-maps.zip\n```\n\nInstall that zip into `game\u002Fcsgo` if you want official maps to activate without\nfirst-load baking.\n\n## Automatic Map Baking\n\nIf map data is missing or outdated, CS2FOW starts a low-priority background bake\nfor the current mounted map. The server stays playable while this happens.\nAfter the bake validates, CS2FOW activates for that map during the same session.\n\nThis supports official maps, custom maps, and Workshop maps as long as CS2 has\nthe map mounted and the `addons\u002Fcs2fow\u002Fdata\u002Fmaps` folder is writable.\n\n## Hardware Requirement\n\nCS2FOW requires AVX CPU support and OS AVX state support. Most CPUs from around\n2012 and newer support AVX, but some VDS providers hide or disable it inside\nthe virtual machine. If CS2FOW does not activate, check AVX support with CPU-Z\nor a similar tool.\n\n## Configuration\n\nDefaults live in `cfg\u002Fcs2fow.cfg`:\n\n```text\ncs2fow_enable 1\ncs2fow_update_interval_ms 1\ncs2fow_max_lookahead_ms 500\ncs2fow_min_lookahead_ms 200\ncs2fow_peek_margin_units 160\ncs2fow_visibility_hold_ms 50\ncs2fow_debug 0\n```\n\n`cs2fow_status` reports active or disabled state, map CRC, bake version,\ntriangle counts, worker timings, result age, evaluated pairs, visible totals,\nhidden totals, and automatic bake progress.\n\n## Manual Baker\n\nThe packaged baker is used automatically by the plugin, but it can also be run\nmanually:\n\n```text\ncs2fow_baker --game \u003Ccs2-root> --map de_dust2 --output de_dust2.bvh8\n```\n\nUse `--vpk \u003Cpath>` for a mounted custom or Workshop addon VPK. Workshop addons\ncontaining `maps\u002F\u003Cmap>.vpk` are extracted automatically.\n\nGenerated map data is derived from Counter-Strike 2 game data and is covered by\n`DATA_NOTICE`, not the MIT project license.\n\n## Build From Source\n\nThe build expects Metamod:Source and HL2SDK CS2 references. The local defaults\nmatch this workspace layout:\n\n```text\nmkdir build\ncd build\npython ..\u002Fconfigure.py\nambuild\n```\n\nThen package:\n\n```text\npython package.py\n```\n\nGitHub Actions builds and tests Windows and Linux packages on every push.\n\n## Known Limits\n\n- Static map geometry only.\n- No smoke, doors, breakables, projectiles, particles, props, or other dynamic\n  blockers.\n- No scalar fallback; AVX is required.\n- CS2 updates may require gamedata updates.\n\n## Support\n\nUse GitHub Issues for bug reports and feature requests:\n\nhttps:\u002F\u002Fgithub.com\u002Fkarola3vax\u002FCS2FOW\u002Fissues\n\n## License\n\nProject code is MIT licensed. See `LICENSE`, `THIRD_PARTY_NOTICES`, and\n`DATA_NOTICE`.\n","CS2FOW 是一个为《反恐精英2》（CS2）社区服务器设计的服务器端防透视插件，通过服务端遮挡剔除机制，在敌人完全被地图几何体遮挡时停止向客户端发送其实体数据，从而削弱墙挂类外挂的数据源。其核心采用预烘焙的BVH8加速结构与AVX指令优化可见性计算，运行时开销极低（实测平均1ms），不依赖客户端修改或注入，兼容Metamod插件框架。适用于第三方CS2竞技服、社区服及反作弊增强场景，无法用于Valve官方匹配服。",2,"2026-07-08 04:29:53","CREATED_QUERY"]