You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: src/content/docs/documentation/Overview/about.md
+5-5
Original file line number
Diff line number
Diff line change
@@ -3,10 +3,10 @@ title: About
3
3
description: About
4
4
---
5
5
6
-
## What is Grow Graphics GD?
6
+
## What is Graphics GD?
7
7
#### Community Supported Go Bindings for the Godot Game Engine
8
8
9
-
I think it's a bit of an evolution from the branding/terminology of [seed](https://github.com/qlova/seed), a project I worked on in the past for building PWA 'apps' in Go. I'm not a big fan of Go modules having 'Go' in their name, ie. the thing they are based on with a 'go' prefix or suffix. I think it's important that projects develop their own independent identity.
9
+
I think it's a bit of an evolution from the branding/terminology of [seed](https://github.com/qlova/seed), a project I worked on in the past for building PWA 'apps' in Go. I'm not a big fan of Go modules having 'Go' in their name, ie. the thing they are based on with a 'go' prefix or suffix. I think it's important that projects develop their own independent identity.
10
10
11
11
12
12
I think the plant metaphors there are meant to convey 'a more organic holistic yet incremental development and design practice.
@@ -15,7 +15,7 @@ I think the plant metaphors there are meant to convey 'a more organic holistic y
15
15
It's not enough for Go + Godot to just wrap Godot and call it a day, the project needs to be a synthesis in my opinion, with a holistic design that considers both Go & Godot together in order to be useful. You cannot expect Go developers to understand a whole bunch of technical things about Godot just so they can build a graphical application. In the same fashion, Godot developers primarily using GDScript, should be able to approach this project and it should be possible for them to write something for their Godot project in Go (without worrying too much about how to interact with Godot in a memory safe way).
16
16
17
17
18
-
I understand `grow.graphics/gd` is not there yet, but the vision is certainly to be more approachable. Having a documentation website for this will go a long way!
18
+
I understand `graphics.gd` is not there yet, but the vision is certainly to be more approachable. Having a documentation website for this will go a long way!
19
19
20
20
21
21
So that's some context, I think there could be room for supporting/encouraging/developing more Go-oriented graphics modules within the grow.graphics umbrella, touching some lower level areas in a more approachable way, like OpenGL for example (which I am familiar with working in with Go), maybe even OpenXR and/or Vulkan. I wanted to target Godot in particular, as it is the most complete Open-Source solution out there, that has good cross-platform support and all the bells and whistles you need for almost any purpose.
@@ -27,5 +27,5 @@ I think Go is a very clean language, with excellent readability, not as complica
27
27
I know there are other projects out there for 2D graphics like Ebiten, UI/UX projects like Gio, Fyne, there isn't a whole lot for 3D (although shoutout to G3N here for their efforts) so building on top of Godot makes a lot of sense, as it has a very large growing ecosystem and excellent support for 3D including animations and modern rendering features.
It's feasible to write high performance code using this module, keep to Godot types where possible and avoid escaping memory to the heap in frequently called functions.
110
+
It's feasible to write high performance code using this module, keep to Engine types where possible and avoid
111
+
memory to the heap in frequently called functions. `Advanced` instances are available for each class which allow
112
+
more fine-grained control over memory allocation.
111
113
112
-
## Zero Allocations
113
-
Benchmarking shows method calls from Go -> Godot do not allocate in practice.
114
+
###Zero Allocations
115
+
Benchmarking shows method calls from Go -> Engine do not allocate in practice.
114
116
115
-
Allocations are currently unavoidable for GDScript -> Go calls (but not
116
-
for class virtual method overrides such as `Ready` or `Process`, which
117
+
Allocations are currently unavoidable for Script -> Go calls (but not
118
+
for class virtual method overrides such as `Ready` or `Process`, which
117
119
should be allocation free).
118
120
119
-
We've got some ideas to reduce allocations for GDScript -> Go calls, when
121
+
We've got some ideas to reduce allocations for Script -> Go calls, when
120
122
arguments fit entirely within registers. TBA.
121
123
122
124
## Examples
123
-
124
-
Run `make` in the example/src directory or manually build a C-shared library:
125
-
126
-
```sh
127
-
cd example/src
128
-
make # go build -o ./bin/example.so -buildmode=c-shared
129
-
```
130
-
131
-
**NOTE:** the first time you build a project, it will take a little while to compile.
132
-
After this, subsequent builds will be quite a bit faster!
133
-
134
-
Now open the example project in Godot from a terminal and you will be able to
135
-
see Go printing things to the console.
136
-
137
-
There is also a [pong](https://github.com/grow-graphics/eg/blob/master/2d/pong/pong.go)
138
-
example in the [examples](https://github.com/grow-graphics/eg) repo.
125
+
There are a number of examples in the [examples](https://github.com/grow-graphics/eg)
126
+
repo. All examples are designed to be run with `gd run` without any additional setup.
139
127
140
128
## Testing
141
129
To run the go tests for this module `cd internal && gd test`.
142
130
131
+
## Supported Platforms
132
+
133
+
* Windows
134
+
* Linux (including Steam Deck)
135
+
* Mac (including Apple Silicon)
136
+
* Android (including MetaQuest)
137
+
* IOS (should work, untested)
138
+
* Web (experimental) `GOOS=js GOARCH=wasm gd run`
139
+
143
140
## Known Limitations
144
141
145
-
* No support for indexed properties
146
-
* No support for Godot class functions with varargs.
147
-
* No support for script extensions.
148
-
* 64bit support only.
149
-
* Not tested on Windows.
150
-
* No planned support for Web export or proprietary consoles.
151
-
* Android/MetaQuest not working right now (support is planned).
142
+
* No support for calling classdb methods that accept a variable number of arguments.
143
+
* No support for Go 'scripts'.
144
+
* 64bit only.
145
+
* Web build needs work [read the discussion](https://github.com/grow-graphics/gd/discussions/69).
146
+
* No planned support for proprietary consoles.
152
147
153
148
## See Also
154
149
155
-
*[Our pure Go zero-dependencies port of Godot's Color Class](https://github.com/grow-graphics/uc)
156
-
*[Our pure Go zero-dependencies port of Godot's Math Variants](https://github.com/grow-graphics/xy)
157
150
*[godot-go](https://github.com/godot-go/godot-go) (Another project aiming to support Go + Godot integration)
158
151
159
152
## Licensing
160
-
This project is licensed under an MIT license (the same license as Godot), you can use
153
+
This project is licensed under an MIT license (the same license as Godot), you can use
161
154
it in any manner you can use the Godot engine. If you use this for a commercially successful
0 commit comments