소개
현지화는 게임 개발에서 가장 중요한 측면 중 하나입니다. 전 세계 시청자의 수가 증가함에 따라 플레이어는 모국어로 게임을 경험하기를 희망하며, 효과적인 현지화는 사치가 아니라 필수적입니다. 그러나 이것은 단지 텍스트를 번역하는 것이 아닙니다. 기술적 인 문제, 문화적 뉘앙스 및 워크 플로 최적화를 해결함으로써 여러 언어간에 매끄럽고 원활한 경험을 확보해야합니다.
이 기사는 Unreal Engine에서 현지화의 복잡성을 설명하고 Legend 2의 Wizard에 대한 나의 경험을 바탕으로 통찰력을 공유합니다. 텍스트 수집 및 관리에서 사기 형식, 성별 특이 적 언어, 글꼴 처리와 같은 문제 해결에 이르기까지. 지연이 발생할 수있는 주요 영역과 지연을 줄이는 방법은 다음과 같습니다.
이것은 소개 기사가 아니기 때문에 비현실적인 기본 현지화 도구를 이해하기를 바랍니다. 이 테마를 처음으로 사용하면 다음 리소스가 기본을 배우는 데 적합합니다. 준비가되면 현지화 프로세스를보다 효과적으로 계획하는 데 도움이되는 실제 작업과 모범 사례를 자세히 살펴 보겠습니다.
텍스트 모음
텍스트 모음은 쉽습니다. 현지화 대시 보드를 열고[テキストを収集]완료하려면 버튼을 누릅니다.
그러나 두 가지 주요 문제가있어 많은 시간이 걸립니다.
1. 관련없는 문장
무례한 연금에는 관련이없는 교과서가 많이 있습니다. 우리의 경우 컬렉션 결과에 표시된 텍스트의 약 80%가 관련이 없었습니다. 이것들은 게임 컨텐츠가 아닌 엔진의 현지화의 목적으로 보였지만 필터 설정에 관계없이 표시되었습니다.
이를 처리하려면 텍스트 수집 명령으로 텍스트를 검색 할 수있는 곳을 필터링해야합니다. 개발의 후반부에서는 어려운 작업이 될 수 있으며 필터가 모든 게임 컨텐츠를 다루는 것이 어렵습니다.
2. 잘못된 텍스트 유형
또 다른 일반적인 문제는 많은 잘못된 유형의 텍스트가 생성된다는 것입니다. 비현실적으로, 모든 현지화 된 텍스트는 ftext 유형이어야하지만 개발자는 대신 fstring을 사용할 수 있습니다. 더 나쁜 것은, 처음에는 ftext를 사용한 다음 fstring을 사용하여 값을 변경할 수 있습니다. FTEXT와 FSTRING 사이의 변환이 매우 쉽기 때문에 쉽습니다.
처음부터 팀 전체가 Unreal의 현지화의 원리를 이해하고 현지화 과정을 감독하는 사람들을 배정하는 것이 좋습니다. “텍스트 모음”명령을 정기적으로 실행하고 필터가 대부분의 텍스트를 포함하는지 확인해야합니다. 프로젝트의 규모가 증가함에 따라 현지화가 필요한 교과서를 찾기가 매우 어려워집니다.
나중에 AI는 텍스트가 텍스트를 다른 언어로 변환 할 수 있도록 파이프 라인을 자동화하는 방법을 설명하고 QA 팀이 다른 언어로 게임을 테스트하는 동안 현지화되지 않은 게임을 테스트하는 방법을 찾습니다.
ftext vs fstring hell
위의 언급 자습서를 보면 fstring을 ftext로 변환하는 것이 나쁜 생각이라는 것을 알고 있습니다. 그러나이 방법은 매우 쉽기 때문에 다시 검토하고 싶습니다.
ftext가 fstring에 캐스트되어 함수로 전달 된 경우가 있었고, 그 후 ftext는 함수로 뒷받침되었습니다. 텍스트는 원래 문자열에 액세스하거나 네트워크를 통해 다른 언어 클라이언트로 보내지 않는 한 일반적인 ftext처럼 보입니다.
텍스트 유형이 fstring에서 ftext로 변경되거나 그 반대의 경우, FSTRING에서 FTEXT로의 캐스트는 청사진 시스템에 의해 자동으로 수행됩니다. 그러므로 항상 이러한 전환에주의를 기울이고 그들이 찾는 즉시 고치십시오.
FTEXT에 FSTRING을 캐스팅하는 데는 의미있는 사례 (예 : 화면에 디버그 텍스트 표시)가 있지만 일반적으로 위험한 신호입니다.
인간의 언어가 엉망입니다!
우리는 매우 늦은 개발 단계에서 성별 사용자 정의를 도입하기로 결정했습니다. 게임 플레이 관점에서, 여성 모델을 만들고 UI를 추가하여 플레이어가 마법사의 성별을 선택할 수 있도록 간단하게 보였습니다. 불행히도 끝났습니다.
페르시아어와 쿠르드족과 같은 일부 언어는 중립적 인 성별이지만 프랑스어와 스페인어는 아닙니다. 성별 사용자 정의가 도입되면서 캐릭터와 관련된 모든 캐릭터를 다시 변환해야했습니다. 이는 캐릭터의 성별이 실행 시점에 결정되었고 텍스트는 성별에 따라 동적으로 필요했기 때문입니다.[1]
UNRIAR은 이미 성별 (남성, 여성, 중립) 구조를 지원하고 있습니다. 형식 텍스트 함수의 var 매개 변수로 etextgender를 전달하면 완전히 작동합니다. 그러나이 기능은 사용되지 않았습니다.
우리의 개발 언어는 영어로되었으며 성별에 의존하지 않았습니다. 그러나 Unreal의 구조를 사용하여 성별을 지원하려면 모든 교과서에서 성별 VAR을 정의해야했습니다. 이를 통해 EtextGender를 형식 텍스트 함수로 전달하여 필요에 따라 다른 언어로 사용할 수 있습니다. 이 접근법은 잊기 쉽기 때문에 개발의 후반에이를 구현하려면 많은 노력이 필요합니다.
대신, 우리는 원본 텍스트에 존재하지 않을 수있는 사용자 정의 구성을 만들고 구성을 분석하고 문자의 성별에 따라 올바른 문자열을 선택할 수있는 프로세서를 구현했습니다. 결과적으로 영어 교과서를 깨끗하게 유지할 수있었습니다. 이 구조는 비현실적인 구조와 매우 유사합니다 [masculine|feminine]
또한이 구조는 유연합니다. 필요하지는 않았지만 다음 헤더를 소개 할 수 있습니다. [header: masculine|feminine|neuter] 화자의 성별과 목표를 지원합니다.
다루어야 할 또 다른 문제는 복수 및 단수입니다. 비현실적인 수치 값 |
특정 언어에서는 다른 작업이 발생할 수 있습니다. 예를 들어 터키어에서는 기호가 숫자보다 먼저 발생합니다 (예 : 5 % 대신 % 5). 또한, 단어가 공간으로 분리되지 않는 중국어와 같은 중국어에서는 텍스트 강조가 효과가 없을 수 있습니다. 이러한 문제는 찾기가 어렵 기 때문에 시간이 걸리십시오.
세례반
다양한 언어로 글꼴을 처리하는 것은 실제로 고통스러운 문제입니다.
게임의 모든 언어를 지원하는 단일 글꼴을 만들 수 있습니다. 예를 들어, 중국어에 사용 된 글꼴이 영어 글꼴과 겹칠 수 있고 결합하면 불일치가 발생할 수 있기 때문에 이것은 좋은 생각이 아닙니다. 글꼴을 깔끔하게 분리 할 수 있더라도 글꼴로지지 될 수있는 글리프의 수는 제한적입니다.
또 다른 방법은 Unreals Asset 현지화를 사용하여 현지화 된 버전의 글꼴 자산을 만드는 것입니다. 불행히도,이 접근법에는 고유 한 단점이 있습니다. 게임의 게임을 변경하면 게임의 텍스트가 즉시 변경되지만 비현실적으로 게임을 다시 시작할 때만 현지화 된 글꼴 자산을로드합니다. 결과적으로 플레이어는 게임을 다시 시작하거나 원래 언어로 돌아갈 때까지 물음표에 표시됩니다.
더 나은 솔루션은 Unreal의 글꼴 처리기 기능을 사용하는 것입니다. 이를 통해 현재 로케일을 기반으로 특정 글꼴을 선택할 수 있습니다. 이것은 작동하지만 이상적이지는 않습니다. 예를 들어, 설정 메뉴에서 각 언어의 이름은 현재 언어와 기본 스크립트 (예 : “Palus (ف)”)로 표시 될 수 있습니다. 글꼴이 로케일을 기준으로 만 선택된 경우 모든 글꼴은 페르시아 문자를 지원해야합니다. 지원하지 않으면 물음표가 표시됩니다.
가장 좋은 방법은 무엇입니까?
내가 찾은 가장 좋은 방법은 유니 코드 범위를 사용하고 각 글꼴을 특정 범위에 할당하는 것입니다.
기본 글꼴은 모든 유럽 언어를 다루지 만 중국어와 일본어는 더 어려웠습니다. 간지의 유니 코드 범위는 혼합되었으며 중국어, 전통 중국 및 일본어가 동일한 범위를 사용하기 때문에 각 언어에 대한 개별 글꼴을 사용하는 것은 불가능했습니다. 나는 다양한 글꼴을 시도했지만 일부 글꼴은 중국어와 일본어를 모두 지원하겠다고 약속했지만 텍스트가 누락되었다고 테스트했습니다. 일부 글꼴은 견딜 수 있었지만 중국 사용자는 읽을 수 없었습니다. 결국 번역가는 도움을 주었고 표준 중국 글꼴을 제공하기 위해 다음 링크를 제공했습니다 : https://github.com/wordshub/free-font.
번역 파이프 라인
번역 팀과의 협력은 관리 및 소프트웨어 개발에서 어려운 작업입니다.
프로그래머는 팀과 번역 팀 간의 커뮤니케이션을 촉진하는 파이프 라인을 만들어야합니다. 각 팀의 구성은 다르므로 세부 사항을 제공하지 않지만 일반적인 조언을 제공합니다.
우선, 번역 팀이 사용하는 소프트웨어를 이해하십시오. 인코딩이 전체 파이프 라인과 일치하는지 확인하십시오. 그렇지 않으면, 라인 브레이크 대신 숫자를 표시하거나 손상된 교과서와 같은 문제가있을 수 있습니다. 경험의 규칙은 전환을 직접 처리하는 것입니다. 예를 들어, 사용자가 Excel을 사용하는 경우 CSV 대신 Excel 파일을 제공합니다 (특히 Microsoft Excel은 CSV를 가져올 때 인코딩이 필요하지 않음). 워크 플로에 따라 여러 변환기를 만들거나 자체 형식 (버전 제어, 태깅 등)을 만들어야 할 수도 있습니다.
이상적인 워크 플로는 번역 팀에 하나의 파일을 제공하고 번역 후 동일한 파일을 얻는 것입니다. 그러나 번역 마감일은 일반적으로 일반 출시일 이전이므로 일부 콘텐츠는 준비되지 않을 수 있습니다. 이 경우 문자열 테이블을 사용할 수 있습니다. 텍스트를 작성하고 내용이 준비되면 현지화 된 텍스트 문자열 테이블을 참조 할 수 있습니다. 그러나 번역이 진행됨에 따라 팀이 일부 텍스트를 간과하고 있으며 추가 파일을 제공해야한다는 것을 알고있을 수 있습니다. 여러 파일을 관리하는 방법은 파이프 라인에 따라 다르지만 준비하십시오.
강력한 파이프 라인을 구축하는 데 시간이 걸리며 여러 번 개선해야하지만 프로세스 속도를 크게 높일 수 있습니다.
비현실적인 현지화 대시 보드 사용을 시작할 수 있습니다. 엔진을 열지 않고 파이썬 스크립트로 쉽게 호출 할 수 있습니다. 문서 끝에 간단한 예입니다.
이러한 구성 요소를 사용하면 모든 종류의 흥미로운 것을 찾을 수 있습니다. 예를 들어, 매일 밤 교과서를 내보내고 변환하여 자동으로 번역 팀에 업로드 할 수 있습니다. 현지화 마감일 후에는 병합 파이프 라인을 조정하여 단어 수를 조정할 수 있습니다. 새 텍스트가 추가되면 병합을 중지 할 수 있습니다.
또 다른 유용한 응용 프로그램은 모든 텍스트를 수집하고, AI 번역 서비스를 사용하고, 회사의 QA 팀을 테스트하여 번역되지 않은 텍스트를 식별합니다.
마지막으로, 게임을 구축 할 때 텍스트 컴파일이 트리거되지 않으므로 수동으로 수행해야합니다. 또는 Compiletext를 자동으로 호출하도록 빌드 파이프 라인을 구성하는 것이 좋습니다.
플랫폼에 대한 고려
PlayStation 또는 Xbox와 같은 플랫폼에 게임을 게시하려는 경우 하드웨어, 소프트웨어 및 개념이 플랫폼간에 다양한 방식으로 참조됩니다. 플랫폼 소유자는 모든 지원되는 언어의 플랫폼 표준을 따르기를 희망합니다. 그렇지 않으면 게임이 거부 될 수 있습니다. 예를 들어, “컨트롤러”라는 단어는 모든 플랫폼에서 간단히 사용할 수 없습니다. “컨트롤러”라는 용어는 각 플랫폼마다 다르기 때문에 게임에서 플랫폼 특이 적 용어를 참조해야합니다.
현재 플랫폼을 매개 변수로 수신하거나 플랫폼을 기반으로 적절한 용어를 선택하는 구성을 만들거나 각 플랫폼에 대해 다른 텍스트를 사용할 수 있습니다.
각 플랫폼에 대한 다양한 언어로 본 이용 약관의 테이블을 작성하고 프로세스 초기에 현지화 팀을 제공하는 것이 좋습니다. 나중에 모든 텍스트를 확인하면 시간이 걸리고 실수를합니다.
결론
현지화는 어렵고 시간이 소요되므로 준비해야합니다. 이것은 현대 게임 개발의 필수 부분입니다. 플레이어는 모국어로 게임에 참여하기를 희망하며, 출시 시점에 제공하지 않으면 부정적인 리뷰와 손실로 이어질 수 있습니다. 우리는이 기사가 문제와 솔루션에 대한 귀중한 통찰력을 제공하고 명확한 이해를 통해 현지화에 대해 노력하기를 바랍니다.
나는 당신이 당신의 현지화 노력에 성공하기를 바랍니다.