gdnative-go

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2021 License: Apache-2.0

README

alt text

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

  1. Bind Golang ecosystem applications to GDScript (like making BBolt or CockroachDB available natively to your GDScript code)
  2. Delegate CPU bound calculations to the Golang runtime
  3. 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.

Directories

Path Synopsis
cmd
generate/gdnative
Package gdnative is responsible for parsing and generating binding code for Go.
Package gdnative is responsible for parsing and generating binding code for Go.
generate/methods
Package methods is a package that parses the GDNative headers for type definitions of methods
Package methods is a package that parses the GDNative headers for type definitions of methods
generate/types
Package types is responsible for parsing the Godot headers for type definitions and generating Go wrappers around that structure.
Package types is responsible for parsing the Godot headers for type definitions and generating Go wrappers around that structure.
example
Package gdnative provides a wrapper around the Godot GDNative API.
Package gdnative provides a wrapper around the Godot GDNative API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL