GDNative bindings for Go
Golang bindings to the Godot GDNative API.
Intention
This project is a maintained and a smaller fork of godot-go
project, its aim is to make simpler the task of invoke Golang code from godot's
GDScript not to write Godot video games using the Golang language. If your are looking for a way to
write Godot games using Golang as development language you can take a look at
godot-go project that generates full set of binding for Godot
classes.
note: looks like godot-go is unmaintained at the moment
of writing this lines 2020-03-10
note: we are currently working into rewriting the old godot-go completely from scratch so at some point we will be offering a full set of Godot Golang wrappers as a separated library
Motivation
This project exists for three main reasons
- Bind Golang ecosystem applications to GDScript (like making BBolt or CockroachDB available natively to your GDScript code)
- Delegate CPU bound calculations to the Golang runtime
- Use Golang concurrency on NativeScript golang modules from GDScript
If what you are looking for is to write your Godot game in a more performant than GDScript language I
recommend you to use the godot-mono version, if C# is not performant enough for you or you want to use a
concurrent native language to write your game code then take a look to gdnative-rust
project, it is actively maintained and in good health, you can also take a look to
godot-cpp Godot's C++ bindings.
Does that means I will never provide full set of bindings in this project?
Yes, that is exactly what it means, this project will only provide bindings for NativeScript
It is all lost?
No, I am currently working into generate full bindings to Godot full API in a separate project that
uses this one as a base interface between Go and Godot NativeScript. I believe both concepts are
divisible, some times one will want to bring that cool Go library into Godot while some others one
would like to code their whole project using Go, tie this two clearly different needs into the same
library just does not feels right to me
So is that new library available?
Not yet, will update this repository when its done
Special Thanks
I would like to give special thanks to the individuals and organizations that had made this project's
existence to be possible
- Juan Linietsky, Ariel Manzur and the amazing Godot team and Community for their fantastic work
- William Edwards (ShadowApex) for writing the original https://github.com/ShadowApex/godot-go library this is based on
- Rob Pike, Ken Thompson, Robert Griesemer and the whole Go Language team for creating this language
Attributions
This project is based on a previous work by William Edwards and big parts of its
code remains under its license (shown below)
The gdnative-go logo and godopher (godot + gopher) logos are based on the Godot image by
Andrea Calabró Licensed under the
CC-BY 3.0 license
The logos are also inspired in a vectorial gopher design by Takuya Ueda
Licensed under the CC-BY 3.0 license
Licenses
This project diverges from a previous work by William Edwards licensed under the MIT License, both
projects licenses are applicable and thus both of them are shown in this section
GDnative-Go License
Copyright © 2019 - 2020 Oscar Campos <oscar.campos@thepimpam.com>
Copyright © 2017 - William Edwards
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License
godot-go License (by ShadowApex)
MIT License
Copyright (c) 2017 William Edwards
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.