{"id":19453256,"url":"https://github.com/splurf/blazed-demo","last_synced_at":"2025-02-25T10:19:40.226Z","repository":{"id":262035529,"uuid":"886044889","full_name":"splurf/blazed-demo","owner":"splurf","description":"Client/Server multiplayer rendering.","archived":false,"fork":false,"pushed_at":"2025-01-16T23:29:03.000Z","size":48,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-17T00:24:42.636Z","etag":null,"topics":["client-server","concurrent-programming","multiplayer","opengl","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/splurf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"publiccode":null,"codemeta":null}},"created_at":"2024-11-10T03:23:27.000Z","updated_at":"2025-01-16T23:25:10.000Z","dependencies_parsed_at":"2024-11-10T04:22:00.638Z","dependency_job_id":"4ef4ae1b-e91b-494a-be5a-22372db7cbfe","html_url":"https://github.com/splurf/blazed-demo","commit_stats":null,"previous_names":["splurf/blazed-demo"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splurf%2Fblazed-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splurf%2Fblazed-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splurf%2Fblazed-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/splurf%2Fblazed-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/splurf","download_url":"https://codeload.github.com/splurf/blazed-demo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240645352,"owners_count":19834403,"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":["client-server","concurrent-programming","multiplayer","opengl","rust"],"created_at":"2024-11-10T17:03:11.607Z","updated_at":"2025-02-25T10:19:40.201Z","avatar_url":"https://github.com/splurf.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blazed-demo\n\nA client-server 3D renderer featuring real-time player movement and view synchronization within a dynamic n-tick rate system. Built with [Rust](https://www.rust-lang.org/) using [OpenGL](https://crates.io/crates/glow) and [SDL2](https://crates.io/crates/sdl2).\n\n## Features\n- n-tick rate server (default: 128)\n- multiplayer (capacity: $\\infty$)\n- basic lighting (ambient + diffuse + specular)\n- back-face culling\n\n## Build\nRetrieve the repository:\n```bash\ngit clone https://github.com/splurf/blazed-demo\n```\n\n## Running the Client\nBefore attempting to compile the client, you will need to configure [SDL2](https://github.com/Rust-SDL2/rust-sdl2?tab=readme-ov-file#windows-msvc). Afterwards, you should have the library files placed into your toolchain and the `.dll` file at `client\\SDL2.dll` in this project's directory.\n```bash\ncargo r --release --manifest-path client\\Cargo.toml\n```\n\n## Running the Server\n```bash\ncargo r --release --manifest-path server\\Cargo.toml\n```\n\n## Additional Usage\n**Client**\n```rs\nUsage: client.exe [OPTIONS]\n\nOptions:\n      --fps \u003cFPS\u003e                          Specify the FPS [default: 60]\n      --offline                            Do not attempt to connect to server\n      --remote-tcp-addr \u003cREMOTE_TCP_ADDR\u003e  Remote TCP IP address [default: 127.0.0.1:54269]\n      --local-udp-addr \u003cLOCAL_UDP_ADDR\u003e    Local UDP IP address (optional)\n      --remote-udp-addr \u003cREMOTE_UDP_ADDR\u003e  Remote UDP IP address [default: 127.0.0.1:54277]\n  -h, --help                               Print help\n```\n\n**Server**\n```rs\nUsage: server.exe [OPTIONS]\n\nOptions:\n  -t, --tcp-addr \u003cTCP_ADDR\u003e  Local TCP IP address [default: 127.0.0.1:54269]\n  -u, --udp-addr \u003cUDP_ADDR\u003e  Local UDP IP address [default: 127.0.0.1:54277]\n      --tps \u003cTPS\u003e            Server ticks/sec [default: 128]\n  -h, --help                 Print help\n```\n\n## Todo\n- Improve documentation (severely).\n- Fix server implementation\n  - The server tends to fall apart with 3+ connections.\n- Reduce CPU usage moving or looking around.\n- Implement client-side server interpolation.\n- Fix event-handling between mouse/keyboard.\n  - Scrollwheel events (zooming in/out) get mitigated while looking around.\n- Implement culling techniques (frustrum \u0026 occlusion)\n- Implement instanced-based rendering.\n- Implement [AABB](https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_collision_detection)-based collision. Maybe try a 3D grid-like partition.\n- Optimized method of storing and sorting opaque/transparent objects.\n- so much more.. taking a break for awhile.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplurf%2Fblazed-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsplurf%2Fblazed-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsplurf%2Fblazed-demo/lists"}