Skip to content

Create a complete and concise documentation for GDExtension #5618

Open
@nonunknown

Description

@nonunknown

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions