## 編譯
編譯游戲意味著以下兩種情況之一:編譯它進行測試,或編譯它以創建特定目標平臺的資源包。 只需按下IDE頂部的播放按鈕即可完成游戲測試,該按鈕將使用指定的目標平臺啟動游戲來進行測試。 您也可以通過使用調試按鈕進行測試來運行游戲。這將會運行游戲,并打開調試窗口,您可以在其中監視游戲的運行情況和調試其中的問題(有關詳細信息,請參閱調試部分)。
默認情況下,GameMaker Studio 2使用內置的 VM(虛擬機)運行和調試,這與您正在使用的桌面操作系統上運行的程序大致相同。 然而,GameMaker Studio 2 是一個跨平臺引擎,您可以在許多不同的目標平臺上測試,調試和編譯項目的資源包(可用的確切目標平臺將取決于許可證的詳細信息)。 要更改當前的目標平臺,您可以點擊“目標”按鈕打開目標窗口,如下所示(具體細節根據您的許可證類型而會有所不同):

在頂部的“目標”按鈕旁邊,會顯示當前的設置,它會告訴您當前平臺和使用的具體設置,窗口的其余部分是其他可使用平臺的詳細信息和選項。此窗口的各部分詳細解釋如下:
### 工作者
目標管理器的第一列用于顯示您可用的遠程工作者。 首先,您只能在此列出一個單獨的“本地”機器,這是安裝了 GameMaker Studio 2 的機器,但您也可以配置遠程工作人員來使用。 當配置了遠程工作機器后,您將能夠從列表中選擇它,并使用其來構建項目,而不只是使用安裝了 GameMaker Studio 2 的主機。有關如何設置和使用遠程工作者的更多信息,請參閱以下部分:
遠程工作者
### 平臺
這部分列出了所有可用的目標平臺。 此列表的內容取決于您擁有的許可證,至少會有“測試”目標平臺。 要選擇一個目標只需點擊它,然后剩余的選項窗口將會更新以顯示不同的細節,具體內容取決于所選的平臺。
### 輸出
每個目標平臺可以有一個或多個輸出格式,主要格式有: 虛擬機:虛擬機使用每個平臺的通用運行程序來編譯您的游戲代碼。一般來說,此選項可以更快的構建來用于測試,但它不能像YYC一樣進行性能提升。當然,您可以使用它來編譯較小的游戲,這些游戲在性能方面不會出現問題。 YYC:YYC(YoYo編譯器)采用 GameMaker Studio 2 輸出,并將其編譯為目標平臺的代碼,“剝離”一些不需要的功能,并執行大量的優化技術來創建更小和性能更強的可執行文件。這可以將您的游戲性能提高至少兩到三倍,特別是對于重量級游戲以及較大型或者對CPU使用程度較高的游戲來說效果非常理想。編譯時間可能會很長長,您應該注意清除編譯器緩存,然后再為目標平臺構建最終的完整資源包。請注意,YYC可能需要為所選擇的平臺安裝額外的工具,否則將無法正常工作 - 您可以從YoYo Games 幫助中心以及本手冊中詳細列出的各個目標參考頁面中找到更多信息。 JavaScript:JavaScript只能用于幾種目標,例如HTML5,并將游戲編譯為純JavaScript 代碼。
### 設備
某些平臺(如 iOS 或 Android)允許您將一個或多個設備與GameMaker Studio 2 相關聯,以便游戲可以有選擇地進行編譯。 最開始設備列表為空,您需要單擊“鉛筆”圖標以打開設備編輯器:

在這里,您可以添加新設備,以及對可連接的所有設備進行 GameMaker Studio 2 連接測試。 此窗口的具體內容取決于平臺(有關給定平臺的詳細信息,請參閱設備管理器部分)。 一旦找到或添加了一個設備,它將在此窗口中顯示,就如下圖示例的Android設備:

