Skip to content

Repository files navigation

Sephiria Quick Tablet Optimizer

📖 개요

게임 세피리아의 메인 인벤토리에서 아티팩트와 석판의 위치 및 석판 회전을 함께 계산해, 아티팩트 효과를 높이는 배치를 찾아 적용하는 BepInEx 플러그인입니다.

이 플러그인은 큰 인벤토리에서는 전역 최적성을 보장하는 대신, 제한 시간 안에 완전히 검증한 배치 중 가장 좋은 결과를 사용합니다.

항목 대상 환경
운영 체제 Windows x64
게임 런타임 Unity Mono (6000.3.21f1)
모드 로더 BepInEx 6 Unity Mono x64
플러그인 프레임워크 .NET Standard 2.1

게임 업데이트로 내부 구조가 바뀌면 플러그인이 동작하지 않을 수 있습니다.

✨ 기능

세피리아 인벤토리 최적화 미리보기

  • 아티팩트와 석판의 최적화 배치
  • 아티팩트 및 콤보의 우선순위 배정
  • 게임 컨트롤러를 포함하여 쉽고 편리하게 사용할 수 있는 친절한 UI

📦 설치 방법

  1. Sephiria 게임 폴더에 BepInEx 6 Unity Mono x64를 설치합니다.

  2. 게임을 한 번 실행해 BepInEx\plugins 폴더가 생성되었는지 확인한 뒤 종료합니다.

  3. 배포 파일 또는 직접 빌드한 Sephiria.QuickTabletOptimizer.dll을 다음 경로에 복사합니다.

    <Sephiria 설치 폴더>\BepInEx\plugins\QuickTabletOptimizer\Sephiria.QuickTabletOptimizer.dll
    
  4. 게임을 실행하고 BepInEx\LogOutput.txt에서 다음과 같은 로드 메시지를 확인합니다.

    Sephiria Quick Tablet Optimizer 0.1.0 loaded.
    

업데이트할 때는 게임을 종료한 상태에서 기존 DLL을 새 버전으로 교체합니다.

🎮 사용 방법

  1. 게임에서 일반 모드의 메인 인벤토리를 엽니다. 인벤토리에 아티팩트가 하나 이상 있으면 좌측 상단에 최적화 버튼이 활성화됩니다.
  2. 특정 대상을 먼저 강화하고 싶다면 아티팩트 슬롯 또는 콤보 행에 마우스를 올리고 **가운데 버튼 (휠 클릭)**을 누릅니다. 게임패드에서는 대상에 포커스를 둔 뒤 Y를 누릅니다.
  3. 선택한 순서가 숫자로 표시됩니다. 아티팩트 우선순위와 콤보 우선순위는 각각 독립적으로 관리되며, 먼저 선택한 항목일수록 앞선 우선순위로 비교됩니다. 같은 입력을 다시 누르면 해당 항목이 목록에서 제거됩니다.
  4. 최적화 버튼을 클릭하거나 게임패드 확인 입력으로 활성화합니다. 계산 중에는 버튼이 잠기며 상태 메시지가 표시됩니다.
  5. 계산과 검증이 성공하면 선택된 배치가 적용됩니다. 더 나은 배치를 찾지 못했거나 현재 배치가 선택되면 인벤토리는 그대로 유지됩니다.

우선순위는 같은 던전 세션에서 인벤토리를 닫았다 다시 열어도 유지되며, 새 던전 세션에 들어가면 초기화됩니다. 식별·인챈트·신비 항아리 선택·석판 조합 같은 특수 인벤토리 모드에서는 우선순위 편집과 최적화 버튼을 사용할 수 없습니다.

🛠️ 빌드 방법

요구 사항

  • .NET 8 SDK (global.json 기준 8.0.200 이상)
  • Sephiria 설치본
  • 로컬 실행 및 자동 배포 시 초기화된 BepInEx 6 설치본

로컬 게임 참조 설정

프로젝트의 실제 게임 연동 코드는 Assembly-CSharp.dll, Mirror.dll, UnityEngine.UI.dll 등 Sephiria의 관리형 어셈블리가 있을 때 포함됩니다. 따라서 동작 가능한 모드 DLL을 만들려면 저장소 루트에서 로컬 설정 파일을 먼저 준비해야 합니다.

Copy-Item Directory.Build.local.props.example Directory.Build.local.props

생성한 Directory.Build.local.props에서 GameDirSephiria.exe가 있는 폴더로 수정합니다. 이 파일은 개인 게임 경로를 포함하므로 Git에서 제외됩니다.

복원, 빌드 및 테스트

dotnet restore --locked-mode
dotnet build --configuration Release --no-restore
dotnet test --configuration Release --no-build

빌드 결과는 다음 위치에 생성됩니다.

