{"id":13341547,"url":"https://github.com/maxrdz/astron.libwasm","last_synced_at":"2026-05-18T01:01:35.037Z","repository":{"id":155651130,"uuid":"630763606","full_name":"maxrdz/astron.libwasm","owner":"maxrdz","description":"A free and open-source implementation of the Astron client protocol for C++ applications targeting Web Assembly.","archived":false,"fork":false,"pushed_at":"2023-06-19T22:25:00.000Z","size":639,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-08T07:53:02.333Z","etag":null,"topics":["astron","cpp","mmo","networking","object-oriented","wasm","web-assembly"],"latest_commit_sha":null,"homepage":"https://github.com/Astron/Astron","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxrdz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null}},"created_at":"2023-04-21T05:21:24.000Z","updated_at":"2023-06-16T23:04:53.000Z","dependencies_parsed_at":"2023-07-17T04:07:36.567Z","dependency_job_id":null,"html_url":"https://github.com/maxrdz/astron.libwasm","commit_stats":null,"previous_names":["maxrdz/astron.libwasm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maxrdz/astron.libwasm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrdz%2Fastron.libwasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrdz%2Fastron.libwasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrdz%2Fastron.libwasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrdz%2Fastron.libwasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxrdz","download_url":"https://codeload.github.com/maxrdz/astron.libwasm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxrdz%2Fastron.libwasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33161411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"ssl_error","status_checked_at":"2026-05-17T22:39:10.741Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["astron","cpp","mmo","networking","object-oriented","wasm","web-assembly"],"created_at":"2024-07-29T19:25:29.231Z","updated_at":"2026-05-18T01:01:30.026Z","avatar_url":"https://github.com/maxrdz.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"logo/astron.libwasm.png\" align=\"right\" width=\"50%\"/\u003e\n\nastron.libwasm\n==============\n\n![](https://img.shields.io/discord/1066973060357443644?color=blue\u0026label=Discord\u0026logo=discord\u0026logoColor=white) ![](https://img.shields.io/github/last-commit/Max-Rodriguez/astron.libwasm) ![](https://img.shields.io/github/license/Max-Rodriguez/astron.libwasm)\n\nAn open-source implementation of the Astron client  protocol for C++ applications targeting Web Assembly.\n\nThis implementation will only be targeting Web Assembly,\nas it is portable to any operating system and any\narchitecture that is supported by a Javascript engine. (Chrome v8, NodeJS)\n\nFor the internal (server-side) implementation of Astron, check out [astron.libts](https://github.com/Max-Rodriguez/astron.libts).\n\n# Building from Source\n\nThe following instructions assume that you're using a Linux based or Unix-like Operating System.\n\nBefore compiling the source code, you first need to generate the Makefile using CMake.\n**NOTE:** You need to run `emcmake` to run cmake so that it sets the various\nenvironment variables that are needed for CMake to generate for the em++ compiler.\n\n**It is required** that you have the Emscripten SDK installed in your system\nand added to your PATH in order to use the tools from the emsdk.\n\n**On Linux:** To configure \u0026 build for release, run the following commands:\n\n```bash\n$ emcmake cmake . -Bbuild-release -DCMAKE_BUILD_TYPE=Release\n$ cd build-release \u0026\u0026 make\n```\n\nCMake generates a Makefile by default. If you would like to use Ninja as \nyour generator, use the following shell command instead.\n\n```bash\n$ emcmake cmake . -GNinja -Bbuild-release -DCMAKE_BUILD_TYPE=Release\n$ cd build-release \u0026\u0026 ninja\n```\n\nastron.libwasm is always compiled as a static library, not Web Assembly. It is compiled with Emscripten\nso that your own application can be linked with this static library and target Web Assembly.\n\n# Using Panda3D (webgl-port) in examples\n\nI've built in the option to compile the example programs with the **WebGL** port of Panda3D.\nThis port of Panda can be viewed under the `webgl-port` branch of the Panda3D git repository.\n[Link to the webgl-port branch.](https://github.com/panda3d/panda3d/tree/webgl-port)\n\nThis port of Panda targets Web Assembly. Due to its restrictions on the browser,\nand current specification, Panda has to be built into static libraries.\nIt is then statically linked to the example program(s). You can view the\n[CMakeLists.txt](./CMakeLists.txt) file and how it links with Panda.\n\nOnce you have the static libraries built, copy the `.a` (or `.lib`) files\nover to the `example/` directory of this repository. Use the `-DUSE_PANDA=1` flag when compiling the examples.\nRead the CMakeLists.txt file for specific instructions on where to move the generated Panda headers.\n\nFor instructions on building Panda3D for WebGL with Emscripten, see\n[the building instructions](https://rdb.name/panda3d-webgl.md.html) written by rdb.\n\nFeel free to also check out my [detailed build guide at the Panda3D discourse](https://discourse.panda3d.org/t/guide-to-using-c-panda3d-for-webgl-using-emscripten/29400).\n\n# Troubleshooting\n\nWhen using astron.libwasm, all output is flushed to the JavaScript console. In most browsers, pressing the F12 key should open this console.\n\n**For astron.libwasm developers**, it is recommended that you compile with `-DCMAKE_BUILD_TYPE=Debug` as this disables\nall compiler / linker optimizations and compiles with Clang's undefined behavior \u0026 address sanitizers (UBSan \u0026 ASan) for catching bugs faster.\nThere is a considerable performance and size penalty to doing this; expect a larger static library!\n\n# Contributing\n\nBefore writing your first contribution, please make sure to read the [contributing guidelines](CONTRIBUTING.md).\n\n**For astron.libwasm developers:** To regenerate the parser / lexer in `src/file`,\nplease use the bash script `lexparse.sh` inside the directory.\n\n# Reporting Vulnerabilities\n\nPlease read the [security policy](SECURITY.md) document for more information on reporting software vulnerabilities.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxrdz%2Fastron.libwasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxrdz%2Fastron.libwasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxrdz%2Fastron.libwasm/lists"}