有關設置設備和故障排除的具體內容可以在 GameMaker Studio 2 知識庫的相應章節中找到。
### 配置
如配置部分所述,您可以將游戲編譯的某些詳細信息儲存為配置。 “目標”窗口的此部分允許您讓 GameMaker Studio 2 自動為特定目標平臺選擇特定配置。
## 創建最終可執行程序
將游戲項目編譯到對應目標平臺需要您的構建工具設置正確(請參閱此處),并填寫相應的“平臺首選項”。 完成后,您可以簡單地單擊IDE中的“創建可執行文件”按鈕,以啟動編譯器構建,或從“生成”菜單中選擇“創建可執行文件”。 以上選項將打開一個文件瀏覽器窗口,您可以在單擊“保存”以啟動編譯和構建過程之前,給出希望用于游戲包的最終名稱。 完成此操作后,將生成必要文件,以便您可以根據需要進行分發。
注意:在完成發布項目的最終構建之前,您應該清除資源編譯器緩存(使用IDE頂部的“掃帚”圖標),以確保重新創建所有緩存文件,且不會有失效的文件損壞您最終的游戲包。
每個目標選項都會保存為特定于平臺的格式,如下所示:
* Windows - 一般Windows操作系統的編譯首先會要求您在創建安裝程序或Zip程序包之間進行選擇,安裝程序將是安裝游戲的單個可執行程序,Zip文件將是單個的zip格式壓縮文件, 其中包含所有的游戲文件(游戲運行時文件需要從其中提取)。

* 在 Windows 的編譯選項中如果選中標記為“記住打包選項”的框,則 GameMaker Studio 2 將記住所有關于編譯器的選擇(可以在 Windows 首選項重置或更改)。您可以在YoYo游戲幫助中心了解更多信息
* Ubuntu(Linux) - Ubuntu(Linux)應用程序可以編譯為 * .zip 文件。您可以在YoYo游戲幫助中心了解更多信息。
* HTML5 - 如果您選擇構建 HTML5,則會使用 index.html 文件(這是默認名稱,您也可以在“平臺首選項”中改為自己想要的名稱),并將創建包含游戲文件的文件夾并將其保存到指定的位置。要使您的游戲工作,您將需要將這兩個文件上傳到服務器。 index.html 也可以自定義,以不同的背景顏色或不同的位置來顯示你的游戲,但是需要HTML的相關知識,你也可以在構建時指定自己的自定義索引文件包(請參閱 HTML5游戲選項)。您可以在YoYo游戲幫助中心了解更多信息。
* Android - 對于Android設備,將生成 * .apk 文件,可直接在 Android 設備上使用,或上傳到 Google Play 以及 Amazon 商店(或任何其他接受 Android 應用程序的網站)。您可以在YoYo游戲幫助中心了解更多信息。
* iOS - 編譯到 iOS 將創建一個 xarchive 文件,然后在 Xtools 中創建最終的 iOS 包。請注意,為了編譯 iOS,您將需要運行 OSX 或更高版本的 Mac 計算機以及具備相關證書和權限。您可以從YoYo游戲幫助中心了解更多信息。
* Mac OS - Mac OS 將構建 * .app 文件或 * .pkg 文件,具體取決于您是否要將其上傳到Mac App Store。與 iOS 一樣,您將需要運行 OSX 或更高版本的 Mac 電腦以及具備相關的證書和權限。您可以從YoYo游戲幫助中心了解更多信息。
* Windows UWP - 對于 Windows UWP,GameMaker Studio 2 將創建 * .appx 包,然后可以將其上傳到 Windows Store。當您單擊“創建可執行文件”按鈕時,系統將提示您告知 GameMaker Studio 2 要創建哪個類型的軟件包(可用于 ARM,x64 或 x86 架構),您應該選擇設備類型以使您的游戲支持相應的設備:

