Godot SDK

General Notes

This SDK will function for Godot 3.x. It will not function for the upcoming Godot 4.0. Adding that functionality will come later.

Milestone One: Research

Goal

Determine how we will build the SDK.
The options I am aware of right now:

  1. Pure C# libraries, as Godot supports C# out of the box.

  2. Use GDNative to load in different precompiled libraries for each platform.

If other options present themselves during the research phase, I will explore those as well.

Questions to Answer

  1. Is there a C# library that I can use to handle the serialization and the signing of transactions using ECIES?

  2. If I can't find a solution using C#, what platforms do we want this library to function on? This will determine the libraries I try to find to link with GDNative.

  3. How are different libraries compiled to function on the different platforms: NDK for Android, G++/clang for desktop, etc.

  4. Determine if it would be better for GDNative to be a wrapper for the SDKs that are currently available: Typescript SDK for HTML5, Swift SDK for iOS, Kotlin for Android.

Deliverables

A clear report on the route that I will take in the implementation of this SDK:

  1. Whether that be pure C#, or GDNative.

  2. The libraries that I will use in either case, along with short descriptions of why I have chosen those libraries.

  3. Which endpoints I will fully implement within the SDK. I would like to limit the scope to those endpoints that can be actually using in a game, especially if my work must be duplicated to get implement the SDK on different platforms.

  4. A test implementation of the encryption for FIO request and OBT data.

I will come out of this stage knowing which libraries will work to encrypt the FIO request and OBT data using DH with the ECIES standard. This means that I will have to implement at least a test version of the Push Transaction API endpoint for this stage.
If there are other transactions that require complex cryptographic signing that I missed in my overview of the API, please let me know.

Notes

If we want to focus on HTML5 games, I can create a wrapper around the FIO SDK that exists already. This would probably be the simplest method to get an SDK for Godot, however the SDK would be limited to just HTML5. I personally feel like we should aim to have this SDK supported on the following platforms: iOS, Android (Including the Quest 1 and 2), Desktop (Windows and MacOS), and the web through HTML5.

I also think that we could eventually get this work integrated into the Godot Core so that it's just a part of the game engine itself. The reason I say this is because I have seen it done with things like the XR implementation for Godot, and I think the community would find easy integration into crypto a valuable tool. Some of my research will go towards understanding what is necessary for that to happen, as that will shape the route we go in.

Milestone Two: Implementation

Deliverable

Build out the SDK for Godot using the roadmap provided by Milestone One.

Notes

With most of the heavy lifting already done for the more complex endpoints during Milestone One, my hope is that building out the API endpoints will come quickly.

Milestone Three: Make a Game!

Deliverable

A couple of games have been proposed. Right now I am leaning toward expanding my game, Tankii, into having NFTs that you can purchase using FIO requests. This would function almost exactly like the ecommerce solutions.

I am open to other ideas, but I would like to stay away from a game centered around FIO requests. I feel like if the whole game is FIO requests, those begin to stack up and the could start costing quite a bit. It's not sustainable from my perspective, but I'm open to being proven wrong.