8000 GitHub - pandulapeter/kubriko: A game engine based on Compose Multiplatform for 2D Android, iOS, Desktop, and Web projects.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

A game engine based on Compose Multiplatform for 2D Android, iOS, Desktop, and Web projects.

License

Notifications You must be signed in to change notification settings

pandulapeter/kubriko

Repository files navigation

Kubriko

A 2D game engine based on Compose Multiplatform

Kubriko logo

This repository contains the source code of the Kotlin Multiplatform library and its plugins / tooling, as well as the Kubriko Showcase application that demonstrates the engine's capabilities.

Important

Kubriko is in early stages of development. The API might change and bugs can be present. The documentation and the tutorials are not yet finalized.

🎮 Overview

Kubriko aims to offer a lightweight, scalable, and easy-to-use solution for creating simple 2D games for Android, Desktop (Windows, Linux, macOS), iOS and Web. It achieves this goal by exposing a Composable function that can easily be embedded into Kotlin Multiplatform projects.

The engine is highly modular, because its core functionality can be extended in a granular fashion using different plugins. These plugins cover most needs of simple games; from viewport scaling and object management, through persistence, input handling, and audio playback, all the way to shaders and physics simulation. Kubriko also offers a number of tools, such as a Scene Editor and a Debug Menu, that can be useful during development.

The tech stack is easy to extend by creating custom plugins, and the low-level integration makes it possible to communicate with platform API-s in a straightforward way.

Note

The Kotlin/Wasm export functionality of Compose Multiplatform is currently in alpha. This also applies to the Web version of games created with Kubriko. Check out this page for a complete list of limitations.

🎨 Showcase app

Clone this repository and run the app module for the supported targets (Android, Desktop, iOS, Web) to check out what the engine is capable of.

You can find the pre-built applications following these links:

Download for Android Download for iOS Download for Windows Download for macOS Download for Linux Download for Web

Note

Some of the links above might not be available / up to date, so the best way to try Kubriko Showcase is to build the project yourself.

📚 Learning

Follow the links below to get started with the first steps of integrating the library, to read the full documentation, to watch step by step videos on how to approach specific types problems, or to join our Discord server where you can discuss more advanced topics with the community, or promote your own creations.

Getting started Documentation Tutorial videos Join the community

Another way to learn about Kubriko is to explore this repository and understand how the various examples are implemented.

And the best way, of course, is having fun while creating your very own games!

🏗️ Project structure

Besides hosting the engine's source code, this repository also serves as the documentation for its feature set. Each top-level folder / module has its own Readme file that contains general information about the relevant piece of functionality:

  • app - The menu system for the showcase app. It ties together the modules located in the examples folder.
  • documentation - Contains markdown files with an overview of the Kubriko API.
  • engine - Defines the core components of Kubriko.
  • examples - Contains the implementation modules of the games, demos, and tests from the Showcase app.
  • plugins - These modules can be used to extend the functionality of Kubriko.
  • tools - Extensions that can be useful during development such as the Scene Editor.

For more details, read the KDoc comments for the classes and functions that are exposed in the public API.

📜 Artifacts

Expand the sections below to see the complete list of all Kubriko dependencies hosted on MavenCentral.

Engine
  • io.github.pandulapeter.kubriko:engine
Plugins
  • io.github.pandulapeter.kubriko:plugin-audio-playback
  • io.github.pandulapeter.kubriko:plugin-collision
  • io.github.pandulapeter.kubriko:plugin-keyboard-input
  • io.github.pandulapeter.kubriko:plugin-particles
  • io.github.pandulapeter.kubriko:plugin-persistence
  • io.github.pandulapeter.kubriko:plugin-physics
  • io.github.pandulapeter.kubriko:plugin-pointer-input
  • io.github.pandulapeter.kubriko:plugin-serialization
  • io.github.pandulapeter.kubriko:plugin-shaders
  • io.github.pandulapeter.kubriko:plugin-sprites
Tools
  • io.github.pandulapeter.kubriko:tool-debug-menu
  • io.github.pandulapeter.kubriko:tool-debug-menu-api
  • io.github.pandulapeter.kubriko:tool-debug-menu-noop
  • io.github.pandulapeter.kubriko:tool-logger
  • io.github.pandulapeter.kubriko:tool-scene-editor
  • io.github.pandulapeter.kubriko:tool-scene-editor-api
  • io.github.pandulapeter.kubriko:tool-scene-editor-noop
  • io.github.pandulapeter.kubriko:tool-ui-components

The latest version is:

🫶️ Support

Displaying the Kubriko logo in games created with the engine, or just mentioning Kubriko somewhere in the credits is highly appreciated! Also, if you create anything with Kubriko that you're proud of, don't hesitate to reach out to me via email or Discord!

Kubriko is my pet project, that I'm developing in my free time. If you found it useful, I'm happy to accept donations through the following means:

Buy me a coffee Sponsor on GitHub

Thank you in advance!

🤝 Contributing

Any help in making Kubriko a better engine is very welcome!

  • For improvement ideas or bug reports simply create a new issue. Make sure to provide as many details as possible and use the correct labels.
  • For code contributions use the project board to make sure that the issue you want to fix is not already being worked on. Please leave a comment as well so that the issue can be assigned to you! After that fork the project, commit your changes, push them to the repository, and create a pull request.

⚖️ License

This library is published under the Mozilla Public License Version 2.0, which can be found here. You are free to use the Kubriko engine to develop your own proprietary games at no cost and without attribution.

However, if you create derivative works (such as forks or competing engines), these must be open source and include a link back to this repository.

About

A game engine based on Compose Multiplatform for 2D Android, iOS, Desktop, and Web projects.

Resources

License

Stars

Watchers

Forks

Languages

0