<!-- Markdown source of https://commongrounds.fun/about — COMMONGROUNDS -->

# About

## A work-in-progress multiplayer browser game

The goal of this project is to make a full-fledged 3D multiplayer sandbox game like Garry's Mod
that runs entirely in the browser with desktop-level performance.

This used to be practically impossible, but newer browser technologies like
[WebGPU](https://webgpu.report), [WebTransport](https://web.dev/webtransport/), and
[WebAssembly](https://webassembly.org) have made it easier. The issue is that these technologies are
new and no game engines support all three yet that I know of.

To get around this, this project uses [hogdot](https://github.com/hogdanish/hogdot), my own custom
fork of [Godot](https://godotengine.org) that builds on top of WebGPU support from
[GodotWebGPU](https://godotwebgpu.com). Combined with a custom Rust WebTransport implementation the
end result is a working proof-of-concept that uses the latest & greatest APIs browsers have to
offer.

The bad news is that the game currently performs like dogshit. Likely worse than a regular WebGL
game would. I'm working on it!

## System requirements

- **Browser**: Chromium-based browser (Chrome/Opera/Brave/Edge/etc) is recommended for best
  performance, but any recently updated browser with WebGPU and hardware acceleration enabled should
  work in theory.
- **Operating system**: Windows, Linux, or macOS. No mobile support is planned
- **Hardware**: Any GPU from the last few years that supports WebGPU
- **Network**: Needs to support HTTP/3 over QUIC (WebTransport), otherwise it will fall back to less
  reliable WebSockets (YUCK!!!!)

## Controls

Only mouse and keyboard are officially supported. Gamepad support is in progress.

| Action | Key or mouse |
| --- | --- |
| Move forward / back | `W` / `S` |
| Strafe left / right | `A` / `D` |
| Jump | `Space` |
| Crouch / handbrake | `C` |
| Sprint / wheelie | `Shift` (hold) |
| Interact | `E` |
| Attack | Left mouse button |
| Open chat | `T` / `Enter` / `/` |
| Show player list | `Tab` (hold) |
| Pause / settings | `Esc` |

## FAQ

### General questions

#### Do I need an account?

Nope, you can join and play as a guest. A [Newgrounds](https://www.newgrounds.com) account is
only needed if you want to chat and save your progress.

#### How many people can be on a server together?

I'm not sure yet. Right now the server is capped to 50 players, but the maximum player count the game
can actually support might be below or higher than that. As of the time of writing this, the highest
amount of concurrent players we've hit is about ~38, which did have some noticable lag. This should
improve as I optimize the server more. The goal is to support upwards of 100 players.

#### Can I grief? Are there any rules?

Yes and yes. You can grief and mess around with other players, but there are still rules in place. Please
read the [rules](/rules) page for more information. Generally, you can be mean to other players and act
like a stinker but seriously malicious behavior like hacking, doxxing, or acting creepy will get you banned.

#### Can other players see my IP?

No. Only the server itself can see your IP, there's no peer-to-peer anything in the game. Even moderators cannot see your IP
when they IP ban you. The [privacy page](/privacy) goes into more detail about what information
is collected and who can see it.

#### Will there be voice chat?

I plan on experimenting with voice chat soon, but I have no idea how feasible it is. It's possible that it might be
restricted to desktop clients only if I run into any browser-specific limitations. No promises!

#### Is the game vibe-coded?

Not in the traditional sense.

Like most developers in 2026, I do use AI assisted tooling, but I maintain a very hands-on approach to development and
understanding the codebase. None of the game's code has been automatically generated by AI without significant human oversight
and scrutiny, and a ton of manual effort goes into every part of the game's development.

LLMs are good at writing code in isolation but struggle with complex tasks like game development.
Relying on an agent who has zero way to actually interact with the editor or actually test the game
creates more issues than it solves. Plus it just isn't fulfilling for me personally.

The only exception is the WebGPU driver work outside of the game, which itself was borrowed from a
[heavily AI-assisted project](https://godotwebgpu.com) that I adapted and modified for use in this game.

Generative AI is not used whatsoever for art, music, design, or any other aspect of the game, nor will it ever be,
because that personally defeats the purpose of what I find fulfilling about working on projects like this.

### Troubleshooting

#### Why does it say my browser isn't supported?

If your browser is blocked outright, [WebGPU](https://webgpu.report) is not working for you, which is required. You can try:

- Switching to Google Chrome (generally the easiest solution)
- Updating your browser to the latest version
- Enabling hardware acceleration in your browser settings
- Making sure your GPU drivers are up to date
- Buying a new graphics card (sorry)
- Waiting for me to release a native desktop client in the future (again, sorry)

#### The game is stuck and nothing is happening.

1. Be patient, the game is probably downloading data and/or compiling shaders and it might take awhile
2. Do a hard refresh by pressing `Ctrl+Shift+R` (Windows/Linux) or `Cmd+Shift+R` (Mac).
3. Make sure you have "hardware acceleration" turned ON in your browser settings and that [WebGPU is supported](https://webgpu.report)
4. Try disabling browser extensions?

If that doesn't help, [submit a report](/feedback) and tell me your browser, OS version, GPU, and any errors printed in the dev console

#### I can't connect to the server.

First, check the [status page](/status). If the server is online, try reconnecting or using another trusted network. Your browser, VPN, proxy, or network restrictions may prevent a connection.

#### Why am I seeing a VPN or WebTransport warning?

The game prefers WebTransport. VPNs, proxies, Tor, and some networks can block it. If this happens, the game tries WebSockets instead. You can keep your VPN enabled, but you may experience increased latency and lag. IP-range checks run on our server. Your IP is not sent to a VPN-detection service, and a match does not prove you use a VPN.

#### It runs badly / stutters a lot.

That's somewhat normal for now as I continue to optimize the game, sorry. Doing the following may help:

1. Play the game for a bit to allow shaders to compile
2. Close any tabs or processes that you are not using
3. Turn down in-game graphics settings in the escape menu
4. Use a [Chromium-based browser](#faq-browser-not-supported)

#### How do I report a bug?

See [feedback page](/feedback).

## Roadmap

### Actively being worked on

- Menu & client settings
- Character customization & cosmetic drawing
- Netcode optimization
- Browser optimization

### Near future

- Player sprites art pass
- "Toy" & inventory system (weapons, tools, etc.)
- Graffiti system that allows players to draw on surfaces in the world
- Drawing tablet support for drawing
- In-game DarkRP-esque jobs and roleplay system
- In-game shop to let you buy cosmetics, toys, vehicles, entities, etc.
- Full gamepad support
- More vehicles

### Far future

- Fleshed out prototype map
- Voice chat
- Self-hosting / community server support
- Modding/plugin API & open sourcing the project
- Desktop build
- Discord Activities build

### Not planned

- Mobile support
