game/godot

Godot - Optimizing a build for size

C/H 2018. 11. 29. 08:30

Optimizing a build for size

Rationale

Sometimes, it is desired to optimize a build for size rather than speed. This means not compiling unused functions from the engine, as well as using specific compiler flags to aid on decreasing build size. Common situations include creating builds for mobile and Web platforms.
가끔 속도보다는 크기를 위해 빌드를 최적화하는 것이 바람직합니다. 이는 엔진에서 사용하지 않는 함수를 컴파일하지 않고 특정 컴파일러 플래그를 사용하여 빌드 크기를 줄이는 것을 의미합니다. 일반적인 상황으로는 모바일 및 웹 플랫폼 용 빌드 작성이 포함됩니다.

This tutorial aims to give an overview on different methods to create a smaller binary. Before continuing, it is recommended to read the previous tutorials on compiling Godot for each platform.
이 튜토리얼은 작은 바이너리를 생성하는 여러 가지 방법에 대한 개요를 제공하는 것을 목표로합니다. 계속하기 전에 각 플랫폼에 대한 Godot 컴파일에 대한 이전 자습서를 읽는 것이 좋습니다.

Disabling 3D

For 2D games, having the whole 3D engine available usually makes no sense. Because of this, there is a build flag to disable it:
2D 게임의 경우 전체 3D 엔진을 사용할 수 있다는 것은 일반적으로 의미가 없습니다. 이 때문에 빌드 플래그를 비활성화 할 수 있습니다.

scons p=windows target=release tools=no disable_3d=yes

Tools must be disabled in order to use this flag, as the editor is not designed to operate without 3D support. Without it, the binary size can be reduced by about 15%.
편집기가 3D 지원없이 작동하도록 설계되지 않았으므로 이 플래그를 사용하려면 도구를 사용하지 않아야합니다. 이를 사용하지 않으면 바이너리 크기를 약 15 %까지 줄일 수 있습니다.

Disabling advanced GUI nodes

Most small games don't require complex GUI controls such as Tree, ItemList, TextEditor or GraphEdit. They can be disabled using a build flag:
대부분의 작은 게임은 Tree, ItemList, TextEditor 또는 GraphEdit와 같은 복잡한 GUI 컨트롤을 필요로하지 않습니다. 빌드 플래그를 사용하여 비활성화 할 수 있습니다.

scons p=windows target=release tools=no disable_advanced_gui=yes

Disabling unwanted modules

A lot of Godot's functions are offered as modules. You can see a list of modules with the following command:
Godot의 많은 기능이 모듈로 제공됩니다. 다음 명령을 사용하여 모듈 목록을 볼 수 있습니다:

scons --help

The list of modules that can be disabled will appear, together with all build options. If you are working on a simple 2D game, you could disable a lot of them:
비활성화 할 수있는 모듈 목록이 모든 빌드 옵션과 함께 표시됩니다. 간단한 2D 게임에서 작업하는 경우 많은 것을 비활성화 할 수 있습니다:

scons p=windows target=release tools=no module_bmp_enabled=no module_bullet_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_etc_enabled=no module_gdnative_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_mbedtls_enabled=no module_mobile_vr_enabled=no module_opus_enabled=no module_pvr_enabled=no module_recast_enabled=no module_regex_enabled=no module_squish_enabled=no module_tga_enabled=no module_thekla_unwrap_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_vorbis_enabled=no module_webm_enabled=no module_websocket_enabled=no

Optimizing for size instead of speed

Godot 3.1 onwards allows to compile using size optimizations. To enable this, just set the optimize flag to size:
Godot 3.1 이상에서는 크기 최적화를 사용하여 컴파일 할 수 있습니다. 이 기능을 사용하려면 optimize 플래그를 size로 설정하면됩니다.

scons p=windows target=release tools=no optimize=size

Some platforms such as WebAssembly already use this mode by default.
WebAssembly와 같은 일부 플랫폼은 이미 기본적으로 이 모드를 사용합니다.

Compiling with link-time optimization

Enabling link-time optimization produces more efficient binaries, both in terms of performance and file size. It works by eliminating duplicate template functions and unused code. It can currently be used with the GCC and MSVC compilers:
링크 시간 최적화를 사용하면 성능 및 파일 크기면에서 보다 효율적인 바이너리가 생성됩니다. 그것은 중복된 템플릿 함수와 사용하지 않는 코드를 제거함으로써 작동합니다. 현재 GCC 및 MSVC 컴파일러와 함께 사용할 수 있습니다.

scons p=windows target=release tools=no use_lto=yes

Linking becomes much slower with this option, so it should be used only for release builds.
이 옵션을 사용하면 링크가 훨씬 느려지므로 릴리스 빌드에만 사용해야합니다.

Stripping binaries

If you build from source, remember to strip debug symbols from binaries:
소스에서 빌드하는 경우 바이너리에서 디버그 기호를 제거해야합니다.

strip godot.64

Using UPX to compress binaries

If you are targeting desktop platforms, the UPX compressor can be used. This can reduce binary size considerably.
데스크톱 플랫폼을 대상으로하는 경우 UPX 압축기를 사용할 수 있습니다. 이렇게하면 바이너리 크기를 상당히 줄일 수 있습니다.

However, keep in mind that some antivirus programs may detect UPX-packed binaries as a virus. Therefore, if you are releasing a commercial game, make sure to sign your binaries or use a platform that will distribute them.
그러나 일부 바이러스 백신 프로그램은 UPX로 압축 된 바이너리를 바이러스로 탐지 할 수 있습니다. 따라서 상업용 게임을 출시하는 경우 바이너리에 서명하거나 배포 할 플랫폼을 사용해야합니다.

반응형

'game > godot' 카테고리의 다른 글

Godot - Compiling with Mono  (0) 2018.12.01
Godot - Packaging Godot  (0) 2018.11.30
Gdoot - Platform-specific  (0) 2018.11.28
Godot - Console support in Godot  (0) 2018.11.28
Godot - Services for iOS  (0) 2018.11.27