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, usematch
/if let
internally. So, say, to create a tab bar we'll doTabBar::new()
, which will return aArc<DisplayNode>
whosekind() == 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
andtrait
, however this prevents code reuse (like adding children, setting transform etc.), sorialight::display
will use the former approach mentioned before.
- Yeah, other UI crates use another approach: they use
- We'll internally use the
lyon
crate (it finally reached version 1) and maybegfx
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:
andapp-storage:
schemes will be implemented in different ways in different platforms. For example, we may use IndexedDB on web forapp:
andapp-storage:
.
rialight::localization
Need support for displaying currency, plurals, collation and numbers.
rialight::net
Network-related things
rialight::sound
?
Game engines
?