FastAsyncWorldEdit: 두 판 사이의 차이

새 문서: '''FastAsyncWorldEdit'''('''FAWE''')는 WorldEdit의 포크로, 성능과 메모리 사용량을 대폭 개선하고 다양한 추가 기능을 제공하는 마인크래프트 플러그인이다. 비동기 처리를 통해 대규모 편집 작업을 수행할 때도 서버 성능에 미치는 영향을 최소화한다. IntellectualSites에서 개발한 이 플러그인은 특히 대규모 건축 프로젝트나 지형 편집 작업에서 탁월한 성능을 보여주며,...
 
잔글 문자열 찾아 바꾸기 - "분류:마인크래프트" 문자열을 "분류:마인크래프트/플러그인" 문자열로
 
163번째 줄: 163번째 줄:
* [https://www.youtube.com/watch?v=RPZIaTbqoZw FAWE 브러시 튜토리얼 영상]
* [https://www.youtube.com/watch?v=RPZIaTbqoZw FAWE 브러시 튜토리얼 영상]


[[분류:마인크래프트]]
[[분류:마인크래프트/플러그인]]

2025년 7월 23일 (수) 02:10 기준 최신판

FastAsyncWorldEdit(FAWE)는 WorldEdit의 포크로, 성능과 메모리 사용량을 대폭 개선하고 다양한 추가 기능을 제공하는 마인크래프트 플러그인이다. 비동기 처리를 통해 대규모 편집 작업을 수행할 때도 서버 성능에 미치는 영향을 최소화한다. IntellectualSites에서 개발한 이 플러그인은 특히 대규모 건축 프로젝트나 지형 편집 작업에서 탁월한 성능을 보여주며, 기존 WorldEdit와 완벽한 호환성을 유지하면서도 수십 배에서 수백 배 빠른 처리 속도를 제공한다.[1] WorldEdit에 의존하는 다른 플러그인들도 FAWE를 설치하면 자동으로 성능 향상의 혜택을 받게 되는데, 이는 FAWE가 WorldEdit API를 그대로 유지하면서 내부 처리 방식만을 최적화했기 때문이다.

역사

FAWE는 2016년 Empire92(NotMyFault)에 의해 처음 개발되었다. 당시 대규모 서버에서 WorldEdit 사용 시 발생하는 성능 문제를 해결하기 위해 시작된 프로젝트였다.

주요 버전 변천사:

  • 2016년: 첫 릴리즈, 기본적인 비동기 처리 구현
  • 2017년: 다중 클립보드, 브러시 시스템 개선
  • 2018년: 1.13 업데이트 대응, 새로운 블록 시스템 지원
  • 2020년: 1.16 네더 업데이트 지원, 성능 최적화
  • 2023년: 1.20 업데이트 지원, 모던 자바 버전 대응

주요 기능

성능 개선

FAWE의 가장 큰 특징은 비동기 처리를 통한 성능 개선이다. 다음과 같은 최적화 기법을 사용한다:

  • 청크 단위 처리: 블록 단위가 아닌 청크 섹션 단위로 작업 처리
  • 멀티스레딩: CPU 코어를 최대한 활용하여 병렬 처리
  • 메모리 최적화: 압축과 버퍼링을 통한 메모리 사용량 감소
  • 지연 실행: 필요한 시점까지 실제 작업을 지연시켜 최적화

추가된 기능들

클립보드 시스템

  • 웹 통합: 클립보드를 웹으로 업로드/다운로드 가능
  • 다중 클립보드: 여러 클립보드를 동시에 관리
  • 지연 복사: `//lazycopy` 명령으로 대규모 영역도 즉시 복사

향상된 브러시

브러시 유형 설명 명령어
Blend 지형을 부드럽게 혼합 `/br blendball`
Spline 곡선을 따라 객체 생성 `/br spline`
Height 지형 높이 조절 `/br height`
Layer 여러 층으로 표면 덮기 `/br layer`
Shatter 지형을 불규칙하게 분할 `/br shatter`

마스크와 패턴

FAWE는 WorldEdit의 마스크와 패턴 시스템을 대폭 확장했다:

  • 표현식 마스크: 수학적 표현식을 사용한 복잡한 마스크
  • 각도 마스크: 지형 경사도에 따른 선택
  • 노이즈 패턴: Simplex 노이즈를 활용한 자연스러운 패턴
  • 그라디언트 패턴: 색상이나 블록이 점진적으로 변하는 패턴

시각화 기능

  • 실시간 미리보기: 편집 결과를 실행 전에 확인
  • 브러시 시각화: 브러시 영향 범위를 유리 블록으로 표시
  • 진행률 표시: 대규모 작업의 진행 상황 실시간 확인

설치 방법

요구 사항

  • Minecraft 서버: Spigot, Paper, 또는 호환 서버
  • Java: 버전 8 이상 (최신 버전은 Java 17+ 권장)
  • RAM: 최소 2GB, 대규모 작업 시 4GB 이상 권장

설치 과정

  1. Modrinth, SpigotMC, 또는 CurseForge에서 최신 버전 다운로드
  2. 서버의 `plugins` 폴더에 JAR 파일 복사
  3. 서버 재시작
  4. `plugins/FastAsyncWorldEdit` 폴더에서 설정 파일 확인

권한 설정

기본적으로 WorldEdit의 권한 노드를 그대로 사용하며, FAWE 고유 기능에는 `fawe.*` 권한이 추가된다:

  • `fawe.admin`: 모든 FAWE 관리 기능
  • `fawe.limit.*`: 제한 설정 관련 권한
  • `fawe.bypass`: 제한 우회 권한
  • `fawe.tips`: 팁 메시지 표시

성능 모드

FAWE는 세 가지 배치 모드를 제공한다:

  1. 블록 모드 (Bukkit-API): 가장 느리지만 호환성이 높음
  2. 청크 모드 (NMS): 기본 모드, 청크 섹션 단위로 처리[2]
  3. 월드 모드 (CFI): 새로운 월드나 지역 생성 시 사용

기본적으로 청크 모드가 사용되며, 이는 대부분의 상황에서 최적의 성능을 제공한다.

설정 최적화

config.yml 주요 설정

# 히스토리 설정
history:
  # 압축 레벨 (0-9, 높을수록 압축률 증가)
  compression-level: 3
  # 버퍼 크기 (MB)
  buffer-size: 64
  # 최대 저장 기간 (일)
  delete-after-days: 7

# 큐 설정
queue:
  # 병렬 스레드 수
  parallel-threads: 4
  # 청크당 최대 대기 시간 (ms)
  max-wait-ms: 1000

# 제한 설정
limits:
  # 최대 블록 변경 수
  max-changes: 50000000
  # 최대 엔티티 수
  max-entities: 1337
  # 최대 타일 엔티티 수
  max-blockstates: 1337

메모리 최적화 팁

  • 압축 레벨 증가: 디스크 사용량 감소, CPU 사용량 증가
  • 버퍼 크기 조정: RAM이 충분하면 증가, 부족하면 감소
  • 히스토리 제한: `//fast` 명령으로 히스토리 비활성화 가능

개발자 API

FAWE는 WorldEdit API와 완벽히 호환되며, 추가로 비동기 처리를 위한 API를 제공한다:

// WorldEdit API를 비동기로 사용
CompletableFuture<EditSession> future = WorldEdit.getInstance()
    .getEditSessionFactory()
    .getEditSessionAsync(world, -1);

// FAWE 전용 비동기 래퍼
FaweAPI.getTaskManager().async(() -> {
    // 비동기 작업 수행
    EditSession session = new EditSessionBuilder(world)
        .fastmode(true)
        .build();
    // 편집 작업...
});

알려진 문제점

  • 일부 보호 플러그인과의 충돌: 비동기 처리로 인해 일부 보호 확인이 우회될 수 있음
  • 리소스 팩 블록: 커스텀 모델 데이터를 사용하는 블록의 처리가 불완전할 수 있음
  • 극도로 큰 작업: 수억 개 이상의 블록 작업 시 메모리 부족 가능

대안 플러그인

  • WorldEdit: 원본 플러그인, 안정성 중시
  • VoxelSniper: 지형 편집에 특화
  • goBrush: 고급 지형 편집 도구
  • Axiom: 클라이언트 사이드 편집 도구

같이 보기

각주

  1. 공식 문서에 따르면, 특정 작업에서 최대 1000배까지 빠른 성능을 보인다고 한다.
  2. NMS(Net.Minecraft.Server)는 마인크래프트 서버의 내부 코드를 직접 활용하는 방식이다.

외부 링크