Skip to main content

Crossbow (formerly Creator)

  • Team Name: DodoRare, Inc.
  • Level: 2

Project Overview 📄

In the previous grant, we built a tool that can automate building rust game projects for Android and iOS and tested it on applications with base elements such as 2D image / 3D model rendering, music, touch events, networking (substrate communication), etc. Also, we made it engine agnostic, and the process itself of creating similar apps pretty straightforward. But there are plenty of things left to do to provide full support of features for more advanced games: like notifications, permissions, in-app purchases, better sounds and music support, Google Play/Apple ID authentication, AdMob, iOS Bitcode, Android Application Bundles, or AAB, etc. Most of these problems are not easy to solve, and many projects facing them are moving to more popular engines because you never know how much time it will take to add IAP or authentication to your project in pure rust. So our intention on this grant is to continue fixing and adding the most crucial components of games so that the whole rust community can use them in any rust project without any problems.

Overview

Crossbow - Cross-Platform Rust Toolkit for Games.

A goal of the crossbow project is to provide a complete infrastructure for game development in rust. In addition, the project simplifies the creation and packaging of crates for Android, iOS, and other platforms. Finally, we want to make most of our tools - engine agnostic to help rust game developers integrate them into their games, engines, and crates.

Plenty of Polkadot / Kusama / Substrate game projects want to develop their games in pure rust game engines, but as there's no well-tested and reliable software - they choose standard game engines. It's terrible for the Substrate ecosystem in several ways: 1. they could enhance the rust ecosystem; 2. generate more rust jobs that will potentially start own Polkadot projects in the future or contribute to the ecosystem itself; 3. miss an opportunity to integrate full or light Substrate node directly in-game for peer2peer synchronization and a lot of other exciting stuff.

Of course, there are already a bunch of promising game engine projects, but they almost all don't provide at least adequate support to simple tools like mobile permissions, game SDK, auth, achievements, etc. That's why we want to create a single game toolkit for the most popular platforms.

Maintenance list

⚠️ Note that we may move some libraries to separate repositories for more convenient maintenance in the future.

Team 👥

Team members

  • David Knyshenko, Blockchain/Full stack developer and Team Leader
  • Oleksii Knyshenko, Mobile/Backend developer
  • Kulmurzin Adil, Android developer
  • Daniil Anikin, Mobile/System developer
  • Rodrigo Oliveira, Game/Mobile developer

Contact

  • Registered Address: 651 N Broad St Suite 206, Middletown, DE 19709.
  • Registered Legal Entity: DodoRare, Inc.

Team's experience

  • Mobile Game Framework - Our first team Web3Foundation grant, mobile building tool. By our team.

  • Substrate Atom and VSCode plugins - Have contributed some code to Web3Foundation Grant for Substrate VSCode and Atom plugins while worked in outsource company. By enfipy.

  • Polkadot CosmosSDK Integration - Also, contributed to another Web3Foundation Grant while worked in another outsource company. Built some logic behind ABCI, pallet and substrate with tendermint. By enfipy.

Team Code Repos

GitHub accounts of all team members:

Team LinkedIn Profiles (if available)

Development Roadmap 🔩

Overview

  • Total Estimated Duration: 5.0 months
  • Full-time equivalent (FTE): 3.5
  • Total Costs: 40,000 USD

Milestone 1 — AAB and new engine support

  • Estimated Duration: 1 month
  • FTE: 3.5
  • Costs: 10,000 USD
NumberDeliverableSpecification
0a.LicenseApache 2.0 / GPLv3 / MIT / Unlicense
0b.DocumentationWe will provide both inline documentation of the code and a basic tutorial that explains how a user can create own game project with Macroquad and our toolkit, generate and sign AAB file.
0c.Testing GuideCore functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests.
0d.DockerWe will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone.
1.Add aapt2 tool wrapperAdd wrapper for aapt2 tool for AAB generation.
2.Add bundletool wrapperAdd wrapper for bundletool for generation AAB file.
3.Support AAB (needs deliverable#1 and deliverable#2)Add support of generation AAB file. Android App Bundle is a publishing format that includes all your app’s compiled code and resources.
4.Support Macroquad engineAdd support of Macroquad engine. We will change our crossbundle command-line tool to support Android building of Macroquad.
5.Enhance documentationWrite better code and wiki documentation.

Milestone 2 — Android Plugins and Cross-platform permissions

  • Estimated Duration: 2.0 month
  • FTE: 4.0
  • Costs: 15,000 USD
NumberDeliverableSpecification
0a.LicenseApache 2.0 / GPLv3 / MIT / Unlicense
0b.DocumentationWe will provide both inline documentation of the code and a basic tutorial that explains how to create own Android plugins and how to use cross-platform permissions. Also, update docs on how to install and start using toolkit.
0c.Testing GuideCore functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests.
0d.DockerWe will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone.
1.Support Android PluginsAdd support of Android plugins to help add additional functionality provided by the Android platform and ecosystem (like Ads, Auth, In-app purchases, etc.). Something similar to Godot Android plugins and Unity Plugins (or here).
2.Support Cross-platform permissionsProvide a single cross-platform permission API that works with any iOS, Android application that can be accessed from shared code no matter how the user interface is created.
3.Simple installation of Android SDK and NDKSimple installation with environment variables, libs, etc. Make installation of Android SDK, NDK, tools more robust.

Milestone 3 — Android Plugins

  • Estimated Duration: 2.0 months
  • FTE: 3.5
  • Costs: 15,000 USD
NumberDeliverableSpecification
0a.LicenseApache 2.0 / GPLv3 / MIT / Unlicense
0b.DocumentationWe will provide both inline documentation of the code and a basic tutorial that explains how to use Google Play Billing and In-App updates in your own rust game project.
0c.Testing GuideCore functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests.
0d.DockerWe will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone.
1.Sign in with GoogleAdd support of Google Sign In inside any application.
2.Android In-App purchases with Google Play BillingAdd support for Google Play Billing. Make it possible to buy items from your game.
3.Support Android In-App updatesAdd support for Android In-App updates.
4.Support Android In-App billingAdd support for Android In-App billing.
5.ArticleWe will prepare and publish an article/tutorial that explains how to add Sign in with Google, create own Android Plugins with our toolkit (what was done/achieved as part of the grant).

Future Plans

Possible additional features:

  • Firebase SDK.
  • Android Game SDK.
  • Some features that people will may be interested in.

Also we want to make similar stuff for native iOS apps. Current nearest plans are:

NumberTitleSpecification
1.Support iOS PluginsAdd support of iOS plugins to help add additional functionality provided by the Apple platforms and ecosystem (like Ads, Auth, In-app purchases, etc.). Something similar to Godot iOS plugins.
2.Sign in with AppleAdd support of Apple Sign In inside any application.
3.Better support for Apple xcrun, xcode projAdd better support and rust wrappers for Apple xcode tools, xcrun. Make cool xcode project generation library.
4.Apple Game CenterAdd Apple Game Center support.
5.Support Apple In-App purchasesSupport Apple StoreKit. Make it possible to buy items from your application.

Additional Information

How did you hear about the Maintenance Grants Program? Personal recommendation.