refactor: website docs **translation needed** (#9287)

Co-authored-by: wlwxj <d1ve_wh4le@outlook.com>
Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Wallsman <63186641+wallsman@users.noreply.github.com>
Co-authored-by: Loong <wangl.cc@outlook.com>
Co-authored-by: 神代綺凛 <i@loli.best>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
This commit is contained in:
uye
2024-07-08 01:57:20 +08:00
committed by GitHub
parent 24a73759ad
commit 67bbf9aac5
288 changed files with 10256 additions and 6210 deletions

View File

@@ -0,0 +1,9 @@
---
title: 개발 관련
icon: ph:code-bold
index: false
dir:
order: 2
---
<Catalog base='/ko-kr/develop/' />

View File

@@ -0,0 +1,120 @@
---
order: 1
icon: iconoir:developer
---
# 개발 환경 구축
## Github Pull Request 진행 과정
### 프로그래밍을 잘 모르지만, json 파일과 docs 문서를 수정하고싶어요. 어떻게 해야하나요?
[웹 기반 PR 가이드](./pr-tutorial.md)를 참고하세요! (GitHub.com 웹사이트에서만 가능합니다)
### 프로그래밍을 할 줄 알지만 GitHub/C++/...에 익숙하지 않아요. 어떻게 해야 하나요?
1. 이전에 `fork`한 적이 있다면 먼저 본인의 저장소의 `Settings`로 이동하여 가장 아래로 스크롤하여 삭제합니다.
2. [MAA 메인 레포](https://github.com/MaaAssistantArknights/MaaAssistantArknights)를 열고 `Fork`를 클릭한 다음 `Create fork`를 클릭합니다.
3. 로컬에서 레포(dev 브랜치)를 클론합니다.
```bash
git clone --recurse-submodules <당신의 저장소의 git 링크> -b dev
```
4. Visual Studio와 같은 --recurse-submodules 매개변수가 포함되지 않은 Git GUI를 사용 중이라면, 클론한 후에 `git submodule update --init` 명령을 실행하여 서브모듈을 가져와야 합니다.
**Python 환경이 필요합니다. Python 설치 방법은 스스로 찾아보세요.**
_maadeps-download.py 파일은 프로젝트 루트에 있습니다_
```cmd
python maadeps-download.py
```
5. 개발 환경을 설정합니다.
- `Visual Studio 2022 community`를 다운로드 및 설치하고 설치 중에 `C++ 기반 데스크톱 개발` 및 `.NET 데스크톱 개발`을 선택합니다.
6. `MAA.sln` 파일을 더블 클릭하여 엽니다. Visual Studio는 프로젝트를 자동으로 로드합니다.。
7. VS 설정
- VS 상단의 구성을 `RelWithDebInfo x64`로 선택합니다. (릴리스 패키지 또는 ARM 플랫폼을 빌드하는 경우, 이 단계를 무시하세요)
- MaaWpfGui를 마우스 오른쪽 버튼으로 클릭하여 속성을 선택하고 `디버그` - `로컬 디버깅 활성화`를 선택합니다. (이렇게 하면 C++ 코어 부분에 중단점을 설정할 수 있습니다.)
8. 이제 마음껏 개발을 시작할 수 있습니다.
9. 개발 중에 정기적으로 커밋을 하고 메시지를 작성하는 것을 잊지 마세요.
Git 사용에 익숙하지 않다면 변경 사항을 직접 `dev` 브랜치에 제출하는 대신 새 브랜치를 만들어 작업하고 커밋하는 것이 좋습니다.
```bash
git branch your_own_branch
git checkout your_own_branch
```
이렇게 하면 새 브랜치에서 변경 사항이 발생하며 `dev` 브랜치의 업데이트에 영향을 받지 않습니다.
10. 개발이 완료되면 수정한 로컬 브랜치(dev를 기준으로 함)를 원격(fork한 저장소)에 푸시합니다.
```bash
git push origin dev
```
11. [MAA 메인 레포](https://github.com/MaaAssistantArknights/MaaAssistantArknights)를 엽니다. Pull request를 제출하고 관리자의 승인을 기다립니다. dev 브랜치에서 수정했는지 확인하세요.
12. MAA 원본 저장소에 변경 사항이 발생할 때마다 (다른 사람이 한 경우), 이러한 변경 사항을 로컬 브랜치에 동기화해야 할 수 있습니다.
1. MAA 원본 저장소를 연결합니다.
```bash
git remote add upstream https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
```
2. 업데이트를 가져옵니다.
```bash
git fetch upstream
```
3. 리베이스(권장) 또는 변경 사항을 병합합니다.
```bash
git rebase upstream/dev # 리베이스
```
또는
```bash
git merge # 병합
```
4. 7, 8, 9, 10 단계를 반복합니다.
::: tip
Visual Studio 2022를 열면 관련된 git 작업을 명령 줄 도구 대신 vs 자체 "Git 변경사항"을 사용하여 수행할 수 있습니다.
:::
## Visual Studio에서 clang-format 사용 설정
1. clang-format 17 또는 그 이상 버전을 설치합니다.
```bash
python -m pip install clang-format
```
2. Everything 등의 도구를 사용하여 clang-format.exe의 설치 위치를 찾습니다. 참고로 Anaconda를 사용하는 경우 clang-format.exe는 YourAnacondaPath/Scripts/clang-format.exe에 설치됩니다.
3. Visual Studio에서 `도구`-`옵션`을 검색하여 `clang-format`을 클릭합니다.
4. `ClangFormat 지원 활성화`를 클릭하고 아래의 `사용자 정의 clang-format.exe 파일 사용`을 선택한 다음 2단계에서 찾은 `clang-format.exe`를 선택합니다.
![Visual Studio에서 clang-format 사용 설정](https://github.com/MaaAssistantArknights/MaaAssistantArknights/assets/18511905/23ab94dd-09da-4b88-8c62-6b5f9dfad1a2)
이제 Visual Studio에서 C++20 구문을 지원하는 clang-format을 사용할 수 있습니다!
또한 프로젝트 루트에서 `tools\ClangFormatter\clang-formatter.py`를 실행하여 직접 clang-format을 호출하여 포맷팅할 수도 있습니다.
- `python tools\ClangFormatter\clang-formatter.py --clang-format=PATH\TO\YOUR\clang-format.exe --input=src\MaaCore`
## GitHub codespace를 사용하여 온라인으로 개발하기
GitHub codespace를 사용하여 자동으로 C++ 개발 환경을 구성하세요.
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights)
그런 다음 vscode의 지침을 따르거나 [Linux 컴파일 가이드](./linux-tutorial.md)를 참고하여 GCC 12 및 CMake 프로젝트를 설정하세요.

View File

@@ -0,0 +1,144 @@
---
order: 6
icon: jam:write-f
---
# 문서 작성 가이드
::: tip
이 문서의 목적은 문서 작성자가 주제가 제공하는 기능을 더 잘 활용하여 더 읽기 쉬운 효과를 얻는 데 도움을 주는 것입니다.
:::
우리의 문서는 [vuepress](https://github.com/vuejs/vuepress)로 작성되었으며, [vuepress-theme-hope](https://github.com/vuepress-theme-hope/vuepress-theme-hope) 테마를 사용하고 있습니다. 더 자세한 설명은 [공식 문서](https://theme-hope.vuejs.press/zh/)를 참조할 수 있으며, 여기서는 일부 일반적인 기능에 대해서만 소개하겠습니다.
## 로컬 배포
1. [pnpm](https://pnpm.io/zh/installation)을 설치하고, [Pull Request 가이드](./development.md#github-pull-request-진행-과정)을 참고해, 저장소를 로컬에 클론합니다.
2. `website` 경로에서 새로운 터미널을 열고, `pnpm i` 을 실행하여 의존성 파일을 다운로드합니다.
3. `pnpm run dev` 를 실행하여 배포를 시작합니다.
## 컨테이너
~~도커 컨테이너가 아닙니다~~
이 테마는 팁, 주석, 정보, 주의, 경고 및 세부 정보를 사용자 정의하는 컨테이너를 지원합니다. 이 기능을 사용하여 내용을 강조할 수 있습니다.
컨테이너 사용 방법:
```markdown
::: [컨테이너 타입] [컨테이너 제목(선택사항)]
내용을 입력하세요
:::
```
허용되는 컨테이너 유형 및 기본 제목은 다음과 같습니다:
- `tip`
- `note` 주석
- `info` 정보
- `warning` 주의
- `danger` 경고
- `details` 세부 사항
### 컨테이너 예시
::: tip
이것은 팁 컨테이너입니다.
:::
::: note
이것은 주석 컨테이너입니다.
:::
::: info
이것은 정보 컨테이너입니다.
:::
::: warning
이것은 주의 컨테이너입니다.
:::
::: danger
이것은 위험 컨테이너입니다.
:::
::: details
이것은 세부 사항 컨테이너입니다.
:::
## 아이콘
이 테마는 아이콘을 지원합니다. 다음 위치에서 아이콘을 사용할 수 있습니다:
- 문서 제목: frontmatter에서 문서 제목 옆에 아이콘 설정
- 탐색 모음/사이드바: 탐색 모음 및 사이드바에 표시되는 아이콘 설정
- 문서 내용: 문서에서 아이콘 사용
### 문서의 아이콘 설정
문서의 [frontmatter](#frontmatter) 에서 `icon`을 사용하여 문서의 아이콘을 설정할 수 있습니다.
이 아이콘은 문서 제목 옆에 표시됩니다.
::: details 이 문서의 frontmatter 설정
```markdown
---
icon: jam:write-f
---
```
:::
### 문서에서 아이콘 사용
마크다운에서 `<HopeIcon />` 구성 요소를 사용하여 아이콘을 추가할 수 있습니다. 이 구성 요소에는 다음과 같은 속성이 있습니다:
- `icon` 아이콘 키워드 및 URL 수신. 예: `jam:write-f`, `ic:round-home`
- `color` css 스타일 색상 값 수신. 예: `#fff`, `red` 등 (이 옵션은 svg 아이콘에만 유효함)
- `size` css 스타일 크기 값 수신. 예: `1rem`, `2em`, `100px`
::: details 예시
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
```markdown
<HopeIcon icon="ic:round-home" color="#1f1e33"/>
```
<HopeIcon icon="https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png" size="4rem" />
```markdown
<HopeIcon icon="https://cdn.jsdelivr.net/gh/MaaAssistantArknights/design@main/logo/maa-logo_512x512.png" size="4rem" />
```
:::
### 아이콘 키워드 가져오기
이 문서에서 사용하는 아이콘은 [iconify](https://iconify.design/)에서 제공됩니다. 원하는 아이콘을 검색하려면 제공된 [아이콘 검색 페이지](https://icon-sets.iconify.design/)에서 검색한 다음 키워드를 복사하세요.
## Frontmatter
Frontmatter는 Markdown 문서의 시작 부분에 `---`로 둘러싸인 내용이며 내부에서는 YAML 구문을 사용합니다. Frontmatter를 통해 문서의 편집 시간, 사용된 아이콘, 분류, 태그 등을 식별할 수 있습니다.
::: details 예시
```markdown
---
date: 1919-08-10
icon: jam:write-f
order: 1
---
# 문서 제목
...
```
:::
각 필드의 의미는 다음과 같습니다:
- `date` 문서의 편집 시간
- `icon` 문서 제목 옆에 표시되는 아이콘
- `order` 사이드바에서 문서의 순서

View File

@@ -0,0 +1,69 @@
---
order: 4
icon: bxs:bot
---
# Issue Bot 사용 방법
Issue Bot의 동작은 [issue-checker](https://github.com/zzyyyl/issue-checker)로 이루어지며, 설정 파일은 [issue-checker.yml](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml) 입니다.
::: warning
Commitizen 규격으로 커밋하지 않는 경우, 병합 요청(Merge Request)가 `ambiguous(애매모호한)`로 표시됨에 주의해주세요.
:::
## 기능
### 자동 알림
- 이슈와 풀 리퀘스트에 라벨을 추가합니다. 예: `module`, `Client`, `ambiguous`, `translation required`
Issue Bot은 키워드를 기반으로 카테고리를 추가합니다.
키워드에 대해서는 [설정 파일](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/issue-checker.yml)을 참조해주세요.
- MAA 공개 팀 멤버의 이슈와 풀 리퀘스트에 `MAA Team` 라벨을 추가합니다.
#### 이슈와 이에 대한 코멘트
- `incomplete(미완료)` 라벨을 추가하고, 사용자에게 파일이 제대로 업로드되지 않았음을 알리는 코멘트를 추가합니다.
#### 풀 리퀘스트
Issue Bot은 풀 리퀘스트의 제목을 확인합니다. 아래 키워드로 시작하지 않는 제목은 `ambiguous(애매모호한)`로 표시됩니다.
- `build`, `chore`, `ci`, `doc`, `docs`, `feat`, `fix`, `perf`, `refactor`, `rfc`, `style`, `test`
- `Merge`, `merge`, `Revert`, `revert`
### 수동으로 트리거하기
아래 명령어 목록 대신 키워드로 Issue Bot을 트리거하는 것이 좋습니다. 단, 이로 인해 **Issue Bot이 혼동될 수 있는 작업을 수행할 수 있음에 주의**해야 합니다.
#### 이슈와 풀 리퀘스트
- `Remove {LABEL_NAME}`은 라벨을 삭제합니다.
- `Remove labels`는 모든 라벨을 삭제합니다.
- `Skip {LABEL_NAME}`은 라벨을 건너뜁니다.
- `Skip labels`는 모든 라벨을 건너뜁니다.
#### 이슈 코멘트와 풀 리퀘스트 코멘트
- `Skip {LABEL_NAME}`은 특정 유형의 라벨이 추가되지 않도록 합니다.
- `Skip labels`은 모든 라벨이 추가되지 않도록 합니다.
- `fixed(수정함)` 라벨을 추가하려면 다음 명령어 중 하나를 사용할 수 있습니다:`<sup>`1 `</sup>`
- `https://github.com/MaaAssistantArknights/MaaAssistantArknights/commit/{COMMIT_HASH} fixed`
- `fixed by https://github.com/MaaAssistantArknights/MaaAssistantArknights/commit/{COMMIT_HASH}`
- `{VERSION} fixed`
- `fixed by {VERSION}`
- `Duplicate of #{ISSUE_NUMBER}`는 이슈에 `duplicate(중복)` 라벨을 추가합니다.
- **코멘트가 Issue Bot을 혼동시킬 수 있는 경우 `skip` 작업을 추가할 수 있습니다.**
::: info 참고
<sup>1</sup> 여기서 `COMMIT_HASH`는 40자 길이의 전체 해시값입니다.
:::
#### Push
푸시(push)에 포함된 모든 커밋에 대해:
- 커밋 메시지에 다음 중 하나의 키워드가 포함되어 있다면, `fixed(수정됨)` 라벨이 추가됩니다:
- `fix #{ISSUE_NUMBER}`
- `close #{ISSUE_NUMBER}`
- `fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/{ISSUE_NUMBER}`
- `close https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/{ISSUE_NUMBER}`

View File

@@ -0,0 +1,77 @@
---
order: 2
icon: teenyicons:linux-alt-solid
---
# Linux 컴파일 가이드
**이 튜토리얼은 독자가 일정한 Linux 환경 설정 능력과 프로그래밍 기초를 가지고 있다고 가정합니다!**, 만약 여러분이 MAA를 직접 컴파일하는 대신에 단순히 설치하길 원한다면 [Linux 설명서](../manual/device/linux.md)를 참고하세요.
::: info 정보
MAA의 빌드 방법은 여전히 논의 중입니다. 이 튜토리얼의 내용은 오래되었을 수 있으므로 [GitHub workflow file](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/.github/workflows/ci.yml#L134)의 스크립트를 참고하세요. 또한 [AUR PKGBUILD](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=maa-assistant-arknights) 및 [nixpkgs](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/ma/maa-assistant-arknights/package.nix)을 참고할 수 있습니다.
:::
## 컴파일 과정
1. 컴파일에 필요한 종속성 다운로드
- Ubuntu/Debian
```bash
sudo apt install gcc-12 g++-12 cmake zlib1g-dev
```
2. 서드파티 라이브러리 빌드
사전 빌드된 종속성 라이브러리를 다운로드하거나 직접 빌드할 수 있습니다.
- 사전 빌드된 서드파티 라이브러리 다운로드 (권장됨)
> **Note**
> 상대적으로 최신의 Linux 배포판 (Ubuntu 22.04)에서 컴파일된 동적 라이브러리가 포함되어 있습니다. 시스템의 libstdc++ 버전이 오래되었을 경우 ABI 호환성 문제가 발생할 수 있습니다.
```bash
python maadeps-download.py
```
위의 방법으로 다운로드한 라이브러리가 시스템에서 실행되지 않거나 컨테이너와 같은 대안을 사용하지 않고 싶은 경우 직접 빌드해볼 수도 있습니다.
- 서드파티 라이브러리 직접 빌드 (시간이 오래 걸릴 수 있음)
```bash
git submodule update --init --recursive
cd MaaDeps
python build.py
```
3. MAA 컴파일
```bash
CC=gcc-12 CXX=g++-12 cmake -B build \
-DINSTALL_THIRD_LIBS=ON \
-DINSTALL_RESOURCE=ON \
-DINSTALL_PYTHON=ON
cmake --build build
```
경로에 MAA를 설치하기 위해 위의 명령을 사용합니다. MAA는 `LD_LIBRARY_PATH`를 지정하여 실행하는 것이 좋으며, MAA를 `/usr`에 설치하지 마세요.
```bash
cmake --install build --prefix <target_directory>
```
## 통합 문서
[~~문서가 아닐수도 있습니다~~](../protocol/integration.md)
### Python
[Python demo](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/Python/sample.py)에서 `__main__`의 구현을 참조하세요.
### C
[CppSample](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/CppSample/main.cpp)의 구현을 참조하세요.
### C\#
[MaaWpfGui](https://github.com/MaaAssistantArknights/MaaAssistantArknights/blob/master/src/MaaWpfGui/Helper/AsstProxy.cs)의 구현을 참조하세요.

View File

@@ -0,0 +1,141 @@
---
order: 5
icon: ri:earth-fill
---
# 해외 클라이언트 현지화 가이드
## 준비
이 튜토리얼을 시작하기 전에 다음 사항이 준비되었는지 확인해야 합니다.
1. 필요한 소프트웨어를 설치하고 올바르게 구성했습니다. ZH-CN 클라이언트 또는 해당 클라이언트의 `readme.md` 에 지원되는 기능이 제대로 작동하는지 확인할 수 있는 정보가 있서야 합니다.
2. [작업 스키마](../protocol/task-schema.md) 를 읽고 각 필드의 의미와 사용법을 기본적으로 이해해야 합니다. 코드에서 `@``#` 의 의미와 용법도 이해해야 합니다.
3. ZH-CN 클라이언트의 `task.json` 파일과 템플릿 이미지는 해외 클라이언트에 대해 언급되지 않았거나 누락된 경우의 대안으로 사용된다는 점을 이해해야합니다. 해외 클라이언트에 대한 `task.json` 의 내용은 ZH-CN 작업 필드에 따라 다시 작성해야 합니다.
4. 영어 실력이 있고, 영어 로그를 읽을 수 있으며, 로그를 통해 누락된 사진과 다른 정보를 찾을 수 있는 역량이 있으면 좋습니다.
5. 작업 체인에 따라 개별적으로 수정을 수행하는 것이 좋습니다. 예를 들어, Award 작업을 수정하려면 `next` 필드의 순서에 따라 `template image`, `text`, 그리고 `roi` 를 단계적으로 수정해야 합니다. 이렇게 하면 수정 후 모든 작업이 정상적으로 작동하고 오류를 쉽게 발견할 수 있습니다. 또한 이렇게 하면 한 번에 너무 많은 콘텐츠가 수정될 때 소프트웨어가 어떤 작업에 고정되어 있는지 혼동하거나 잊어버리는 것을 방지할 수 있습니다.
### 변경 전 준비사항
변경하기 전에 다음과 같은 몇 가지 준비 사항에 유의해야 합니다:
1. ZH-CN 클라이언트의 `task.json` 을 참조하여 해외 클라이언트를 위한 템플릿 이미지와 텍스트 콘텐츠를 준비했는지 확인해야 합니다.
2. 이러한 이미지와 텍스트 콘텐츠에 올바르게 접근할 수 있는지 확인해야 합니다.
## 스크린샷 얻기
고품질의 스크린샷을 얻으려면 다음 지침을 따르세요:
1. 에뮬레이터와 함께 제공된 스크린샷 도구를 사용하여 스크린샷을 만들고 저장합니다.
2. 스크린샷의 크기가 `1280*720` 이상이고 종횡비는 반드시 `16:9` 이어야 합니다.
3. 스크린샷에 작업 표시줄, 상태 표시줄 또는 알림 표시줄과 같은 관련 없는 내용이 포함되어 있지 않은지 확인해야 합니다.
4. 스크린샷에 인식해야 할 내용이 모두 포함되어 있는지 확인해야합니다.
이미지를 잘라내고 관심 텍스트/이미지 영역(ROI)을 얻으려면, `Python``OpenCV` 를 설치하고, `MaaAssistantArknights/tools/CropRoi/main.py` 파일을 다운로드해야 합니다.
그런 다음, 다음 단계를 수행합니다.
1. `main.py`와 같은 디렉토리에 `src``dst` 폴더를 새로 만듭니다.
2. 크기를 조정해야 하거나 새로운 ROI 값이 필요한 텍스트/이미지의 **전체 스크린샷**을 `src` 폴더에 넣습니다.
3. `main.py`를 실행합니다.
4. 마우스를 드래그하여 대상 범위를 선택하고, 관련 없는 내용이 포함되지 않도록 합니다.
5. 범위가 결정되면 `S`를 눌러 저장하고 `Q`를 눌러 종료합니다. 잘라낸 이미지가 dst 폴더에 저장됩니다.
예를 들어, 자르기를 완료한 후의 출력은 다음과 같습니다:
```log
src: Screenshot_xxx.png
dst: Screenshot_xxx.png_426,272,177,201.png
original roi: 476, 322, 77, 101,
amplified roi: 426, 272, 177, 201
```
이 예시에서, `Screenshot_xxx.png``src` 폴더에 배치된 전체 스크린샷의 이름이고, `Screenshot_xxx.png_426,272,177,201.png` 는 잘라낸 이미지의 이름입니다.
원래의 `original roi` 는 마우스가 선택한 영역이고, `amplified roi` 는 확대된 영역입니다. 확대된 영역이 필요하므로, `amplified roi` 값을 사용하여 task.json 의 roi 필드를 입력해야 합니다.
## 템플릿 이미지 수정
템플릿 이미지를 수정하기 전에 해당 클라이언트의 템플릿 이미지 폴더와 ZH-CN 클라이언트의 템플릿 이미지 폴더를 열어야 합니다.
예시:
- KR 클라이언트의 템플릿 이미지 폴더 위치는 `MaaAssistantArknights\resource\global\YoStarKR\resource\template` 입니다.
- ZH-CN 클라이언트의 템플릿 이미지 폴더 위치는 `MaaAssistantArknights\resource\template` 입니다.
`task.json` 파일에 언급된 템플릿 이미지를 참조하여 ZH-CN 클라이언트와 해외 클라이언트의 템플릿 이미지를 비교하고, 해외 클라이언트에서 누락된 템플릿이 있는지 확인합니다.
일반적으로 텍스트가 포함된 템플릿 이미지는 로고와 같은 이미지를 제외하고 스크린샷으로 대체해야 합니다. 이미지의 크기가 ZH-CN 클라이언트의 해당 템플릿 이미지보다 상당히 큰 경우 `roi`의 크기를 수정해야 할 수 있습니다.
템플릿 이미지를 캡처하고 이름을 변경한 후에는 해당 클라이언트의 템플릿 이미지 폴더에 배치할 수 있습니다.
## 텍스트 내용 수정
텍스트 내용을 수정하기 전에 해당 서버와 ZH-CN 클라이언트 모두에 대해 `task.json` 파일을 열어야 합니다.
예시:
- KR 클라이언트에서 `task.json` 의 위치는 `MaaAssistantArknights\resource\global\YoStarKR\resource\tasks.json` 입니다.
- ZH-CN 클라이언트의 `task.json` 위치는 `MaaAssistantArknights\resource\tasks.json` 입니다.
텍스트를 수정하려면 해당 작업을 찾은 후 `text` 필드를 해당 서버에 표시된 내용으로 변경합니다. 식별된 콘텐츠는 게임 내 전체 콘텐츠의 하위 문자열이 될 수 있습니다. 일반적으로 텍스트가 포함된 `text` 는 순수 ASCII 문자로 인식되지 않는 한 대체해야 합니다.
텍스트 길이가 ZH-CN 클라이언트 버전보다 상당히 긴 경우, `roi` 필드의 크기를 수정해야 할 수 있습니다. 예를 들어 `"任务"`(임무)와 한글 단어 `"임무"` 의 길이 차이가 너무 큰 경우, 해외 클라이언트에서 해당 단어의 `roi` 크기를 수정해야 할 수 있습니다.
해당 해외 서버의 `task.json` 파일에 작업이 없으면 추가해야 합니다. `text` 필드에 적절한 내용을 입력합니다.
## ROI 범위 수정
ROI 범위를 수정하는 방법:
1. 해당 서버의 `task.json` 파일을 엽니다. 예를 들어 KR 클라이언트의 `task.json` 파일 위치는 `MaaAssistantArknights\resource\global\YoStarKR\resource\tasks.json` 입니다.
2. 수정해야 할 ROI 범위에 해당하는 작업을 찾고 해외 게임 인터페이스의 스크린샷을 사용하여 증폭된 ROI에 따라 `roi` 범위의 크기를 조정합니다.
3. 일반적으로, `roi` 범위를 수정할 필요가 없지만 텍스트와 중국어 클라이언트 버전 간의 크기 차이가 너무 클 경우 수정해야 할 수도 있습니다.
4. 해당 해외 클라이언트의 `task.json` 파일에 작업이 없는 경우 작업을 추가하고 적절한 값으로 `roi` 필드를 작성합니다.
## 설정 저장 및 소프트웨어 재시작
변경한 후 변경 내용을 적용하려면 설정을 저장하고 소프트웨어를 다시 시작해야 합니다. 이렇게 하려면 소프트웨어를 다시 시작하고 파일을 다시 로드하거나 소프트웨어 디렉터리에 새 `DEBUG.txt` 파일을 생성합니다. 이렇게 하면 "Link Start!" 단추를 누를 때마다 템플릿과 파일이 다시 로드되므로 소프트웨어를 다시 시작할 필요가 없습니다.
성공 여부 확인하기:
1. 소프트웨어의 작동 여부 확인을 통해 해외 서버에서 제대로 작동하는지 확인합니다.
2. 제대로 작동하지 않는 경우 변경 사항이 올바른지 확인하거나 로그를 보고 무엇이 잘못되었는지 확인해야 합니다.
## 로그 분석
`task.json` 파일을 수정했지만 프로그램이 여전히 제대로 작동하지 않는 경우 로그를 확인하여 오류를 찾고 그에 따라 해당 작업을 수정하는 것이 도움이 될 수 있습니다. 로그 파일은 일반적으로 소프트웨어의 루트 디렉터리에 있으며 이름은 `asst.log` 입니다. MAA를 직접 컴파일한 경우, 컴파일할 때 선택한 컴파일 모드에 따라 `\x64\Release` 또는 `\x64\RelWithDebInfo` 디렉터리에 있을 수 있습니다.
로그를 분석하면 프로그램의 문제를 식별하는 데 도움이 될 수 있습니다. 다음은 로그 예제입니다:
```log
[2022-12-18 17:43:17.535][INF][Px7ec][Tx15c8] {"taskchain":"Award","details":{"to_be_recognized":["Award@ReturnTo","Award","ReceiveAward","DailyTask","WeeklyTask","Award@CloseAnno","Award@CloseAnnoTexas","Award@TodaysSupplies","Award@FromStageSN"],"cur_retry":10,"retry_times":20},"first":["AwardBegin"],"taskid":2,"class":"asst::ProcessTask","subtask":"ProcessTask","pre_task":"AwardBegin"}
[2022-12-18 17:43:18.398][INF][Px7ec][Tx15c8] Call ` C:\Program Files\BlueStacks_nxt\. \HD-Adb.exe -s 127.0.0.1:5555 exec-out "screencap | gzip -1" ` ret 0 , cost 862 ms , stdout size: 2074904 , socket size: 0
[2022-12-18 17:43:18.541][TRC][Px7ec][Tx15c8] OcrPack::recognize | roi: [ 500, 50, 300, 150 ]
[2022-12-18 17:43:18.541][TRC][Px7ec][Tx15c8] Ocr Pipeline with asst::WordOcr | enter
[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] Ocr Pipeline with asst::WordOcr | leave, 93 ms
[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] OcrPack::recognize | raw: [{ : [ 0, 0, 300, 150 ], score: 0.000000 }]
[2022-12-18 17:43:18.634][TRC][Px7ec][Tx15c8] OcrPack::recognize | proc: []
[2022-12-18 17:43:18.637][TRC][Px7ec][Tx15c8] asst::ProcessTask::_run | leave, 1101 ms
[2022-12-18 17:43:18.638][TRC][Px7ec][Tx15c8] ready to sleep 500
[2022-12-18 17:43:19.144][TRC][Px7ec][Tx15c8] end of sleep 500
[2022-12-18 17:43:19.144][TRC][Px7ec][Tx15c8] asst::ProcessTask::_run | enter
```
이 로그에서 다음 사실을 확인할 수 있습니다:
- `taskchain` 는 현재 진행 중인 작업을 나타냅니다.
- `details` 는 인식할 필드(`to_be_recognized`)와 현재 재시도 횟수 (`cur_retry`), 그리고 총 재시도 횟수(`retry_times`)를 나타냅니다.
- `first` 는 작업의 시작을 나타냅니다.
- `taskid` 는 작업에 부여된 ID 번호입니다.
- `class``subtask` 는 각각 작업의 클래스와 하위 작업을 나타냅니다.
- `pre_task` 는 이전 작업을 나타냅니다.
또한, 명령의 실행 (예: `Call`) 과 `OCR` 정보 (예: `OcrPack::recognize`) 가 로그에 기록됩니다.
예를 들어, 이 로그에서, `"to_be_recognized"`,`"cur_retry":3,"retry_times":20` 은 작업이 10번 인식 시도되었음을 의미하며, 최대 횟수는 20회입니다. 최대 횟수에 도달하면 작업을 건너뛰고 오류가 보고되고 다음 작업이 수행됩니다. 이전 작업에 문제가 없으면 여기 인식에 문제가 있을 가능성이 높습니다. 이 문제를 해결하려면 로그에 언급된 작업에 해당하는 `템플릿` 파일이 있는지, 해당 작업의 `text` 필드가 잘못되었는지, 작업 인식을 위한 `roi` 범위가 잘못되었는지 확인하고 필요한 수정을 수행할 수 있습니다.
해당 템플릿 이미지를 보면, EN 클라이언트 템플릿 폴더에 이 이미지에 대한 템플릿이 있지만 크기가 ZH-CN 클라이언트의 템플릿 폴더에 있는 이미지보다 클 수 있습니다. 이로 인해 ZH-CN 클라이언트의 `roi` 가 EN 클라이언트에서 인식되지 않을 수 있으므로 EN 클라이언트의 `task.json` 파일에서 해당 작업의 `roi` 를 EN 클라이언트의 이미지 크기와 일치하도록 수정해야 할 수 있습니다.
## 변경사항 제출
[Github Pull Requst 가이드](./development.md#github-pull-request-진행-과정)을 참고하세요!

View File

@@ -0,0 +1,127 @@
---
order: 3
icon: mingcute:git-pull-request-fill
---
# 웹 기반 PR 가이드
::: warning
이 가이드는 많은 개념을 단순화하여 더 많은 사람들이 실제로 사용할 수 있도록 설계되었습니다. 때로는 꽤 불안불안한 ~~하지만 간단한~~ 조치들과 약간 부정확한 설명이 있을 수 있으므로 전문가 분들의 이해를 부탁드립니다.
만약 Git 사용 경험이 있고 프로그래밍 기초를 가지고 계시다면 ~~그럼 당신은 왜 보고 있나요🔨~~, 약간 더 발전된 가이드인 [Github Pull Request 진행과정](./development.md#github-pull-request-진행-과정)을 확인해주세요.
:::
소소한 GitHUb Pull Request 사용 가이드 (\*´▽`)
## 기본 개념 및 용어 설명
장에서는 다소 지루한 내용을 다루고 있습니다. 관심 없으면 바로 실제 조작 부분으로 건너뛸 수 있으며, 이해되지 않는 부분은 나중에 다시 찾아보세요.
### Repository (저장소)
repo로도 알려져 있으며 코드 및 다른 리소스 파일을 저장하는 곳입니다.
👇 현재 이 웹 페이지 및 그 내용 전체가 MAA의 저장소입니다 (일반적으로 MAA의 기본 저장소로 불립니다).
![image](https://user-images.githubusercontent.com/18511905/193747349-5964bd12-de3c-4ce7-b444-29b0bd104acc.png)
### Fork (복사)
단어 그대로 MAA의 코드를 복사하고 나서 수정 등의 작업을 수행할 수 있습니다. 원본을 망치지 않도록 조심하세요.
그러나 중국어로 "복사"라는 용어를 사용할 때는 일반적으로 "복사"라는 용어를 생각합니다.또한 "fork"라는 명확한 번역이 없으므로 일반적으로 영어를 사용합니다. 예를 들어 "코드를 fork하여 복사합니다."
복사한 것은 `MAA (1)` (bushi)입니다.
원래 저장소와 구별하기 위해 일반적으로 원래 MAA 저장소를 "원본 저장소", "원격 저장소", "상위 저장소"로 지칭합니다.
각 사람이 자신의 복사본을 만들 수 있기 때문에 복사본을 "개인 저장소"로 지칭합니다.
![image](https://user-images.githubusercontent.com/18511905/193750507-b8167df5-7a70-48d4-ba69-5dda8327e8ec.png)
### Pull Request
PR로도 알려져 있으며, "풀 리퀘스트"라는 용어는 너무 길고 타이핑 하기 싫어서 ~~글자 수가 많고 너무 힘들어~~ 그래서 모두 간단하게 "PR"이라고 부릅니다.
앞서 fork(복사)한 개인 저장소에서 수정한 내용을 주 저장소에 제공하려면 PR을 엽니다.
물론 "요청"이니까 승인이 필요합니다. MAA 팀의 분들이 당신의 변경 사항에 대해 몇 가지 의견을 제시할 수 있습니다. 물론 우리의 의견이 모두 옳은 것은 아니며, 합리적으로 논의합니다~
👇 아래는 현재 전문가들이 제시한 PR을 대기 중인 상태입니다.
![image](https://user-images.githubusercontent.com/18511905/193750539-9106d425-2087-4116-a599-61904690718b.png)
### Conflict (충돌)
가정해 봅시다. 원 저장소에는 A 파일이 있으며 내용이 111입니다. 당신은 이를 fork하여 내용을 222로 변경했지만, PR을 제출하기 직전에 누군가가 fork하여 PR을 제출하고 A 파일을 333으로 변경했습니다.
이 경우 둘 다 A 파일을 수정했으며 수정 사항이 다르므로 누구의 것을 사용할지 결정해야 합니다. 이것이 충돌입니다.
충돌 해결은 꽤 복잡하지만 여기서는 개념을 설명하기 위해만 언급하며 실제로 발생할 때 무슨 일이 일어나는지 이해할 수 있도록 하겠습니다. 해결 방법에 대해서는 현재 설명하지 않겠습니다.
## 웹 기반 PR 작업 전체 프로세스
1. 먼저 MAA 주 저장소로 이동하여 코드를 fork합니다.
![~ NKHB1CIE8`G(UK@ %3`H](https://user-images.githubusercontent.com/18511905/193751017-c052c3d4-fe77-433c-af21-eb8138f4b32e.png)
2. "마스터 브랜치만" 옵션을 해제한 다음 Fork를 클릭합니다.
![20221004144039](https://user-images.githubusercontent.com/18511905/193751300-ba9890fd-0916-4c85-8a46-756e686608b1.png)
3. 이제 개인 저장소로 이동하면 제목이 "YourName/MaaAssistantArknights"이고 아래에 한 줄짜리 작은 글씨로 "forked from MaaAssistantArknights/MaaAssistantArknights" (MAA 주 저장소에서 복제됨)이라고 표시됩니다.
![image](https://user-images.githubusercontent.com/18511905/193751864-0d2d0caf-b5ef-4c91-9331-d9827f23f36b.png)
4. dev 브랜치로 전환합니다. (브랜치 개념은 이 문서와는 관련이 없으며~~사실 나는 귀찮아서 쓰지 않았습니다~~, 관심이 있다면 검색하여 알아보세요. 여기에서는 그냥 이렇게 조작하면 됩니다. 원리를 고려할 필요는 없습니다)
![image](https://user-images.githubusercontent.com/18511905/193752379-90d5b317-b1aa-4563-b8b0-583c78373f9b.png)
5. 수정하려는 파일을 찾아 "Go to file"을 클릭하여 전역 검색을 수행하거나 아래 폴더에서 직접 찾을 수 있습니다. (파일의 위치를 알고 있다면)
![image](https://user-images.githubusercontent.com/18511905/193752691-7102a405-dc08-4dce-9617-7f862b0b32b9.png)
6. 파일을 열면 파일 오른쪽 상단의 ✏️을 클릭하여 편집합니다.
![image](https://user-images.githubusercontent.com/18511905/193752862-a9cf6019-b363-4c22-b7c7-35f4aca7377f.png)
7. 수정하세요! (리소스 파일과 같은 경우 먼저 컴퓨터에있는 MAA 폴더에서 수정 사항을 테스트 한 다음 웹 페이지로 복사하여 잘못된 수정을 방지하세요)
8. 수정이 완료되면 맨 아래로 스크롤하여 수정 내용을 적습니다.
![image](https://user-images.githubusercontent.com/18511905/193754154-b21f4176-1418-49c8-87a3-dab088868fdc.png)
9. 두 번째 파일을 수정해야합니까? 수정 후 오류가 발생하여 수정을 다시하고 싶습니까? 전혀 문제가되지 않습니다! 5-8을 반복하세요!
10. 모두 완료되면 PR을 제출하세요! Pull Request 탭을 클릭합니다.
Compare & Pull Request 버튼이 있으면 좋지만 없어도 걱정하지 마세요. 아래의 New Pull Request를 클릭하면 됩니다. (11단계 참조)
![image](https://user-images.githubusercontent.com/18511905/193755450-59137215-4e0b-4eca-9ec9-8b35b52cd5ff.png)
11. 이제 주 저장소로 이동하여 제출할 PR을 확인합니다.
아래 그림에서 화살표가 있는 곳은 오른쪽에 개인 이름/MAA의 dev 브랜치를 주 저장소/MAA의 dev 브랜치에 병합하는 것입니다.
그런 다음 제목, 수정한 내용 등을 작성하고 확인을 클릭합니다.
![20221004151004](https://user-images.githubusercontent.com/18511905/193756875-556df699-96b3-411f-815e-47050e283f4d.png)
12. MAA 팀의 전문가들의 검토를 기다립니다! 물론 그들도 의견을 제시 할 수 있습니다.
👇 예를 들어(오로지 오락을 위한 것이니 진지하게 받아들이지 마세요)
![image](https://user-images.githubusercontent.com/18511905/193757006-75170e78-4c8d-4cd2-b8eb-ca590ea7aa50.png)
13. 만약 전문가들이 몇 가지 작은 문제를 수정하라고 말한다면 개인 저장소로 돌아가 이전의 dev 브랜치로 이동하여 3-9 단계를 반복하세요!
당신의 현재 PR은 여전히 검토 대기 중이므로 나중에 수정 사항이 이 PR에 직접 반영됩니다.
👇 예를 들어 아래에서 "재수정 데모"라는 새로운 내용이 추가된 것을 볼 수 있습니다.
![image](https://user-images.githubusercontent.com/18511905/193757668-4064273c-576d-4259-bbaa-e9f65ae486c1.png)
14. 전문가들의 승인을 기다리면 모두 완료됩니다! **버전이 출시**되면 당신의 GitHub 프로필 사진이 자동으로 기여자 목록에 추가됩니다. 모든 분들의 자비로운 공헌에 감사드립니다!
~~왜 모든 사람들이 이중 인격이야, 오 나도 그렇지, 그럼 괜찮아~~
::: tip 기여자
개발/테스트에 참여한 모든 친구들에게 감사드립니다. 여러분의 도움으로 MAA가 점점 더 좋아지고 있습니다! (\*´▽ )
[![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights&max=114514&columns=15)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors)
:::
15. 다음에 다른 PR을 제출하려면 먼저 dev 브랜치로 전환한 다음 아래 그림과 같이 진행하세요.
::: warning
이 조작은 개인 저장소를 주 저장소와 완전히 동일한 상태로 강제로 동기화합니다. 이것은 충돌을 해결하는 가장 간단하고 효과적인 방법입니다. 그러나 개인 저장소에 이미 추가한 것이 있으면 그것이 삭제됩니다!
:::
충돌을 일으키지 않을 경우 오른쪽에 초록색 `Update Branch` 버튼을 사용하세요.
에서 설명한 이 모든 것을 모르거나 알 필요가 없다면 왼쪽의 버튼을 클릭하세요.
![image](https://user-images.githubusercontent.com/18511905/194709964-3ea0d5b0-1bfe-4d0e-a1dc-bf4f735af655.png)
그러면 3-14 단계를 반복하여 수정하고 PR을 제출하면 됩니다~