Boréale 프로젝트 · borealis 포크

앱을 위한 Switch 스타일 인터페이스, 모든 화면에서

Aurore는 컨트롤러, TV, 터치스크린을 위한 C++ UI 라이브러리입니다. 처음부터 Nintendo Switch의 메뉴처럼 보이며, 전혀 다른 스타일로도 바꿀 수 있습니다.

아직 릴리스가 없습니다. 서브모듈은 main을 따라갑니다.

기본 모습인 Cadran으로 본 Aurore 데모: 왼쪽의 아이콘 레일, 카드, 칩과 버튼, 아래쪽의 컨트롤러 버튼 안내.

실행 환경

  • 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>
액티비티 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

코드 한 줄 없이 나만의 모습

PlayGuard와 PlayShelf의 모습인 Cadran이 Aurore의 기본값입니다. 아이콘 레일, 카드, 모달, 액션 시트, 벡터 아이콘, 밝은 테마와 어두운 테마, 앱 실행 중에 바꾸는 언어와 테마. aurore::Application::setCadran(false)로 borealis 본래의 모습을 유지할 수 있습니다.

Cadran 키트 →

테마 폴더: 겨울

스크린샷

여러 모습의 데모

Aurore가 더하는 것

borealis를 잇다

Aurore는 업스트림(xfangfang/borealis)을 따라가면서 다른 포크에서 가져온 수정과 기능, 그리고 Aurore로 만든 앱에 필요한 것을 더합니다. 수정이 아닌 것은 모두 선택해서 켭니다.

모든 변경 사항과 API →

Aurore와 borealis 나란히 보기 →

  • 테마: 테마 파일과 폴더, 강조색 하나로 만드는 팔레트, 프리셋, 이미지, 로고, 아이콘, 장식과 파티클. 모두 실시간 전환.
  • 스타일: 상태별 스타일(포커스, 누름, 비활성, 호버), 전환 효과, 데이터 바인딩, 접근성 레이블.
  • 뷰: 셀을 재사용하는 그리드와 행, 컨텍스트 메뉴, 아이콘 버튼, Markdown.
  • 레이아웃: Yoga 3, gap, 줄을 넘나드는 포커스를 지원하는 flexWrap, 모서리별 반경, 그라데이션.
  • 텍스트: 레이블마다 글꼴 배율, 맞춤 축소, 깔끔한 줄바꿈.
  • 포커스와 안내: 숨겨지거나 제거된 뷰에서 포커스를 잃지 않음. 하단 안내도 안정적.
  • 플랫폼: SDL에서 컨트롤러 재연결, 브라우저(Emscripten), Switch의 deko3d 명령 메모리.
  • 속도: 텍스트나 크기가 그대로면 레이아웃을 다시 하지 않음, XML 속성은 필요할 때 등록, 쓰지 않는 텍스처는 해제.

사용하기

내 프로젝트에서

  1. 프로젝트를 RTTI와 예외를 켠 C++20으로 빌드합니다.
  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용으로 빌드되는 최소한의 앱입니다.

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로 만든 앱

이 위에서 돌아가는 앱

문서

문서

라이선스

borealis의 코드는 Apache 2.0 라이선스입니다. Aurore의 기본 모습인 Cadran은 GPLv3이며, 이를 사용해 만든 앱도 마찬가지입니다. JigSawFr가 관리하는 자유 소프트웨어입니다.