← Back to news

CSSQuake

cssquake.com|338 points|71 comments|by msalsas|Jun 20, 2026

Exploring cssQuake

cssQuake is a high-performance experience powered by the PolyCSS engine. This project blends the aesthetics of web styling with the fast-paced action of a classic arena shooter.

"A seamless integration of CSS-driven rendering and multiplayer combat."

cssQuake Concept

🌐 Multiplayer Configuration

When setting up a match, players can customize the session parameters to suit their competitive needs. The following variables are adjustable:

SettingDescription
NameThe identifier for the game session.
Color MapThe visual palette applied to the environment.
FraglimitThe score required to win: ScoreLimit\text{Score} \ge \text{Limit}.
TimelimitThe duration of the match before a winner is declared.
Max PlayersThe total capacity of the server.

Session Actions:

  • Create a new lobby.
  • Join an existing game.
  • Copy Link to invite others.

🎮 Control Scheme

Navigating the world of cssQuake requires precision. Use the following inputs to dominate the arena:

Movement & Combat

  • Movement: WASD
  • Looking Around: Mouse
  • Attack: Click
  • Jump: Space
  • Sprinting: Shift
  • Crouching: Ctrl

Menu Navigation

  • Navigate: Arrow Keys
  • Select: Enter
  • Back/Exit: Esc

🛠️ System Settings & Debugging

The game provides extensive toggles to optimize performance or troubleshoot the engine.

Gameplay Toggles

  • Visuals: Crosshair, Dynamic lighting, Show particles, Show enemies.
  • Audio: Mute sounds.
  • Input: Invert mouse.
  • Standard Damage \rightarrow Disable damage (Off/On)
  • Disable movement (Off/On)
  • Disable attacks (Off/On)

Debugging Suite

To analyze the underlying PolyCSS architecture, users can toggle the following:

  1. Outlines: off / on
  2. Stats Panel: off / on
  3. FPS Panel: off / on
/* Example PolyCSS Engine Logic */
.player-entity {
  position: absolute;
  transform: translate3d(var(--x), var(--y), var(--z));
  transition: none;
}

📹 Recording & World Data

The debug menu allows for detailed captures of the game state. Use the RECORD function to capture specific data layers:

  • Visible elements
  • DOM structure
  • Enemies positions
  • Pickups locations
  • World geometry

Entity Classification

The game world is populated by various objects, categorized as:

  • Special Objects/Items: Power-ups and environmental assets.
  • Enemies: Hostile AI or opposing players.