根据大小优化生成¶
理论基础¶
有时,需要根据大小而不是速度来优化构建。这意味着不要从引擎编译未使用的函数,也不要使用特定的编译器标志来帮助减小构建大小。常见情况包括为移动和Web平台创建构建。
本教程旨在概述创建较小二进制文件的不同方法。在继续之前,建议先阅读前面关于为每个平台编译godot的教程。
禁用3D¶
对于二维游戏,拥有完整的三维引擎通常是没有意义的。因此,存在一个生成标志来禁用它:
scons p=windows target=release tools=no disable_3d=yes
必须禁用工具才能使用此标志,因为编辑器设计为在没有3D支持的情况下运行。没有它,二进制大小可以减少大约15%。
禁用高级GUI节点¶
大多数小游戏不需要复杂的GUI控件,如树、项列表、文本编辑器或图形。可以使用生成标志禁用它们:
scons p=windows target=release tools=no disable_advanced_gui=yes
禁用不需要的模块¶
Godot的许多功能都作为模块提供。您可以使用以下命令查看模块列表:
scons --help
将显示可禁用的模块列表以及所有生成选项。如果你在做一个简单的二维游戏,你可以禁用其中很多:
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
优化尺寸而不是速度¶
Godot3.1以后的版本允许使用大小优化进行编译。要启用此功能,只需设置 optimize
旗到 size
:
scons p=windows target=release tools=no optimize=size
默认情况下,某些平台(如WebAssembly)已使用此模式。
链接时间优化编译¶
启用链接时间优化可以在性能和文件大小方面生成更高效的二进制文件。它通过消除重复的模板函数和未使用的代码来工作。它目前可以与gcc和msvc编译器一起使用:
scons p=windows target=release tools=no use_lto=yes
使用这个选项,链接速度会慢得多,因此它应该只用于发布版本。