{"id":13696805,"url":"https://github.com/Triang3l/WebQuake","last_synced_at":"2025-05-03T17:32:16.132Z","repository":{"id":6865701,"uuid":"8114616","full_name":"Triang3l/WebQuake","owner":"Triang3l","description":"HTML5/WebGL source port of Quake","archived":false,"fork":false,"pushed_at":"2022-05-19T20:14:51.000Z","size":518,"stargazers_count":626,"open_issues_count":25,"forks_count":100,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-11-06T03:47:59.727Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Triang3l.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-02-09T20:26:17.000Z","updated_at":"2024-11-06T01:28:35.000Z","dependencies_parsed_at":"2022-07-14T00:50:34.439Z","dependency_job_id":null,"html_url":"https://github.com/Triang3l/WebQuake","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Triang3l%2FWebQuake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Triang3l%2FWebQuake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Triang3l%2FWebQuake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Triang3l%2FWebQuake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Triang3l","download_url":"https://codeload.github.com/Triang3l/WebQuake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224369752,"owners_count":17299951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T18:00:47.520Z","updated_at":"2024-11-13T00:31:01.986Z","avatar_url":"https://github.com/Triang3l.png","language":"JavaScript","funding_links":[],"categories":["Sourceports"],"sub_categories":["Quake"],"readme":"# WebQuake\r\n\r\n**WebQuake** is an HTML5 WebGL port of the game Quake by id Software.\r\n\r\n[Online demo by SpiritQuaddicted](http://quaddicted.com/forum/viewtopic.php?pid=438).\r\n\r\n# Installing and running\r\n\r\nFollow these steps to install WebQuake:\r\n\r\n1. Install a web server with HTTP 1.1 Range support. The project was developed and tested on [Abyss Web Server](http://www.aprelium.com/abyssws/) on Windows, so it's guaranteed to work on it.\r\n2. Download entire contents of the Client folder (index.htm and WebQuake/ folder) from the Code tab and put it somewhere on your server.\r\n3. Get Quake resource files. The demo version containing only the first episode is enough.\r\n4. Copy the `id1` folder from the Quake folder to the folder where you put index.htm.\r\n5. If you have Quake mission packs, repeat step 4 for `hipnotic` and/or `rogue` folders.\r\n6. If you're running a system with case-sensitive names (such as Linux), make sure that all game files **except for code files** have lowercase names.\r\n\r\nTo launch WebQuake, go to the WebQuake directory on your server in your browser.\r\n\r\nTo launch the game with command line arguments, add ? after the address and put the arguments after it in the same format as you use for Quake.\r\n\r\nFor Scourge of Armagon, add `-hipnotic` command line argument. For Dissolution of Eternity, add `-rogue`.\r\n\r\nTo launch mods, copy the mod folder into the folder containing index.htm and add `-game MOD_NAME_HERE` command line argument. Ensure step 6 of the installing instructions for the mod folder.\r\n\r\nTo use browser hotkeys (such as F5, Ctrl+T and Ctrl+W), click the address bar, and when you're done, click the game.\r\n\r\n# Playing multiplayer\r\n\r\nIf you want to join a multiplayer game, do one of the following steps, go to Multiplayer menu in the main menu, type the IP in \"Join game at\" field and press Enter, or type `connect ws://ip:port` in the console.\r\n\r\nYou can also play WebQuake games in a native Quake (not QuakeWorld) client such as WinQuake or GLQuake. Choose TCP/IP in the Join Game menu.\r\n\r\nYou cannot join multiplayer games if the client is installed on https:// protocol, however.\r\n\r\nIf you want to create a server, first, install the dedicated server by completing the following steps.\r\n\r\n1. Install [Node.js](http://nodejs.org).\r\n2. Download the \"Server\" folder from the repository.\r\n3. Put Quake resource files into the downloaded Server folder.\r\n3. Open Node.js command prompt.\r\n4. Go (cd) to the Server folder.\r\n5. Type `npm install websocket` (for more information, see [Worlize/WebSocket-Node](https://github.com/Worlize/WebSocket-Node) repository).\r\n\r\nThen, to launch a server, open Node.js command prompt, go to the Server folder and type `node WebQDS.js`.\r\n\r\nTo change maximum number of players, use `-maxplayers` command line argument.\r\n\r\n## Remote console\r\n\r\nTo execute console commands on the server from the client or the web, set `rcon_password` in the server console. If you have spaces in the password, surround it with quotes.\r\n\r\nDon't tell the password to anyone except for the server admins. **Don't put the password in the command line, as everybody on the web can see your command line on your server's `/rule_info` page!**\r\n\r\nThen, you have 4 ways to execute server commands:\r\n\r\n* In the game, when not connected, in the console, type `rcon_address ip:port` (without ws://), `rcon_password server_RCON_password` (surround the password with quotes if you have spaces in it), and then execute the commands by typing `rcon your_command_here`.\r\n* In the game, when connected to the server, do the same as in the previous way except for settings `rcon_address`.\r\n* Go to the server IP in the browser (for example, if your server is at `ws://192.168.0.2:26000`, go to `http://192.168.0.2:26000`). On the Rcon line, enter your command in the left field and the password in the right field and press Send.\r\n* Go to `http://ip:port/rcon/your_command_here` in the browser. Login as \"quake\" with your RCON password.\r\n\r\n## Server info API\r\n\r\nYou can retrieve some server information in JSON format by going to special addresses on your server IP.\r\n\r\n* `/server_info` — returns an object containing the server name `hostName`, current level name `levelName`, number of connected players `currentPlayers`, maximum number of players `maxPlayers` and API version `protocolVersion`. Gives 503 when server is off.\r\n* `/player_info` — returns an array of objects with the info about a player, where # is player number starting from 0. Contains name `name`, shirt/pants color `colors`, shirt color is upper 4 bits, pants color is lower 4 bits), number of kills `frags`, time since connected `connectTime` and IP address `address`. Gives 503 when server is off or 404 if the player is not found.\r\n* `/player_info/#` — returns single player info object for the player under the number #.\r\n* `/rule_info` — returns an array of all server console variables (like movement variables), in `{rule:\"variable name\",value:\"variable value\"}` format.\r\n* `/rule_info/variable_name` — returns single server console variable in the same format. 404 if the variable doesn't exist.\r\n\r\n# Adding game music\r\n\r\nTo add music to WebQuake, you need to get the music off the Quake CD and convert it into .ogg format ([Audacity](http://audacity.sourceforge.net/) is great for this).\r\n\r\nThe .ogg files should be called `quake##.ogg`, where ## is CD track number minus 1 with trailing 0, so the main theme is named `quake01.ogg` and the last track on the Quake disc is `quake10.ogg`.\r\n\r\nThen you should configure the server to return audio/ogg MIME type for .ogg files.\r\n\r\nAfter that, create \"media\" folder in the \"id1\" folder (or, for the mission pack music, \"hipnotic\" or \"rogue\") and put the .ogg files into it.\r\n\r\n# Browser support\r\n\r\nThe port has been tested on the following browsers (results from 2013):\r\n\r\n* Firefox (Windows) — **Very good** — developed on it.\r\n* Chrome (Windows) — **Very good** — no \"loading\" image.\r\n* Firefox (Android) — **Okay** — very low performance (canvas is locked at 12 FPS), no mouse support. Keypresses are incorrect, not tested with Windows keyboard.\r\n* Chrome (Android) — **Not Good** — no \"loading\" image, sound is broken (launch with `?-nosound -nocdaudio`), no mouse. Requires Windows-compatible keyboard for Esc and F1-F12 keys.\r\n* Opera (Windows) — **Not Good** — low performance, nothing is drawn in water (type `r_waterwarp 0` in the console), no mouse.\r\n* Internet Explorer (Windows) — **Unsupported** — bad TypedArray support, but likely many more issues.\r\n\r\nMouse support is currently available only on Chrome and Firefox. Stereo positional audio is supported on Chrome and Safari.\r\n\r\n# Tips\r\n\r\nIf the sound randomly doesn't play, go to console (press ~ or Options \u003e Go to console in main menu), type `stopsound` and press Enter.\r\n\r\nYou can delete saved games by pressing Del in the load or save menus. This only works for the saved games created in WebQuake.\r\n\r\n# Contributing\r\n\r\nIf you want to contribute to WebQuake, feel free to fork the project and make a pull request. Pull requests and issues will be reviewed by the developer.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTriang3l%2FWebQuake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTriang3l%2FWebQuake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTriang3l%2FWebQuake/lists"}