{"id":13635003,"url":"https://github.com/SoftbearStudios/mk48","last_synced_at":"2025-04-19T03:34:18.849Z","repository":{"id":48156504,"uuid":"365625482","full_name":"SoftbearStudios/mk48","owner":"SoftbearStudios","description":"Mk48.io ship combat game","archived":false,"fork":false,"pushed_at":"2024-08-01T17:15:52.000Z","size":309111,"stargazers_count":336,"open_issues_count":86,"forks_count":58,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-11-08T14:14:23.469Z","etag":null,"topics":["boat","browser-game","combat","game","game-server","multiplayer","rust","rust-lang","ship","web-game","webassembly","webgl","webgl-game","yew","yew-framework"],"latest_commit_sha":null,"homepage":"https://mk48.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoftbearStudios.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":["finnbear"]}},"created_at":"2021-05-08T22:51:27.000Z","updated_at":"2024-11-06T20:35:54.000Z","dependencies_parsed_at":"2024-01-30T02:59:31.555Z","dependency_job_id":null,"html_url":"https://github.com/SoftbearStudios/mk48","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftbearStudios%2Fmk48","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftbearStudios%2Fmk48/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftbearStudios%2Fmk48/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftbearStudios%2Fmk48/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoftbearStudios","download_url":"https://codeload.github.com/SoftbearStudios/mk48/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223696413,"owners_count":17187630,"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":["boat","browser-game","combat","game","game-server","multiplayer","rust","rust-lang","ship","web-game","webassembly","webgl","webgl-game","yew","yew-framework"],"created_at":"2024-08-02T00:00:39.059Z","updated_at":"2024-11-09T05:30:18.403Z","avatar_url":"https://github.com/SoftbearStudios.png","language":"Rust","readme":"# Mk48.io Game\n\n[![Build](https://github.com/SoftbearStudios/mk48/actions/workflows/build.yml/badge.svg)](https://github.com/SoftbearStudios/mk48/actions/workflows/build.yml)\n\u003ca href='https://discord.gg/YMheuFQWTX'\u003e\n  \u003cimg src='https://img.shields.io/badge/Mk48.io-%23announcements-blue.svg' alt='Mk48.io Discord' /\u003e\n\u003c/a\u003e\n\n![Logo](/client/logo-712.png)\n\n[Mk48.io](https://mk48.io) is an online multiplayer naval combat game, in which you take command of a ship and sail your way to victory. Watch out for torpedoes!\n\n- [Ship Suggestions](https://github.com/SoftbearStudios/mk48/discussions/132)\n\n## Building\n\n### Tools\n\n0. Install `rustup` ([see instructions here](https://rustup.rs/))\n1. Install Rust Nightly (`rustup override set nightly-2022-08-14`)\n2. Add WebAssembly target (`rustup target add wasm32-unknown-unknown`)\n3. Install `trunk` (`cargo install --locked trunk`, install `gcc` first if it complains about missing `cc`)\n4. Optionally, install the `make` command\n\nYou may use any version of Rust that works, but only `nightly-2022-08-14` is known\nto be compatible.\n\n### Client\n\n0. Enter `/client`\n1. `make` or, equivalently, `trunk build --release`\n2. Deploy the server to host the client\n\n### Server\n\n0. Enter `/server`\n1. `make` to build and run a test server\n2. Navigate to `localhost:8081` (or whatever port is printed in the console)\n\n## Developing\n\nIf you follow the *Building* steps, you have a fully functioning game (could be used to host a private server). If your goal\nis to modify the game, you may want to read more :)\n\n### Entity data\n\nEntities (ships, weapons, aircraft, collectibles, obstacles, decoys, etc.) are defined at the bottom of\n`common/src/entity/_type.rs`.\n\n### Entity textures\n\nEach entity type must be accompanied by a texture of the same name in the spritesheet, which comes with the\nrepository. If entity textures need to be changed, see instructions in the `sprite_sheet_packer` directory.\n\n### Engine\n\nBoth client and server rely on our custom game engine (which is present in the `engine` directory).\n\n#### Admin interface (optional)\nOne notable feature of the engine is an (optional) admin interface. To build it:\n\n0. Install NodeJS 14 or higher ([here](https://nodejs.org/en/download/))\n1. Enter `/engine/js`\n2. `make`\n3. Deploy the server to host the admin interface\n4. Go to `localhost:8081/admin/`\n5. Paste the contents of `engine/game_server/src/auth.txt`, generated randomly by a build script, into the alert dialog\n\n### Macros\n\nMany macros are utilized by the codebase. Mk48-specific macros can be found in the `macros` directory,\nand game engine macros can be found in the `engine/engine_macros` directory. A few notable macros are:\n- Mk48 entity loader (generates `EntityData` for all entity types, used by both client and server)\n- Game engine audio loader (generates `Audio` enum for client, with a variant per sound)\n- Game engine settings (generates Javascript bindings for settings structs)\n- Game engine renderer layer (for composable rendering layers)\n\n## Contributing\nSee [Contributing](https://github.com/SoftbearStudios/mk48/wiki/Contributing) Wiki page.\n\n## Trademark\n\nMk48.io is a trademark of Softbear, Inc.\n","funding_links":["https://github.com/sponsors/finnbear"],"categories":["Applications","应用程序 Applications"],"sub_categories":["Games","游戏 Games"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSoftbearStudios%2Fmk48","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSoftbearStudios%2Fmk48","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSoftbearStudios%2Fmk48/lists"}