godotengine / godotengine/godot-docs

Create a complete and concise documentation for GDExtension

Open
#5,618 51 comments 84 reactions 0 assignees View on GitHub
area:manual enhancement topic:gdextension
Dominant language
reStructuredText
Stars
5.7k
Forks
3.8k
Avg merge
1d 20h
Merged PRs (30d)
25

Description

### Describe the project you are working on

A G.O.A.P Implementation for Godotengine via GDExtension

### Describe the problem or limitation you are having in your project

Me and a lot of users has little to none knowledge about GDNative and C++, now that GDNative is "deprecated" in 4.x we have even less knowledge about such powerful tool, some of them:

* Classes we have access to
* Classes which are not exposed to API but we can use in C++ side

### Describe the feature / enhancement and how it helps to overcome the problem or limitation

The documentation will have a "Zero to Hero" subject, where a user with basic knowledge of C++ will learn:

* Getting the necessary files to work on
* What is each file in there does
* Generate the bindings (for each platform, and cross-platform)
* Creating the First Extension
* Differences between GDNative and GDExtension
- Seems after recent changes to GDExtension, you dont need to use `generate_bindings` anymore, because everytime you recompile example project it compile Godot classes too, but this need to be confirmed!
- What you couldnt do before and what you can do now.
- API differences
* `Ref<>` and `*` how and when to use them
* Similarities with the core source code
- How it works in core, and how to reproduce in GDExtension
- How to deal with virtuals (overriding a C++ function via GDScript, like `_ready()`)
* About Classes from GodotEngine core we can use in C++ but are not exposed in the API
* Creating a simple game
* Creating a simple multiplayer (server/client) and (P2P)
* Creating an editor plugin
* Overriding/Extending Engine features (if possible)
* Compiling your extensions
- Windows
- Linux
- Mac
- Android (show how to compile in each platform above)
- Web (show how to compile in each platform above)
* Using GDExtension compiled stuff in C#
* Advanced Stuff
- Optimization
- Debugging
- File Structure
- Add new stuff to GDScript? (like a new var type, or add a struct system via GDExtension, if possible)
- Many More
- Using external graphical/audio APIs (e.g IMGUI), physics libraries....
* C Language
- Example usage of GDExtension in the C language
- How Binding GDExtension to another language works (Go,rust,....)

I may have forgot some stuff, so if you're reading this, please comment below suggestions

### Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

A Complete documentation in the docs page

### If this enhancement will not be used often, can it be worked around with a few lines of script?

Nope, its a documentation.

### Is there a reason why this should be core and not an add-on in the asset library?

this cant be addon, since is GDExtension.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.