Rialight framework

Acronyms:

  • RIA: Rich-Interface Application

Rialight aims to provide an unique, open-source platform with everything necessary in hands for developing games and software fast. Softwares are also called RIAs. It's not yet available as work is beginning. The GitHub repository can be found here: GitHub - rialight/rialight: Framework for games and rich-graphic software

I'd appreciate if anyone wanted to help. The SDK is in its own GitHub organization, so I can invite anyone.

Features

Cross-platform

Export to desired platform (Web, desktop (Windows, Linux and OSX), mobile (Android and iOS), gaming consoles (PlayStation, Xbox and Nintendo Switch) and anything I missed)

SDK accessibility

Basically the SDK will have command-line usage only, but futurely we can build a RIA for the SDK itself.

Example commands:

  • rialight new my-foo-project for a starter template
    • Project comes with localization integrated

rialight::display

Covers UI, 2D vector graphics and 3D graphics (DisplayNode). All DisplayNode will have children, 3D position, opacity, transform and more. Certain subtypes will have different properties which may still be directly accessed in DisplayNode through dynamic dispatch.

  • Instead of inheritance and mark-n-sweep garbage-collection (GC), the strategy will be to internally use a set of variants, RefCell, Arc, Weak and, for accessing subtype properties, use match/if let internally. So, say, to create a tab bar we'll do TabBar::new(), which will return a Arc<DisplayNode> whose kind() == DisplayNodeKind::TabBar.
Button::new()
    .add_many(vec![
        TextArea::new("Hello!")]);
  • UI capabilities will be based on Flash Display List and Feathers UI. Everything as possible should be covered to prevent the developer from extending the existing UI system (which is hard since Rust doesn't support Java-like inheritance).
    • Yeah, other UI crates use another approach: they use Any and trait, however this prevents code reuse (like adding children, setting transform etc.), so rialight::display will use the former approach mentioned before.
  • We'll internally use the lyon crate (it finally reached version 1) and maybe gfx crate.
  • Implement UI focus navigation and scroll properly. Allow use of gamepads and keyboard to navigate the UI through the project settings or maybe through the UI API. Allow Tab and Shift + Tab keys for navigation.
  • Indirectly access subtype properties through node.as_subtype().x(). For example: node.as_textarea().set_text("text");

rialight::filesystem

  • Based in Harman AIR SDK, files can be referenced both by URL (e.g. file://c, app://app-installed-file.bin, app-storage://app-private-file.bin) and by path. app: and app-storage: schemes will be implemented in different ways in different platforms. For example, we may use IndexedDB on web for app: and app-storage:.

rialight::localization

Need support for displaying currency, plurals, collation and numbers.

rialight::net

Network-related things

rialight::sound

?

Game engines

?

What is a "RIA"?

A cursory look through your post as well as the README and docs in the linked repo don't say anything about what a RIA actually is, yet everything points to it being a pretty core concept.

*Grumbles about people using TLAs before defining them*

RIA stands for rich-interface application. Basically any kind of software.

Just updated the topic. I'm mostly working in the file system module first...

Renamed from Flx to Rialight. The new name is kinda inspired by Microsoft Silverlight.