在 UWP 編譯選項種如果您選中標記為“商店上傳包”的框,那么創建的最終包將是一個
.appxupload 文件,如本文中所述,這是微軟指定應用于將應用程序提交到其商店的文件格式。另請注意,您可以在 UWP 首選項種設置默認打包選項,以便 GameMaker Studio 2 記住所有編譯器的選擇(同時意味著此選項窗口將不會顯示)。您可以在YoYo游戲幫助中心了解有關設置和編譯到 UWP 平臺的更多信息。
創建可執行資源包后,您可以將該文件發送給其他人或將其放置在您的網站上進行下載,或將這些文件上傳到不同的托管服務平臺以進行個人發行,甚至上傳到網上商店(如Google Play,iTunes或微軟商店)進行分銷和零售。
請注意,您可以隨意使用 GameMaker Studio 2 以任何您喜歡的方式分發您創建的游戲,包括銷售。當然,這代表您使用的精靈,圖像和聲音也可以分發或銷售,并且您擁有所有資源的合法權利,并且該游戲也符合 YoYo Games EULA for GameMaker Studio 2\. 您可以在 GameMaker Studio 2 的安裝文件夾中找到許可協議,路徑通常為“C:\ Program Files \ GameMaker Studio 2 \ Licence.txt”。
- 介紹
- 新手須知
- 版本授權
- 安裝
- 更新
- 發布日志
- 所需SDK
- 賬號
- 首選項設置
- 拖拽編程
- 擴展編輯器設置
- 基本項設置
- 圖片編輯器設置
- 語言設置
- 市場設置
- 對象編輯器設置
- 插件設置
- 資源樹設置
- 場景編輯器設置
- 運行庫設置
- 樣條編輯器設置
- 精靈編輯器設置
- 文本編輯器設置
- 瓷片編輯器設置
- 時間軸設置
- 輸入
- 快速上手
- 概覽
- 啟動頁
- 工作區
- 資源樹
- 工作流
- 創建精靈
- 創建瓷片集
- 創建音頻
- 創建對象
- 創建場景
- 編譯
- 調試
- 快捷鍵
- 菜單
- 文件菜單
- 編輯菜單
- 構建菜單
- 窗口菜單
- 工具菜單
- 市場菜單
- 幫助菜單
- 布局菜單
- 附加信息
- 位運算符和二進制
- 命令行
- 出錯信息
- 文件系統
- 導入非位圖精靈
- JSDoc使用
- 微型WEB服務端
- 過時函數
- 紋理頁
- 使用緩沖區
- 編輯器
- 擴展編輯器
- 字體編輯器
- 圖像編輯器
- 內含文件編輯器
- 備注編輯器
- 對象編輯器
- 路徑編輯器
- 場景編輯器
- 腳本編輯器
- 著色器編輯器
- 音頻編輯器
- 精靈編輯器
- 瓷片集編輯器
- 時間軸編輯器
- 對象可用事件
- 異步事件
- 繪制事件
- 手勢事件
- 其它
- 調試管理器
- 設備管理器
- YoYo資源市場
- 輸出停靠欄
- 項目圖生成器
- 最近使用窗口
- 遠程工作
- 混音器
- 版本控制
- 設置項
- 音頻組
- 配置項
- 跨平臺配置
- 紋理組
- 游戲配置選項
- AmazonFire 配置
- Android配置
- HTML5配置
- iOS配置
- Linux配置
- Mac配置
- Windows配置
- WindowsUWP配置
- 腳本編程
- 拖放編程概覽
- 拖放編程功能索引
- GML概覽
- 代碼
- 數組
- array_create
- array_copy
- array_equals
- array_length_1d
- array_height_2d
- array_length_2d
- 賦值
- 表達式
- 數據存取
- 功能性語法
- 函數
- 腳本
- 注釋
- 關鍵詞
- 變量及作用域
- variable_global_exists
- variable_global_get
- variable_global_set
- variable_instance_exists
- variable_instance_get
- variable_instance_get_names
- variable_instance_set
- 尋址變量
- 評估順序
- 數據類型
- is_array
- is_bool
- is_int32
- is_int64
- is_matrix
- is_ptr
- is_real
- is_string
- is_undefined
- is_vec3
- is_vec4
- 變元計數
- 指針
- 內置變量屬性
- async_load
- health
- lives
- score
- GML函數索引
- asset_get_index
- asset_get_type
- Compatibility_Functions
- Asynchronous Functions
- Audio
- Buffers
- Cameras And Display (攝像機和顯示)
- Cameras(攝像機)
- camera_apply
- camera_create
- camera_create_view
- camera_destroy
- camera_get_active
- camera_get_begin_script
- camera_get_default
- camera_get_end_script
- camera_get_proj_mat
- camera_get_update_script
- camera_get_view_angle
- camera_get_view_border_x
- camera_get_view_border_y
- camera_get_view_height
- camera_get_view_mat
- camera_get_view_speed_x
- camera_get_view_speed_y
- camera_get_view_target
- camera_get_view_width
- camera_get_view_x
- camera_get_view_y
- camera_set_begin_script
- camera_set_default
- camera_set_end_script
- camera_set_proj_mat
- camera_set_update_script
- camera_set_view_angle
- camera_set_view_border
- camera_set_view_mat
- camera_set_view_pos
- camera_set_view_size
- camera_set_view_speed
- camera_set_view_target
- view_camera
- view_current
- view_enabled
- view_get_camera
- view_get_hport
- view_get_surface_id
- view_get_visible
- view_get_wport
- view_get_xport
- view_get_yport
- view_hport
- view_set_camera
- view_set_hport
- view_set_surface_id
- view_set_visible
- view_set_wport
- view_set_xport
- view_set_yport
- view_surface_id
- view_visible
- view_wport
- view_xport
- view_yport
- The Screen Display
- Controls
- Data_Structures(數據結構)
- ds_exists
- ds_set_precision
- DS Grids
- DS Lists(列表)
- ds_list_create
- ds_list_destroy
- ds_list_clear
- ds_list_empty
- ds_list_size
- ds_list_add
- ds_list_set
- ds_list_delete
- ds_list_find_index
- ds_list_find_value
- ds_list_insert
- ds_list_replace
- ds_list_shuffle
- ds_list_sort
- ds_list_copy
- ds_list_read
- ds_list_write
- ds_list_mark_as_list
- ds_list_mark_as_map
- DS Maps(映射表)
- ds_map_exists
- ds_map_create
- ds_map_add
- ds_map_clear
- ds_map_copy
- ds_map_replace
- ds_map_delete
- ds_map_empty
- ds_map_size
- ds_map_find_first
- ds_map_find_last
- ds_map_find_next
- ds_map_find_previous
- ds_map_find_value
- ds_map_read
- ds_map_write
- ds_map_destroy
- ds_map_secure_save
- ds_map_secure_save_buffer
- ds_map_secure_load
- ds_map_secure_load_buffer
- ds_map_add_list
- ds_map_add_map
- ds_map_replace_list
- ds_map_replace_map
- DS Priority Queues
- DS Queues
- DS Stacks
- Debugging
- Drawing
- draw_enable_drawevent
- draw_flush
- Colour(顏色)
- colour_get_blue
- colour_get_green
- colour_get_hue
- colour_get_red
- colour_get_saturation
- colour_get_value
- draw_clear
- draw_clear_alpha
- draw_get_alpha
- draw_get_colour
- draw_getpixel
- draw_getpixel_ext
- draw_set_alpha
- draw_set_colour
- make_colour_hsv
- make_colour_rgb
- merge_colour
- Forms
- draw_arrow
- draw_button
- draw_circle
- draw_circle_colour
- draw_ellipse
- draw_ellipse_colour
- draw_healthbar
- draw_line
- draw_line_colour
- draw_line_width
- draw_line_width_colour
- draw_path
- draw_point
- draw_point_colour
- draw_rectangle
- draw_rectangle_colour
- draw_roundrect
- draw_roundrect_colour
- draw_roundrect_colour_ext
- draw_roundrect_ext
- draw_set_circle_precision
- draw_triangle
- draw_triangle_colour
- GPU
- gpu_get_alphatestenable
- gpu_get_alphatestref
- gpu_get_blendenable
- gpu_get_blendmode
- gpu_get_blendmode_dest
- gpu_get_blendmode_destalpha
- gpu_get_blendmode_ext
- gpu_get_blendmode_ext_sepalpha
- gpu_get_blendmode_src
- gpu_get_blendmode_srcalpha
- gpu_get_colorwriteenable
- gpu_get_cullmode
- gpu_get_fog
- gpu_get_state
- gpu_get_texfilter
- gpu_get_texfilter_ext
- gpu_get_texrepeat
- gpu_get_texrepeat_ext
- gpu_get_zfunc
- gpu_get_ztestenable
- gpu_get_zwriteenable
- gpu_pop_state
- gpu_push_state
- gpu_set_alphatestenable
- gpu_set_alphatestref
- gpu_set_blendenable
- gpu_set_blendmode
- gpu_set_blendmode_ext
- gpu_set_blendmode_ext_sepalpha
- gpu_set_colorwriteenable
- gpu_set_cullmode
- gpu_set_fog
- gpu_set_state
- gpu_set_texfilter
- gpu_set_texfilter_ext
- gpu_set_texrepeat
- gpu_set_texrepeat_ext
- gpu_set_zfunc
- gpu_set_ztestenable
- gpu_set_zwriteenable
- Lighting
- draw_get_lighting
- draw_light_define_ambient
- draw_light_define_direction
- draw_light_define_point
- draw_light_enable
- draw_light_get
- draw_light_get_ambient
- draw_set_lighting
- Mipmapping
- gpu_get_tex_max_aniso
- gpu_get_tex_max_aniso_ext
- gpu_get_tex_max_mip
- gpu_get_tex_max_mip_ext
- gpu_get_tex_min_mip
- gpu_get_tex_min_mip_ext
- gpu_get_tex_mip_bias
- gpu_get_tex_mip_bias_ext
- gpu_get_tex_mip_enable
- gpu_get_tex_mip_enable_ext
- gpu_get_tex_mip_filter
- gpu_get_tex_mip_filter_ext
- gpu_set_tex_max_aniso
- gpu_set_tex_max_aniso_ext
- gpu_set_tex_max_mip
- gpu_set_tex_max_mip_ext
- gpu_set_tex_min_mip
- gpu_set_tex_min_mip_ext
- gpu_set_tex_mip_bias
- gpu_set_tex_mip_bias_ext
- gpu_set_tex_mip_enable
- gpu_set_tex_mip_enable_ext
- gpu_set_tex_mip_filter
- gpu_set_tex_mip_filter_ext
- Particles
- Particle Emitters
- part_emitter_burst
- part_emitter_clear
- part_emitter_create
- part_emitter_destroy
- part_emitter_destroy_all
- part_emitter_exists
- part_emitter_region
- part_emitter_stream
- Particle Systems
- part_particles_clear
- part_particles_count
- part_particles_create
- part_particles_create_colour
- part_system_automatic_draw
- part_system_automatic_update
- part_system_clear
- part_system_create
- part_system_create_layer
- part_system_depth
- part_system_destroy
- part_system_draw_order
- part_system_drawit
- part_system_exists
- part_system_get_layer
- part_system_layer
- part_system_position
- part_system_update
- Particle Types
- part_type_alpha1
- part_type_alpha2
- part_type_alpha3
- part_type_blend
- part_type_clear
- part_type_colour_hsv
- part_type_colour_mix
- part_type_colour_rgb
- part_type_colour1
- part_type_colour2
- part_type_colour3
- part_type_create
- part_type_death
- part_type_destroy
- part_type_direction
- part_type_exists
- part_type_gravity
- part_type_life
- part_type_orientation
- part_type_scale
- part_type_shape
- part_type_size
- part_type_speed
- part_type_sprite
- part_type_step
- Simple Effects
- ef_cloud
- ef_ellipse
- ef_explosion
- ef_firework
- ef_flare
- ef_rain
- ef_ring
- ef_smoke
- ef_smokeup
- ef_snow
- ef_spark
- ef_star
- effect_clear
- effect_create_above
- effect_create_below
- Primitives(基本幾何體)
- draw_primitve_begin
- draw_primitive_begin_texture
- draw_primitive_end
- draw_vertex
- draw_vertex_colour
- draw_vertex_texture
- draw_vertex_texture_colour
- Primitive Building
- vertex_argb
- vertex_begin
- vertex_colour
- vertex_create_buffer
- vertex_create_buffer_ext
- vertex_create_buffer_from_buffer
- vertex_create_buffer_from_buffer_ext
- vertex_delete_buffer
- vertex_end
- vertex_float1
- vertex_float2
- vertex_float3
- vertex_float4
- vertex_freeze
- vertex_get_buffer_size
- vertex_get_number
- vertex_normal
- vertex_position
- vertex_position_3d
- vertex_submit
- vertex_texcoord
- vertex_ubyte4
- Vertex Formats
- vertex_format_add_colour
- vertex_format_add_custom
- vertex_format_add_normal
- vertex_format_add_position
- vertex_format_add_position_3d
- vertex_format_add_textcoord
- vertex_format_begin
- vertex_format_delete
- vertex_format_end
- Sprites_and_Tiles
- draw_enable_swf_aa
- draw_get_swf_aa_level
- draw_self
- draw_set_swf_aa_level
- draw_skeleton
- draw_skeleton_collision
- draw_skeleton_instance
- draw_skeleton_time
- draw_sprite
- draw_sprite_ext
- draw_sprite_general
- draw_sprite_part
- draw_sprite_part_ext
- draw_sprite_pos
- draw_sprite_stretched
- draw_sprite_stretched_ext
- draw_sprite_tiled
- draw_sprite_tiled_ext
- draw_tile
- draw_tilemap
- Surfaces
- application_get_position
- application_surface
- application_surface_draw_enable
- application_surface_enable
- application_surface_is_enabled
- draw_surface
- draw_surface_ext
- draw_surface_general
- draw_surface_part
- draw_surface_part_ext
- draw_surface_stretched
- draw_surface_stretched_ext
- draw_surface_tiled
- draw_surface_tiled_ext
- surface_copy
- surface_copy_part
- surface_create
- surface_create_ext
- surface_exists
- surface_free
- surface_get_height
- surface_get_texture
- surface_get_width
- surface_getpixel
- surface_getpixel_ext
- surface_reset_target
- surface_resize
- surface_save
- surface_save_part
- surface_set_target
- surface_set_target_ext
- The Application Surface
- Text
- draw_highscore
- draw_set_font
- draw_set_halign
- draw_set_valign
- draw_text
- draw_text_colour
- draw_text_ext
- draw_text_ext_colour
- draw_text_ext_transformed
- draw_text_ext_transformed_colour
- draw_text_transformed
- draw_text_transformed_colour
- Textures
- draw_texture_flush
- texture_get_height
- texture_get_texel_height
- texture_get_texel_width
- texture_get_uvs
- texture_get_width
- texture_global_scale
- texture_set_stage
- File Handing
- Fonts
- Game
- In App Purchases
- Instances
- 數學運算(Maths)
- Date and Time
- 數字方法(Number Functions)
- Vector Functions
- Matrices
- Miscellaneous
- Movement and Collisions
- Networking
- Objects
- Paths
- Physics
- 場景(Rooms)
- 常規的場景函數及變量(General Room Functions And Varibales)
- 常規圖層函數(General Layer Functions)
- 瓷片函數(TIlemap Tile Functions)
- 背景圖層(Backgrounds)
- 精靈圖層(Sprites)
- Scirpts
- Shaders
- Sprites
- Steam API
- Strings
- Timelines
- Web
- XBox_Live
- 翻譯名詞對照表