Bu belgede, Play tarafından yönetilen yüklemeyi kullanarak oyununuzu PC Üzerinde Google Play Games'de nasıl yayınlayacağınız açıklanmaktadır.
Play Managed Installation ile Google Play, Windows uygulama paketi (WAB) dosyasında sağladığınız oyun dosyalarını ve meta verilerini kullanarak oyunun yüklenmesini, güncellenmesini ve kaldırılmasını yönetir.
Başlamadan önce
Google Play Games SDK'sını oyununuza entegre edin.
Oyununuzu WAB dosyası olarak paketleme
Play Managed Installation WAB dosyası oluşturmak için aşağıdaki adımları uygulayın:
Play yayınlama aracını indirin. Bu aracı Windows komut satırında veya PowerShell'de çalıştırabilirsiniz.
Herhangi bir adla Play yayınlama yapılandırma dosyasını oluşturun. Örneğin, aşağıdaki biçimde
play_publishing_config.xml:<?xml version="1.0" encoding="UTF-8"?> <play-publishing-config version="1.0"> <!-- Application metadata: This section contains basic information about your game. --> <application> <package-name>PACKAGE_NAME</package-name> <version-name>VERSION_NAME</version-name> </application> <!-- Game files: This section specifies which game files to include in the bundle and how to treat them. --> <game-files> <file-set> <root-folder-path>PATH_TO_ROOT_FOLDER</root-folder-path> <!-- absolute or relative to the parent directory of the config xml --> <!-- Exclusions: A list of files or folders to exclude from the bundle. This is useful for removing development files, temporary data, or redundant assets. --> <exclusions> <file-path>REGEX_PATTERN_OF_EXCLUDED_FILES</file-path> <file-path>PATH_TO_BE_EXCLUDED</file-path> </exclusions> <!-- File attributes: Define special handling for certain files during installation and updates. --> <file-attribute value=FILE_ATTRIBUTE_VALUE> <file-path>PATH_TO_FILE</file-path> <file-path>REGEX_PATTERN_OF_FILE_ATTRIBUTE_FILES</file-path> </file-attribute> </file-set> </game-files> <!-- This file represents the startup process for this game. Google Play Games for PC should start this process when user clicks on "Play" on this game. --> <launch-command> <path>PATH_TO_LAUNCH_FILE</path> <arguments>ARGUMENTS</arguments> </launch-command> <!-- Lifecycle operations: Custom actions to be performed during the game's installation and uninstallation. --> <lifecycle-operations> <!-- Install operations: These actions run when the game is installed. 'requiresElevation="true"' will trigger a UAC prompt for administrator rights. There are three types of install operations that can be specified. An instance of each is listed below. --> <install-operation requiresElevation=INSTALL_OPERATION_REQUIRES_ELEVATION> <operation-identifier>OPERATION_IDENTIFIER_STRING</operation-identifier> <execute-file> <path>PATH_TO_INSTALL_EXECUTE_FILE</path> <arguments>ARGUMENTS</arguments> </execute-file> </install-operation> <install-operation requiresElevation=INSTALL_OPERATION_REQUIRES_ELEVATION> <operation-identifier>OPERATION_IDENTIFIER_STRING</operation-identifier> <update-registry baseKey=BASE_KEY> <sub-key>SUB_KEY_PATH</sub-key> <value-name>VALUE_NAME</value-name> <value type=REGISTRY_VALUE_TYPE>VALUE_TEXT</value> </update-registry> </install-operation> <!-- Uninstall operations: These actions run before the game is uninstalled. --> <uninstall-operation requiresElevation=UNINSTALL_OPERATION_REQUIRES_ELEVATION> <execute-file> <path>PATH_TO_UNINSTALL_EXECUTE_FILE</path> <arguments>ARGUMENTS</arguments> </execute-file> </uninstall-operation> </lifecycle-operations> </play-publishing-config>
Aşağıdakileri değiştirin:
PACKAGE_NAME: Oyununuzun paket adı. Bu, Google Play'de oyununuzla ilişkilendirilecek benzersiz tanımlayıcıdır. Örneğin,com.yourcompany.yourgame. Paket adı aşağıdaki kurallara uymalıdır:- En az iki segment (bir veya daha fazla nokta) içermelidir.
- Her segment bir harfle başlamalıdır.
- Tüm karakterler alfanümerik veya alt çizgi (
[a-zA-Z0-9_]) olmalıdır.
VERSION_NAME: Oyunun sürüm dizesi. Bu, rastgele bir dize olabilir ancak oyununuz için yüklenen tüm WAB'lerde benzersiz olmalıdır. Örneğin:1.0,1.0.1-beta,2025.11.24,v1.rc1.PATH_TO_ROOT_FOLDER: Oyun dosyalarınızı içeren kök klasörün yolu. Bu klasördeki tüm dosyalar (hariç tutulanlar hariç) pakete eklenir. Bu yol,play_publishing_config.xmldosyasını içeren dizine göre mutlak veya göreli olabilir.exclusions: (İsteğe bağlı) Paketten hariç tutulacakPATH_TO_ROOT_FOLDERiçindeki dosyalar için dosya yollarını veya kalıplarını belirtir.exclusionsöğesine birden fazlafile-pathöğesi ekleyebilirsiniz. Bir yol iki şekilde gösterilebilir:- Dosya yolu olarak: Hariç tutulacak dosyanın yolu.
- Normal ifade dizesi olarak: Normal ifade dizesiyle eşleşen tüm dosyalar paketin dışında tutulur. RE2 söz dizimini kullanın.
file-attribute: (İsteğe bağlı) Belirli dosyalar veya normal ifade deseniyle eşleşen dosyalar için özellikleri tanımlar.FILE_ATTRIBUTE_VALUE: Aşağıdakilerden biri olabilir:SKIP_UPDATE: Bu özellik, güncelleme sırasında dosyayı yalnızca mevcut değilse kopyalaması ve mevcut bir dosyada yapılan değişiklikleri koruması için sisteme talimat verir.MODIFIED_ON_DEVICE: Güncellenmesi gereken ancak yükleme işleminden sonra cihazda değiştirilebilecek dosyalar için bunu kullanın. Sistem, güncelleme sırasında yeni dosyanın tamamını indirir ve yüklü sürümün üzerine yazar. Bu dosya, yükleme bütünlüğü denetimleri sırasında yüklü sürümden farklıysa yükleme bozuk olarak kabul edilmez.
file-path: Bu özellik için dosyaları tanımlar. Herfile-attributeöğesine birden fazlafile-pathöğesi ekleyebilirsiniz. Her yol iki şekilde gösterilebilir:- Dosya yolu olarak: Bu özelliği ilişkilendirmek istediğiniz dosyanın yolu.
- Normal ifade dizesi olarak: Normal ifade dizesiyle eşleşen tüm dosyalar özellik değeriyle ilişkilendirilir. RE2 söz dizimini kullanın.
PATH_TO_LAUNCH_FILE: Oyunu başlatmak için kullanılan yürütülebilir dosyanın yolu.ARGUMENTS: (İsteğe bağlı) Komut satırı bağımsız değişkenleri.<arguments>öğesi,<launch-command>,<install-operation>veya<uninstall-operation>içinde belirtilen bir yürütülebilir dosyaya bağımsız değişkenler iletmek için kullanılır.<arguments>öğesinin her kullanımı yalnızca tanımlandığı yürütülebilir dosya için geçerlidir. Bu sayede, farklı yürütülebilir dosyalar için farklı bağımsız değişkenler belirtebilirsiniz.- Bir yürütülebilir dosyanın birden fazla bağımsız değişkeni varsa bunları boşlukla ayırın.
- Yürütülebilir dosya gerektiriyorsa bağımsız değişkenlerin başına
--veya-ekleyin. Örnek:<arguments>--package_name --version_name</arguments>
lifecycle-operations: (İsteğe bağlı) Oyun yükleme veya kaldırma sırasında gerçekleştirilecek özel işlemler.install-operation: Oyun yüklendiğinde çalıştırılacak bir işlem. İki tür yükleme işlemi belirtebilirsiniz:execute-fileveupdate-registry.uninstall-operation: Oyun kaldırılmadan önce çalıştırılacak bir işlem.update-registryişlemleri, kaldırma sırasında otomatik olarak geri alınır.INSTALL_OPERATION_REQUIRES_ELEVATION: Yükleme işleminin yönetici ayrıcalıklarıyla çalıştırılması gerekip gerekmediğini gösterir.- "true": Yönetici olarak çalıştırın.
- "false": Geçerli kullanıcı olarak çalıştır. Belirtilmezse varsayılan değerdir.
UNINSTALL_OPERATION_REQUIRES_ELEVATION: Kaldırma işleminin yönetici ayrıcalıklarıyla çalıştırılması gerekip gerekmediğini gösterir.- "true": Yönetici olarak çalıştırın.
- "false": Geçerli kullanıcı olarak çalıştır. Belirtilmezse varsayılan değerdir.
operation-identifier: Birinstall-operationöğesini tanımlamak için kullanılan benzersiz dize.execute-file: Yürütülebilir bir dosyayı çalıştırır.PATH_TO_INSTALL_EXECUTE_FILE: Yükleme sırasında çalıştırılacak bir yürütülebilir dosyanın yolu.PATH_TO_UNINSTALL_EXECUTE_FILE: Kaldırma işleminden önce çalıştırılacak bir yürütülebilir dosyanın yolu.
update-registry: Bir Windows kayıt defteri girişi oluşturur veya günceller.BASE_KEY: Windows kayıt defterinde kullanılacak kök anahtarı tanımlar. Kabul edilen değerler:HKEY_CLASSES_ROOT,HKEY_CURRENT_CONFIG,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_PERFORMANCE_DATAveHKEY_USERS. Birupdate-registryişlemi gerçekleştirirken kullanılanbaseKey'ye göre üst öğedeinstall-operationrequiresElevation="true"ayarlayın:HKEY_LOCAL_MACHINEveyaHKEY_CURRENT_CONFIG:requiresElevation="true"olarak ayarlayın.HKEY_CURRENT_USER:requiresElevation="true"gerekli değil.HKEY_CLASSES_ROOT:requiresElevation="true"yalnızca makine genelindeki bölümlere yazarken ayarlayın. Kullanıcıya özel bölümler için gerekli değildir.HKEY_USERS: Tüm kullanıcıların profillerini içerir. Mevcut kullanıcının profili dışındaki profilleri (ör. diğer kullanıcılar veya.DEFAULT) değiştirirkenrequiresElevation="true"değerini ayarlayın.
SUB_KEY_PATH: Bu, Windows kayıt defterindeki anabaseKeyaltında yer alan belirli bir anahtarın yolunu gösterir.VALUE_NAME: Bu, belirlenen alt anahtar içinde değiştirmek istediğiniz veri girişinin adını belirtir.REGISTRY_VALUE_TYPE: Bu özellik, kayıt defterine yazılan değerin veri türünü belirtir. Dize içinSTRING, 32 bit sayı içinDWORDdeğerleri desteklenir.VALUE_TEXT: Kayıt defteri anahtarında depolanacak veriler.
Normal ifadeleri kullanma
Bir grup dosyaya hariç tutma veya dosya özellikleri uygulamak için
file-pathetiketlerinde RE2 söz dizimi normal ifadelerini kullanabilirsiniz. Dizin ayırıcıları için düz eğik çizgi/kullanmayı ve özel düzenli ifade karakterlerini ters eğik çizgi\ile kaçırmayı unutmayın. Örneğin, gerçek bir nokta.ile eşleştirmek için\., bir rakamla eşleştirmek için\dkullanın.Aşağıda, bazı sık rastlanan örnekler verilmiştir:
- Herhangi bir dizindeki belirli bir uzantıya (ör. .log) sahip tüm dosyaları eşleştirme
.logile biten tüm yolları (ör.game.logveyalogs/errors.log) eşleştirmek için.*\.logkullanın.<file-path>.*\.log</file-path>
- Belirli bir klasördeki (örneğin, "temp") tüm dosyaları ve alt dizinleri eşleştirme
temp/ile başlayan tüm yolları (ör.temp/data.txtveyatemp/saves/file.sav) eşleştirmek içintemp/.*kullanın.<file-path>temp/.*</file-path>
- Belirli bir klasördeki bir kalıpla eşleşen dosyaları eşleştirme
assets/level1.datveassets/level2.datile eşleşmek içinassets/level\d\.datkullanın ancakassets/other.datile eşleşmeyin.<file-path>assets/level\d\.dat</file-path>
- Yolun herhangi bir yerinde görünen klasör adını eşleştirme
.*/cache/.*,game/cache/file.txtveyatemp/cache/other.loggibicacheadlı dizinlerdeki dosyaları eşleştirmek için.*/cache/.*kullanın.<file-path>.*/cache/.*</file-path>
- Dosyaları çeşitli uzantılarla eşleştirme (ör. .ini, .cfg, .sav)
.*\.(ini|cfg|sav)kullanarak.ini,.cfgveya.savile biten tüm dosyaları (ör.settings.ini,config.cfgveyasaves/slot1.sav) eşleştirin.<file-path>.*\.(ini|cfg|sav)</file-path>
- Belirli dizinlerde belirli bir uzantıya sahip dosyaları eşleştirme (örneğin, music/ veya sfx/ dizinindeki .ogg dosyaları)
(music|sfx)/.*\.ogg,music/veyasfx/dizinlerinin altında bulunan ancak başka bir yerde bulunmayan tüm.oggdosyalarını eşleştirmek için kullanılır.music/level1.oggveyasfx/explosion.oggile eşleşir ancakvoice/intro.oggile eşleşmez.<file-path>(music|sfx)/.*\.ogg</file-path>
Örnek Play yayınlama yapılandırma dosyası
TestGameadlı bir oyun içinplay_publishing_config.xmlörneğini aşağıda görebilirsiniz:<?xml version="1.0" encoding="UTF-8"?> <play-publishing-config version="1.0"> <application> <package-name>com.test.package</package-name> <version-name>1.0</version-name> </application> <game-files> <file-set> <root-folder-path>C:\Users\Username\game-files</root-folder-path> <exclusions> <file-path>mock_game\d\.exe</file-path> <!-- exclude files using a regex --> <file-path>deprecated_graphics</file-path> <!-- exclude a folder --> <file-path>.*\.log</file-path> <!-- recursively exclude all files with .log extension --> </exclusions> <file-attribute value="SKIP_UPDATE"> <file-path>settings.ini</file-path> </file-attribute> <file-attribute value="MODIFIED_ON_DEVICE"> <file-path>game_assets\d\.zip</file-path> <!-- define the path using regex --> </file-attribute> </file-set> </game-files> <launch-command> <path>launcher_test_game.exe</path> <arguments>--launch-arg</arguments> <!-- optional --> </launch-command> <lifecycle-operations> <install-operation requiresElevation="true"> <operation-identifier>elevated-execute-file</operation-identifier> <execute-file> <path>install_file.exe</path> <arguments>--arg</arguments> <!-- optional --> </execute-file> </install-operation> <install-operation requiresElevation="true"> <operation-identifier>elevated-update-registry</operation-identifier> <update-registry baseKey="HKEY_LOCAL_MACHINE"> <sub-key>SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\TestGame</sub-key> <value-name>InstallLocation</value-name> <value type="STRING">C:\Program Files\TestGame</value> </update-registry> </install-operation> <uninstall-operation requiresElevation="true"> <execute-file> <path>uninstall.exe</path> <arguments>--test-arg</arguments> <!-- optional --> </execute-file> </uninstall-operation> </lifecycle-operations> </play-publishing-config>
build-bundlekomutunu kullanarak Play yayınlama aracını Windows komut satırında veya PowerShell'de çalıştırın:playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH
Aynı ada sahip mevcut bir WAB dosyasının üzerine yazmak için
--forcebağımsız değişkenini kullanın.playpublishingtool.exe build-bundle --input=PLAY_PUBLISHING_CONFIG_PATH --output=WAB_OUTPUT_PATH --force
Aşağıdakileri değiştirin:
PLAY_PUBLISHING_CONFIG_PATH: Play yayınlama yapılandırmasının yolu. Örneğin,path\to\play_publishing_config.xml.WAB_OUTPUT_PATH: WAB dosyasının yolu. Örneğin,path\to\output_bundle.wab.
Play yayınlama aracını kullanma
Mevcut çalışma dizininde
playpublishingtool.exe,play_publishing_config.xmlve oyun dosyalarınızgame_files/varsa:.\ ├── game_files/ ├── play_publishing_config.xml ├── playpublishingtool.exe
Aynı dizinde
pmi_bundle.waboluşturmak için şu komutu çalıştırın:playpublishingtool.exe build-bundle --input=play_publishing_config.xml --output=pmi_bundle.wab
Araç paketi oluştururken terminalde bir ilerleme çubuğu görürsünüz:
Building bundle: [==== ] 40%
İşlem başarılı olduğunda şuna benzer bir çıkış alırsınız:
Building bundle: [===========] 100% Successfully built the managed install bundle at pmi_bundle.wab
WAB dosyasını şu klasörde bulabilirsiniz:
.\ ├── game_files/ ├── pmi_bundle.wab ├── play_publishing_config.xml ├── playpublishingtool.exe