---
title: "Workmelt"
url: "https://aigamehub.app/ja/games/workmelt-b5072e"
source: "https://github.com/eriknomitch/workmelt"
source_type: "github"
play_url: "https://workmelt.com"
platform: "desktop"
login_required: false
pricing: "free"
origin: "original"
ai_tools: []
game_languages: ["en"]
author: "eriknomitch"
author_handle: "eriknomitch"
category: "アクション"
categories: ["action"]
tags: ["browser", "fps", "multiplayer", "threejs", "webgl"]
added: "2026-10-24T02:45:29.827Z"
updated: "2026-10-24T02:46:04.206Z"
locale: "ja"
content_locale: "ja"
---

# Workmelt

Three.js と WebGL2 で構築されたブラウザベースのマルチプレイヤーFPS。プロシージャル生成アセットとボット戦を備え、npm run dev でローカルにサーブされ、workmelt.com でプレイ可能。

## Description

Workmelt はブラウザで動作するファーストパーソンシューターで、Three.js r180 と WebGL2 で構築されています。すべてのテクスチャ、メッシュ、アニメーションはロード時にコードからプロシージャル生成され、オーディオはプロシージャル合成とサンプリング効果を組み合わせています。実行時の依存関係は three のみです。プレイヤーはマッチスタート画面から開始し、マップとボット守備隊を選択するか、フレンドがルームに参加して一緒に準備完了するのを待ちます。操作は WASD で移動、マウスで照準、LMB で発射、RMB または X で ADS、R でリロード、Shift でスプリント、Ctrl でしゃがみ、Space でジャンプ、Q/E でリーン；専用のトラックパッドと ADS トグルオプションがあります。グラフィックは初回起動時に調整される Auto プリセットがデフォルトで、ディスプレイ、テクスチャ、シェーディング、ポストプロセッシング、可視性設定の詳細タブがあります。ソースは MIT ライセンスの下、mshumer/Claude-of-Duty からフォークされています。

## Original post

A multiplayer FPS shooter break with your co-workers in the browser

Topics: claude, claude-code, game, game-dev, html, html5-game, shooter, three, threejs

# Workmelt Forked from [mshumer/Claude-of-Duty]([url](https://github.com/mshumer/Claude-of-Duty)) A first-person shooter built in the browser with Three.js r180 and WebGL2. Roughly 55k lines across 13 subsystems, written by a fleet of AI agents under orchestration. Every texture, mesh and animation is generated procedurally at load time from code — no models, no HDRIs, no image files. Audio combines a procedural synthesis layer with sampled sound effects. The only runtime dependency is `three`. ```bash npm install npm run dev # http://127.0.0.1:5273 (override with OW_PORT) ``` The game opens on a **Match Start** screen rather than dropping you mid-firefight: pick a **map**, pick a bot garrison and start on your own, or wait for a friend to join your room and ready up together. Once the match is live, click the canvas to lock the cursor. WASD move, mouse aim, LMB fire, RMB hold to ADS, X to toggle ADS, R reload, Shift sprint, Ctrl crouch, Space jump, Q/E lean, Esc release. **On a trackpad**, aiming down sights has its own settings, because a two-finger click cannot be held while a one-finger click fires. The keyboard bind is the default fix: **X** raises the optic and a second tap lowers it, so aiming needs neither the pointer nor a hold out of the box (**ADS Key** rebinds it). For the mouse itself, **Aim (Mouse)** switches the right button between `hold` — the classic default — and `toggle`. Both are stored per browser. Graphics default to **Auto** per browser profile. On first launch the game estimates the active display cadence, calibrates a Performance/Low/Medium/High/Ultra pipeline, then adjusts internal resolution within that tier to pursue stable p95 frame pacing. Open the pause menu to choose a fixed preset or a target from 30–240 FPS; settings are stored locally and never synchronized in multiplayer. ### Advanced graphics Auto is a starting point, not a ceiling. The pause menu's graphics tabs expose every knob the renderer has, each of which follows the preset until you touch it: **Display** (internal resolution scale up to 200% supersampling, the device-pixel-ratio cap, anti-aliasing, weapon MSAA), **Textures & Detail** (world bake resolution, character bake resolution, anisotropic filtering, parallax occlusion, micro detail, particle and decal budgets), **Shading & Lighting** (cascade count and resolution, shadow distance and density, ambient occlusion, contact shadows, screen-space reflections, volumetrics), **Post-Processing** (bloom, motion blur, ADS depth of field, sharpening, grain, chromatic aberration, vignette, grade strength) and **Visibility** (brightness, auto-exposure lock, exposure key, shadow lift, lamp brightness, FOV). Anything the renderer can take mid-frame is applied as you move it. Anything that is built once at boot — a post pass, a render target, a texture bake — is marked `RESTART`, saved immediately, and applied when you press **Apply & Restart**. The Auto Status row reports the resolution you are actually render
