Skip to content
This repository has been archived by the owner on Jan 30, 2022. It is now read-only.

Introduction

Andreas Hefti edited this page Jun 12, 2020 · 3 revisions

About

Fly-Ko is a top-level 2D game framework for Kotlin. Focusing on intuitive API and build within stringent architecture and design principles like Component-Entity-System, Builder/DSL and component indexing for fast access.

The main idea of Firefly is to have a top-level 2D game API that comes with an in-build Component-Entity-System architecture that helps to organize all the game-objects, data and assets in a well-defined form and helps a lot on keeping the game code-base as flexible as possible for changes. Since almost everything in Fly-Ko is a component, to create them is following always the very same builder DSL while business-code stays in their System(s). This leads to more flexibility when content or behavior must be changed or need to be extended.

Fly-Ko's Entity-Component-System is implemented on-top of a small set of interfaces that defines the API to the lower-level libraries that can be used to render graphics, play sounds or gather or poll input events. Within the current version Fly-Ko uses libgdx and lwjgl as lower-level libraries.

Building and packaging games for desktop (Win, Mac and Linux) is currently supported and other platforms like Android or HTML5 should be possible but is not tested yet.

Key Features

  • Strong backing on Component and Component-Entity-System approach.

    Almost everything within Firefly is a Component, or an Entity (composite of components) or a System.

  • Lightweight but power-full and easy extendable event system for communication between Systems.

  • Independent Lower Level interface definition

    There are a few interface definitions that must be implemented to implement Firefly within a lower level library like lwjgl or libgdx. All code that is written against the Firefly API is not affected by the change of the lower level library. Until now only a project with an implementation for libgdx is supported.

  • Stringent Component builder API with DSL support.

    Use Fly-Ko's builder DSL to build and compose components.

  • Indexing for Component types and instances for fast access

    Firefly comes with an indexing system that allows to indexed Java types (Class types) within a defined root type on one hand and on the other to index instances (objects) of a specified type. All Components, Entities and Systems are indexed by type and mostly, if needed also by the instance to guarantee fast access.

  • Multiple Views

    Views on Fly-Ko are like windows to separated worlds within the main game window that can be placed at the main game window and render its own (layered) world. And of course views are components and can be build like any other component in Fly-Ko. Under the hood, Views uses OpenGL's FBO (Frame Buffer Object) to render each world-view to a texture and render all this textures to the main game window at the end.

  • OpenGL shader support.

  • Basic libraries for input, audio, tile-maps, animation, movement, contact/collision, particle, action, state, behavior and many more.

  • Extendable by design. Easily add and integrate third party libraries for physics or other needs within your game.

Clone this wiki locally