Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

포팅 및 릴리스 가이드라인

이 페이지에는 게임을 릴리스하거나 새 플랫폼으로 포팅할 때 고려해야 할 사항에 대한 유용한 가이드와 체크리스트가 포함되어 있습니다.

Defold 게임을 새 플랫폼으로 포팅하거나 처음 릴리스하는 일은 대체로 간단한 과정입니다. 이론적으로는 game.project 파일의 관련 섹션이 설정되어 있는지만 확인하면 충분하지만, 각 플랫폼을 최대한 활용하려면 게임을 각 플랫폼의 특성에 맞게 조정하는 것이 좋습니다.

입력

게임을 플랫폼의 입력 방식에 맞게 조정하세요. 플랫폼에서 지원한다면 게임패드 지원 추가를 고려하세요! 또한 게임이 일시 정지 메뉴를 지원하는지 확인하세요. 컨트롤러 연결이 갑자기 끊기면 게임은 일시 정지되어야 합니다!

현지화

게임의 모든 텍스트를 번역하세요. 유럽과 아메리카 지역에 릴리스할 때는 최소한 EFIGS(영어, 프랑스어, 이탈리아어, 독일어, 스페인어)로 번역하는 것을 고려하세요. 게임 안에서 서로 다른 언어로 쉽게 전환할 수 있어야 합니다(일시 정지 메뉴를 통해).

iOS 전용 - game.project에서 Localizations를 지정해야 합니다. sys.get_info()는 이 목록에 없는 언어를 절대 반환하지 않기 때문입니다.

스토어 페이지의 텍스트도 번역하세요. 이는 판매에 긍정적인 영향을 줍니다! 일부 플랫폼에서는 게임을 이용할 수 있는 각 국가의 언어로 스토어 페이지 텍스트를 번역하도록 요구합니다.

스토어 자료

앱 아이콘

게임이 경쟁작 사이에서 돋보이도록 하세요. 아이콘은 잠재 플레이어와 처음 만나는 접점인 경우가 많습니다. 게임 아이콘으로 가득한 페이지에서 쉽게 찾을 수 있어야 합니다.

스토어 배너와 이미지

게임에는 인상적이고 흥미로운 아트를 사용하세요. 플레이어를 끌어들이는 아트를 만들기 위해 아티스트와 함께 작업하는 데 어느 정도 비용을 들일 가치가 있을 것입니다.

저장 게임

데스크톱, 모바일, 웹의 저장 게임

저장 게임과 기타 저장된 상태는 Defold API 함수 sys.save(filename, data)를 사용해 저장하고 sys.load(filename)를 사용해 로드할 수 있습니다. sys.get_save_file(application_id, name)을 사용하면 파일을 저장할 수 있는 운영체제별 위치의 경로를 얻을 수 있으며, 일반적으로 로그인한 사용자의 홈 폴더 안에 있습니다.

콘솔의 저장 게임

sys.get_save_file()sys.save()를 사용하는 방식은 대부분의 플랫폼에서 잘 동작하지만, 콘솔에서는 다른 접근 방식을 사용하는 것이 좋습니다. 콘솔 플랫폼은 보통 연결된 각 컨트롤러에 사용자를 연결하므로, 저장 게임, 업적, 기타 기능도 각각의 사용자와 연결되어야 합니다.

게임패드 입력 이벤트에는 콘솔에서 컨트롤러의 동작을 사용자와 연결하는 데 사용할 수 있는 user id가 포함됩니다.

콘솔 플랫폼과 해당 네이티브 익스텐션은 특정 사용자와 연결된 데이터를 저장하고 로드하기 위한 플랫폼별 API 함수를 제공합니다. 콘솔에서 저장하고 로드할 때는 이러한 API를 사용하세요.

파일 작업을 위한 콘솔 플랫폼 API는 일반적으로 비동기입니다. 콘솔을 타겟으로 하는 크로스 플랫폼 게임을 개발할 때는 플랫폼과 관계없이 모든 파일 작업이 비동기로 동작하도록 게임을 설계하는 것이 좋습니다. 예:

local function save_game(data, user_id, cb)
	if console then
		local filename = "savegame"
		consoleapi.save(user_id, filename, data, cb)
	else
		local filename = sys.get_save_file("mygame", "savegame" .. user_id)
		local success = sys.save(filename, data)
		cb(success)
	end
end

빌드 아티팩트

크래시를 디버깅할 수 있도록 릴리스되는 각 버전마다 디버그 심볼을 생성하세요. 이를 어플리케이션 번들과 함께 저장하세요.

어플리케이션 최적화