src\Sephiria.QuickTabletOptimizer\bin\Release\netstandard2.1\Sephiria.QuickTabletOptimizer.dll

빌드할 때 게임 폴더로 자동 복사하려면 Directory.Build.local.propsDeployOnBuildtrue로 변경합니다. BepInEx를 한 번 실행해 BepInEx\plugins가 생성된 뒤에만 자동 배포를 활성화하세요.

NuGet 의존성을 의도적으로 갱신할 때만 --locked-mode 없이 복원하고, 변경된 packages.lock.json을 검토합니다. 개발 환경에 관한 추가 설명은 docs/development.md를 참고하세요.

🧠 최적화 배치 알고리즘

최적화기는 현재 배치를 초기 해답으로 삼는 결정론적 exact anytime branch-and-bound 탐색을 사용합니다.

  1. 입력 캡처: 활성화된 메인 그리드 슬롯과 아티팩트·석판의 인스턴스, 현재 위치와 회전, 아티팩트 및 콤보 우선순위, 효과 계산에 필요한 상태를 불변 스냅샷으로 만듭니다. 일반 아이템과 이동할 수 없는 효과 원천은 고정 점유로 남기고 물약 전용 보관함은 제외합니다.
  2. 의미 검증 및 컴파일: 현재 배치를 가상으로 다시 계산해 실제 아티팩트 레벨·활성화 상태·콤보 소속과 일치하는지 확인합니다. 일치하지 않거나 지원할 수 없는 효과가 있으면 배치를 변경하지 않고 계산을 중단합니다.
  3. 초기 후보 개선: 석판의 위치·회전별 전체 효과 필드를 만들고, 서로 독립적인 아티팩트는 정확한 이분 매칭으로 슬롯에 배정해 빠르게 좋은 완성 후보를 구합니다.
  4. 정확 탐색: 아티팩트와 석판의 모든 합법적 위치 및 석판 회전을 같은 탐색 공간에서 다룹니다. 낙관적 상한, 동치·우월 관계, 제약 전파와 제한된 캐시로 현재 최선보다 나을 수 없다고 증명된 분기를 제거합니다.
  5. 종료 및 적용: 모든 분기를 해결하면 최적성이 증명된 결과를 얻습니다. 기본 7.5초 탐색 기한에 먼저 도달하면 그 시점까지 완전히 평가된 최선의 후보를 유지합니다. 이후 서버가 인벤토리와 우선순위가 캡처 시점과 같은지 재검증하고, 유효할 때만 위치와 회전을 한 번에 적용합니다.

후보는 다음 항목을 위에서부터 사전식으로 비교합니다.

후보 비교 우선순위 보기
flowchart TD
    A["1. 아티팩트 우선순위별 효과 단계<br/>높은 값 우선"]
    B["2. 콤보 우선순위별 효과 단계 합계<br/>높은 값 우선"]
    C["3. 모든 아티팩트의 효과 단계 합계<br/>높은 값 우선"]
    D["4. 음수 레벨 부족분<br/>작은 값 우선"]
    E["5. 최대 레벨을 넘는 낭비<br/>작은 값 우선"]
    F["6. 이동한 아이템 수<br/>작은 값 우선"]
    G["7. 회전한 석판 수<br/>작은 값 우선"]
    H["8. 정규화된 슬롯·회전 키<br/>사전순으로 작은 키 우선"]
    I(["최종 후보 선택"])

    A -->|동률일 때| B
    B -->|동률일 때| C
    C -->|동률일 때| D
    D -->|동률일 때| E
    E -->|동률일 때| F
    F -->|동률일 때| G
    G -->|동률일 때| H
    H --> I
Loading

활성화된 아티팩트의 효과 단계는 clamp(원시 레벨, 0, 최대 레벨) + 1이며, 비활성화된 아티팩트는 0입니다. 이 정의는 레벨 0에서도 활성 효과가 있는 게임 규칙을 반영합니다. 마지막 정규화 키까지 같게 적용하므로 같은 입력과 같은 완료 탐색 범위에서는 항상 같은 배치를 선택합니다.

⚖️ 라이선스

이 프로젝트의 코드와 문서는 BSD 3-Clause License로 배포됩니다.

다음 이미지 자산은 BSD 3-Clause License 적용 범위에서 명시적으로 제외되며, LICENSE 파일은 이 자산의 사용, 복제, 수정 또는 배포를 허가하지 않습니다.

src/Sephiria.QuickTabletOptimizer/Assets/quick-tablet-optimizer-icon.png
docs/assets/preview.gif

Sephiria와 관련 상표 및 게임 자산의 권리는 각 권리자에게 있습니다. 이 프로젝트는 게임 원본 파일, 추출한 DLL 또는 BepInEx 배포본을 포함하지 않습니다.

About

게임 세피리아의 아티팩트, 석판 배치 최적화 모드

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages