{"id":14961488,"url":"https://github.com/godot-go/godot-go","last_synced_at":"2025-04-04T09:08:00.995Z","repository":{"id":56417922,"uuid":"283048819","full_name":"godot-go/godot-go","owner":"godot-go","description":"Go bindings for Godot 4.3 GDExtension API","archived":false,"fork":false,"pushed_at":"2024-08-29T13:42:12.000Z","size":19031,"stargazers_count":599,"open_issues_count":15,"forks_count":27,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-03-28T08:05:38.162Z","etag":null,"topics":["cgo","cgo-bindings","game-development","gamedev","go","godot","godot-engine","godot-gdextension","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","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/godot-go.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":"2020-07-28T00:09:30.000Z","updated_at":"2025-03-27T20:47:54.000Z","dependencies_parsed_at":"2023-12-10T07:26:06.044Z","dependency_job_id":"d8970517-942a-42a9-87df-5820c0348b9a","html_url":"https://github.com/godot-go/godot-go","commit_stats":{"total_commits":56,"total_committers":2,"mean_commits":28.0,"dds":"0.017857142857142905","last_synced_commit":"a19d68a27885779fa387a9de5cfa92a95a5e54cd"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godot-go%2Fgodot-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godot-go%2Fgodot-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godot-go%2Fgodot-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godot-go%2Fgodot-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/godot-go","download_url":"https://codeload.github.com/godot-go/godot-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149501,"owners_count":20891954,"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":["cgo","cgo-bindings","game-development","gamedev","go","godot","godot-engine","godot-gdextension","golang"],"created_at":"2024-09-24T13:25:21.546Z","updated_at":"2025-04-04T09:08:00.975Z","avatar_url":"https://github.com/godot-go.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"[![godot-go CI on Linux](https://github.com/godot-go/godot-go/actions/workflows/ci_linux.yaml/badge.svg?branch=main)](https://github.com/godot-go/godot-go/actions/workflows/ci_linux.yaml)\n[![godot-go CI on Windows](https://github.com/godot-go/godot-go/actions/workflows/ci_windows.yaml/badge.svg?branch=main)](https://github.com/godot-go/godot-go/actions/workflows/ci_windows.yaml)\n\n---\n\n# godot-go: Go bindings for Godot 4.3\n\n[Go](https://golang.org/) bindings for the [Godot Game Engine](https://github.com/godotengine/godot) cross-platform game engine. godot-go integrates into Godot through the Godot GDExtension API through cgo.\n\nThe project is currently under heavy development. The API should be considered __EXPERIMENTAL__ and is subject to change. The API is expected to become more stable as we get closer to a 1.0 release.\n\n## Current State of the Project\n\nHere are some high level bullet points:\n* You must have a minimum of Godot 4.3.\n* The tests confirm basic functionality.\n* The bindings are more than likely leaking memory.\n* Not all variant types have been tested.\n* Go to [godot-go-demo-projects](https://github.com/godot-go/godot-go-demo-projects) to look at demo projects running a mix of godot-go and GDScript classes.\n\n## Getting Started\n\nRequirements:\n* clang-format\n* gcc\n* go 1.21.x\n* goimport\n\n### Building Godot-Go\n\nIn order for godot-go to work correctly, you must make sure the godot_headers are in sync between your godot binary and godot-go. Development is built and tested off of [Godot 4.3](https://github.com/godotengine/godot-builds/releases/tag/4.3-stable).\n\n    # Install go dependencies\n    make installdeps\n\n    # exports the latest gdextension_interface.h and extension_api.json from the godot binary\n    GODOT=/some_path/bin/godot make update_godot_headers_from_binary\n\n    # generates code for wrapping gdextension_interface.h and extension_api.json\n    make generate\n\n    # build godot-go\n    make build\n\n### Test\n\nOnce the project successfully builds, run the following commands to generate cached files for the test demo project for the first time (don't be concerned if it fails):\n\n    make ci_gen_test_project_files\n\nFrom here on out, you will just need to run the following command to iteratively test:\n\n    make test\n\nThis will run the demo project in the test directory.\n\nThe expected output can be found in the CI logs.\n\n\n\n## Documentation\n\nA living doc of godot-go is maintained at [docs/overview.md](docs/overview.md).\n\n## Contact\n\nI'm happy to help out anyone interested in the project. Please leave a message in the [Discussion boards](https://github.com/godot-go/godot-go/discussions) or you can add me (surgical#3758) as a friend on the [Godot Engine Discord](https://discord.gg/qZHMsDg) servers. I primarily frequent the **gdnative-dev** room.\n\n## References\n\n* Go 101 article on [Type-Unsafe Pointers](https://go101.org/article/unsafe.html)\n* Cheatsheet for [cgo data type conversion](https://gist.github.com/zchee/b9c99695463d8902cd33)\n* Cross compilation with cgo with [xgo](https://github.com/karalabe/xgo)\n* vscode-go patch to [support cgo](https://github.com/golang/go/issues/35721#issuecomment-568543991)\n* Check [unsafe pointer conversion](https://blog.gopheracademy.com/advent-2019/safe-use-of-unsafe-pointer/)\n* Loading nativescript libraries with a godot server build requires manual modification to the library [.tres](https://godotengine.org/qa/63890/how-to-open-gdnative-projects-with-headless-server-godot).\n* Working with [GDB Go extension](https://nanxiao.me/en/the-tips-of-using-gdb-to-debug-golang-program/)\n\n## Credit\n\n* Inspiration for the project was taken from ShadowApex's earlier project: [godot-go](https://github.com/ShadowApex/godot-go)\n* Inspiration also from [godot-cpp](https://github.com/godotengine/godot-cpp/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodot-go%2Fgodot-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgodot-go%2Fgodot-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodot-go%2Fgodot-go/lists"}