성능, 크기, 메모리, 배터리 사용량을 위해 어플리케이션을 최적화하는 방법은 최적화 매뉴얼을 읽어보세요.

성능

항상 타겟 하드웨어에서 테스트하세요! 게임 성능을 확인하고 필요하면 최적화하세요. 코드의 병목을 찾으려면 프로파일러를 사용하세요.

화면 해상도와 새로 고침 빈도

고정된 방향과 화면 해상도를 가진 플랫폼의 경우: 게임이 타겟 플랫폼의 화면 해상도와 종횡비에서 동작하는지 확인하세요. 화면 해상도와 종횡비가 가변적인 플랫폼의 경우: 다양한 화면 해상도와 종횡비에서 게임이 동작하는지 확인하세요. 렌더 스크립트와 카메라에서 어떤 종류의 뷰 투영을 사용하는지 고려하세요.

모바일 플랫폼에서는 game.project에서 화면 방향을 고정하거나, 게임이 landscape와 portrait 모드 모두에서 동작하는지 확인하세요.

  • 디스플레이 크기 - game.project에 설정된 기본 너비와 높이보다 더 크거나 작은 화면에서도 모든 것이 잘 보이나요?
    • 렌더 스크립트에서 사용하는 투영과 GUI에서 사용하는 레이아웃이 여기에 영향을 줍니다.
  • 종횡비 - game.project에 설정된 너비와 높이에서 나온 기본 종횡비와 다른 종횡비의 화면에서도 모든 것이 잘 보이나요?
    • 렌더 스크립트에서 사용하는 투영과 GUI에서 사용하는 레이아웃이 여기에 영향을 줍니다.
  • 새로 고침 빈도 - 게임이 60 Hz보다 높은 새로 고침 빈도의 화면에서도 잘 실행되나요?
    • game.project의 Display 섹션에 있는 vsync와 swap interval

모바일 폰과 notch 및 hole punch camera

전면 카메라와 센서를 넣기 위해 디스플레이 화면에 작은 렌즈 컷아웃을 사용하는 방식(노치 또는 hole punch camera라고도 함)이 점점 더 흔해졌습니다. 게임을 모바일로 포팅할 때는 중요한 정보가 보통 notch(화면 위쪽 가장자리 중앙)나 hole-punch(화면 왼쪽 위 영역)가 위치하는 곳에 배치되지 않도록 확인하는 것이 좋습니다. 또한 Safe Area extension을 사용해 게임 뷰를 notch나 hole-punch camera 바깥 영역으로 제한할 수도 있습니다.

플랫폼별 가이드라인

Android

게임을 업데이트할 수 있도록 keystore를 안전한 곳에 저장하세요.

콘솔

각 버전의 전체 번들을 저장하세요. 게임을 패치하려면 이 파일들이 필요합니다.

Nintendo Switch

플랫폼별 코드를 통합하세요. Nintendo Switch에는 사용자 선택 등을 위한 일부 헬퍼 기능이 포함된 별도 익스텐션이 있습니다.

Defold for Nintendo Switch는 그래픽 백엔드로 Vulkan을 사용합니다. Vulkan graphics backend를 사용해 게임을 테스트해야 합니다.

PlayStation®4

플랫폼별 코드를 통합하세요. PlayStation®4에는 사용자 선택 등을 위한 일부 헬퍼 기능이 포함된 별도 익스텐션이 있습니다.

HTML5

모바일 폰에서 웹 게임을 플레이하는 일이 점점 더 흔해지고 있습니다. 모바일 브라우저에서도 게임이 잘 실행되도록 해보세요! 또한 웹 게임은 빠르게 로드될 것으로 기대된다는 점도 중요합니다! 게임의 크기를 최적화해야 합니다. 플레이어를 불필요하게 잃지 않도록 전반적인 로딩 경험도 고려하세요.

2018년에 브라우저들은 사용자 상호작용 이벤트(터치, 버튼, 게임패드 등)가 발생하기 전까지 게임과 기타 웹 컨텐츠가 사운드를 재생하지 못하도록 하는 사운드 autoplay 정책을 도입했습니다. HTML5로 포팅할 때는 이를 고려하여 첫 사용자 상호작용 후에만 사운드와 음악 재생을 시작하는 것이 중요합니다. 사용자 상호작용 전에 사운드를 재생하려는 시도는 브라우저 개발자 콘솔에 오류로 기록되지만 게임에는 영향을 주지 않습니다.

또한 게임이 광고를 표시하는 경우 재생 중인 모든 사운드를 일시 정지해야 합니다.