Boréale 專案 · borealis 的分支

為你的 App 打造 Switch 風格的介面,適用每一種螢幕

Aurore 是一套為控制器、電視和觸控螢幕打造的 C++ 介面函式庫。開箱就像 Nintendo Switch 的選單,也能改造成任何其他風格。

尚無發行版本:子模組跟隨 main。

Aurore 的示範,使用預設外觀 Cadran:左側是圖示軌道,還有卡片、標籤和按鈕,底部是控制器的按鍵提示。

執行平台

  • Nintendo Switch
  • Android
  • iOS
  • Windows
  • macOS
  • Linux
  • PS4
  • PS Vita
  • Browser

一個畫面只要幾行 XML

用 XML 描述畫面,以 flexbox 排版;在 C++ 中綁定它的檢視。焦點會自動跟著方向鍵移動,觸控和滑鼠也能用,每種顏色都跟隨主題。

15 分鐘動手打造 →

畫面 resources/xml/activity/hello.xml
<!-- resources/xml/activity/hello.xml -->
<aurore:AppletFrame>
    <aurore:Box
        title="Hello"
        axis="column"
        alignItems="center"
        justifyContent="center"
        gap="20">

        <aurore:Label
            text="@i18n/hello/welcome"
            fontSize="24" />

        <aurore:Button
            id="hello_button"
            style="primary"
            width="300"
            text="Say hello" />

    </aurore:Box>
</aurore:AppletFrame>
它的 Activity hello_activity.hpp
// hello_activity.hpp
#include <aurore.hpp>

class HelloActivity : public aurore::Activity
{
  public:
    CONTENT_FROM_XML_RES("activity/hello.xml");

    void onContentAvailable() override
    {
        button->registerClickAction([](aurore::View*) {
            aurore::Application::notify("Hello!");
            return true;
        });
    }

  private:
    AURORE_BIND(aurore::Button, button, "hello_button");
};
顯示結果

Hello

歡迎使用 Aurore!

返回

線上示範

真正的示範,就在你的瀏覽器裡

用 Emscripten 編譯的 Aurore 示範:與 Switch 上相同的程式碼,由 WebGL 2 繪製。可用鍵盤、滑鼠、觸控螢幕或螢幕上的手把操作;所有主題和語言一應俱全。

在瀏覽器中試用

功能

遊戲機選單需要的一切

Cadran

獨特的外觀,不用寫一行程式碼

Cadran 是 PlayGuard 和 PlayShelf 的外觀,也是 Aurore 的預設外觀:圖示軌道、卡片、強制回應視窗、動作選單、向量圖示、淺色和深色主題,語言和主題可在 App 執行時切換。aurore::Application::setCadran(false) 可保留 borealis 原本的外觀。

Cadran 套件 →

主題資料夾:冬季

截圖

不同外觀下的示範

Aurore 新增的內容

延續 borealis

Aurore 跟隨上游(xfangfang/borealis),並加入從其他分支挑選的修正和功能,以及它的 App 所需的內容:除了修正之外,每一項都需要主動啟用。

所有變更及其 API →

Aurore 與 borealis 並列對照 →

  • 主題:主題檔案和資料夾、由一種強調色產生的調色盤、預設集、圖片、標誌、圖示、裝飾和粒子,全部即時切換。
  • 樣式:依狀態設定的樣式(焦點、按下、停用、懸停)、轉場效果、資料繫結和無障礙標籤。
  • 檢視:重複利用儲存格的格線和列、內容選單、圖示按鈕、Markdown。
  • 排版:Yoga 3、gap、焦點可跨行移動的 flexWrap、每個角各自的圓角、漸層。
  • 文字:每個標籤的字型縮放、自動縮小以容納、乾淨的換行。
  • 焦點與提示:焦點不再遺失在隱藏或銷毀的檢視中;底列提示保持穩定。
  • 平台:SDL 下控制器重新連線、瀏覽器(Emscripten)、Switch 上 deko3d 的指令記憶體。
  • 速度:文字或尺寸不變時不重新排版,XML 屬性按需註冊,釋放未使用的材質。

使用

在你的專案中

  1. 以 C++20 建置你的專案,並啟用 RTTI 和例外處理。
  2. 將 Aurore 加入為子模組,並把它的 resources 資料夾複製到你的專案根目錄。
    git submodule add -b main https://github.com/JigSawFr/aurore.git library/aurore
    git submodule update --init --recursive
  3. 在你的 CMakeLists.txt 中,於 project() 之前引入 commonOption.cmake 和 toolchain.cmake,之後加入函式庫,並連結 Aurore::aurore。
  4. 用 -DAURORE_PLATFORM=… 選擇平台:DESKTOP、SWITCH、PSV、PS4、ANDROID、IOS。

從零開始?template/ 是一個可為桌面和 Switch 建置的最小 App。

從 borealis 轉換過來?更換子模組,然後把 brls::、<borealis.hpp> 和 BRLS_ 改成 Aurore 的名稱:一次搜尋取代就好。 →

建置示範

在 Linux、macOS 或 Windows 上;其他平台的指令與 CI 中的相同。 →

git clone --recursive https://github.com/JigSawFr/aurore.git
cd aurore
cmake --preset desktop-glfw
cmake --build --preset desktop-glfw
./build/desktop-glfw/aurore_demo

以 borealis 打造

在它之上執行的 App

文件

說明文件

授權條款

borealis 的程式碼採用 Apache 2.0 授權;Aurore 的預設外觀 Cadran 採用 GPLv3,用它建置的 App 也是如此。由 JigSawFr 維護的自由軟體。