{"id":14961659,"url":"https://github.com/octoocto/m8gd","last_synced_at":"2025-12-25T01:24:09.122Z","repository":{"id":216370267,"uuid":"741156933","full_name":"octoocto/m8gd","owner":"octoocto","description":"An M8 Tracker headless client, made in Godot 4","archived":false,"fork":false,"pushed_at":"2025-08-14T22:06:23.000Z","size":145684,"stargazers_count":31,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-14T22:23:13.966Z","etag":null,"topics":["gdextension","godot-addon","godot-engine","godot-game-engine","godot4","m8","m8-tracker"],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/octoocto.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,"zenodo":null}},"created_at":"2024-01-09T20:16:28.000Z","updated_at":"2025-08-14T22:06:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"90b3b447-d5fe-4cbb-b6e8-210cd57c8ba3","html_url":"https://github.com/octoocto/m8gd","commit_stats":{"total_commits":157,"total_committers":2,"mean_commits":78.5,"dds":0.2993630573248408,"last_synced_commit":"8f2e92177d94a15570772c30f5ba7b67fabfa11c"},"previous_names":["bakana808/m8-gd","octoocto/m8gd"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/octoocto/m8gd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoocto%2Fm8gd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoocto%2Fm8gd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoocto%2Fm8gd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoocto%2Fm8gd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octoocto","download_url":"https://codeload.github.com/octoocto/m8gd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoocto%2Fm8gd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280878370,"owners_count":26406641,"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","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["gdextension","godot-addon","godot-engine","godot-game-engine","godot4","m8","m8-tracker"],"created_at":"2024-09-24T13:26:04.378Z","updated_at":"2025-10-24T22:30:47.519Z","avatar_url":"https://github.com/octoocto.png","language":"GDScript","funding_links":[],"categories":["Headless clients"],"sub_categories":[],"readme":"\n# m8gd: M8 Headless Display and Visualizer\n\n## Description\n\nm8gd is a M8 headless client that is capable of rendering the M8's display in a 3D environment using the Godot Engine.\n\nThis repository consists of the C++ library and GDExtension `libm8gd` that acts as a headless M8 client library, and the Godot project `m8gd` as the frontend.\n\n## Building from source\n\n### Requirements\n\n- Git\n- GCC (if on Windows/Linux) or Clang (if on macOS)\n- Homebrew or MacPorts (if on macOS)\n- Python 3.6+\n- Scons (`python -m pip install scons`)\n- pkg-config\n- libserialport\n- [Godot 4.2.2-stable](https://godotengine.org/download/archive/4.2.2-stable/)\n- a desktop environment\n\nIf on Windows, a MSYS2/MinGW64 installation is recommended when compiling.\n\n### Installing requirements\n\n#### Windows (via MinGW64)\n\n```bash\n$ pacman -S git pkg-conf python python-pip base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-libserialport\n$ python -m pip install scons\n```\n\n#### Linux (Arch Linux)\n\n```bash\n$ sudo pacman -S git pkg-conf python python-pip base-devel gcc libserialport\n$ python -m pip install scons\n```\n\n#### MacOS\n\n```bash\n# with Homebrew\n$ brew install scons\n$ brew install libserialport\n\n# with MacPorts\n$ macports install scons\n$ macports install libserialport\n```\n\n### Building\n\n#### 1. Clone and enter this repo\n```bash\n$ git clone https://github.com/octoocto/m8gd\n$ cd m8gd\n$ git submodule update --init\n```\n\n#### 2. Compile the GDExtension libm8gd\n```bash\n$ scons target=template_release\n\n# or, specify a platform (\"windows\", \"linux\", or \"macos\")\n$ scons target=template_release platform=\u003cplatform\u003e\n```\n##### Compiling for Windows (via MinGW64)\n```bash\n# specifying platform is required here\n$ scons target=template_release platform=windows\n```\n\n__If you want to be able to edit the project in the Godot Editor as well__,\ncompiling the debug version of libm8gd is required:\n```bash\n$ scons target=template_debug platform=\u003cplatform\u003e\n```\n\n#### 3. Download and Install the export templates for Godot\n\n##### A. Download and Installing with the Godot Editor UI\n\nRun `godot` to open the Project Manager UI.\n\nClick the \"Import\" button at the top-left of the window, select the project file located in `project/project.godot`, then click \"Open\" to open the editor.\n\nIn the editor, click \"Editor\" at the top of the window then \"Manage Export Templates...\" to open the Export Template Manager.\n\nClick \"Download and Install\" to install the export templates. After it is finished, you can close Export Template Manager and the editor.\n\n##### B. Download and Installing manually\n\nDownload the export templates from [here](https://github.com/godotengine/godot-builds/releases/download/4.2.2-stable/Godot_v4.2.2-stable_export_templates.tpz). This is a `.tpz` file which is just a renamed `.zip` file.\n\nExtract the `.tpz` file to get a folder named `templates`. This folder should be renamed to `4.2.2.stable`.\n\nMove the `4.2.2.stable` folder into one of these paths depending on platform:\n- Windows: `%APPDATA%\\Godot\\export_templates\\`\n- Linux: `~/.local/share/godot/export_templates/`\n- MacOS: `~/Library/Application Support/Godot/export_templates/`\n\n#### 4. Export the Godot project m8gd\n\nAssuming your Godot editor is named `godot`, run one of these commands to export the app for the desired platform.\n\n```sh\n# export to windows\n$ godot --headless --path project --export-release windows ../build/m8gd_windows.zip\n\n# export to linux\n$ godot --headless --path project --export-release linux ../build/m8gd_linux.zip\n\n# export to macos\n$ godot --headless --path project --export-release macos ../build/m8gd_macos.zip\n```\n\nNote: You may see some error messages during the export. This is normal, and the app will still export.\n(The errors are due to not having the debug version of libgdm8, which we do not need to compile here.)\n\nA .zip file containing the app should be created in the `build` folder.\n\n## Troubleshooting\n\n### Audio issues\n\nIn order to monitor audio, m8gd will attempt to find the audio input device associated with the M8 and listen to it.\n\nIf the device is disabled, or m8gd doesn't have permissions to access the M8's audio input device, then it will fail to connect.\nSee more details [here](https://docs.godotengine.org/en/4.2/classes/class_projectsettings.html#class-projectsettings-property-audio-driver-enable-input).\n\nm8gd will also detect if the audio device is connected but not playing (this may happen when repeatedly disconnecting/connecting the M8) and automatically attempt to reconnect the audio device. This can happen around 10 seconds of the audio device not playing.\n\n### Running on macOS\n\nAt this time, the macOS build included in the releases does not have an official Apple Developer code signature and will likely not start as-is. Please read [this guide](https://docs.godotengine.org/en/stable/tutorials/export/running_on_macos.html#app-is-signed-including-ad-hoc-signatures-but-not-notarized) from the Godot docs on how to allow m8gd to run.\n\nThe macOS build is also compiled specifically for x86_64 CPUs. If you are on a macOS system with the M1 chip or newer, enabling \"Open using Rosetta\" in the app's info window is also needed for it to start.\n\n## Development\n\nA debug build of libm8gd is required to open this project in the Godot editor.\nPlease follow the build instructions up to Step 2 to build this from source, or use a precompiled library from the latest release if available, placed in `project/addons/libm8gd/`.\n\nThis project has been tested to work on [Godot 4.2.2-stable](https://godotengine.org/download/archive/4.2.2-stable/).\n\n`libm8gd` source files are located in `src/`.\n\n`m8gd` project and source files are located in `project/`.\n\n## Screenshots\n\n![screenshot](screenshot.png)\n\n![screenshot2](screenshot2.png)\n\n## Credits\n\n- Thanks to laamaa for creating [m8c](https://github.com/laamaa/m8c)! This was used as a reference when creating `libm8gd`.\n- m8stealth57 and m8stealth89 fonts by Trash80. These fonts were converted to bitmaps.\n- [M8 Tracker 3D Model](https://sketchfab.com/3d-models/dirtywave-m8-tracker-05ba530f902e4474b0e01ae2750eec3c) by David Junghanns\n- [Prototype Textures](https://kenney-assets.itch.io/prototype-textures) by Kenney\n- [Succulent plants model](https://sketchfab.com/3d-models/succulent-plants-ea9a2df2a598410f9f63ba9380795f92) by uniko\n- [VHS Post Processing](https://godotshaders.com/shader/vhs-post-processing/) shader by LazarusOverlook\n- [VHS with wiggle](https://godotshaders.com/shader/vhs/) shader by cyanone\n- [CRT Shader with realistic blurring](https://godotshaders.com/shader/crt-shader-with-realistic-blurring/) shader by Ahopness\n- [VHS and CRT monitor effect](godotshaders.com/shader/VHS-and-CRT-monitor-effect) shader by pend00\n- [Asset Drawer](https://github.com/newjoker6/Asset-Drawer) plugin by newjoker6. This is included in this repo when using the editor.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctoocto%2Fm8gd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctoocto%2Fm8gd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctoocto%2Fm8gd/lists"}