Quantcast
Jump to content


Recommended Posts

Posted

2021-05-11-01-banner.jpg

Galaxy Store is one of the top app stores to sell your Android games in many different countries. You can also sell various in-app purchase (IAP) items inside your games using the Samsung IAP SDK. As many of you now use the Unity engine to develop your games, Samsung has introduced a Unity plugin for the Samsung IAP SDK that enables you to implement IAP features. Follow the steps outlined in this blog to easily implement the Unity plugin into your project and utilize the Samsung IAP functionalities.

Prerequisites

It is assumed you are already familiar with the Samsung IAP procedure. If not, please read the IAP Helper programming guide carefully before proceeding further. After that, download the Samsung IAP Unity plugin package and go through its documentation. To avoid compatibility issues, make sure you meet the system requirements.

There are three types of IAP items:

  1. Consumable: can be used only one time and re-purchasable
  2. Non-consumable: can be used any number of times and not re-purchasable
  3. Subscription: can be used any number of times while it is active

For this example, we have developed a basic coin collecting game in Unity for Android and added UI buttons that allow users to buy IAP items (consumable and non-consumable) and a subscription. The “Buy Super Jump” button initiates purchasing a super jump item from Galaxy Store using the Samsung IAP SDK. Super jump is a consumable item which enables the player to jump higher than normal. Similarly, the “Upgrade Player” button initiates purchasing a player upgrade, which is a non-consumable item. This blog only covers consumable and non-consumable purchases, we’ll discuss subscriptions in a future blog.


2021-05-11-01-01.jpgFigure 1: Preview of the sample game developed in Unity.


Note: You are required to develop your game/application in Unity beforehand to integrate the IAP Unity plugin into it.

Integrate the Samsung IAP Unity plugin

After creating the game in Unity, you need to enable Samsung IAP functionalities in your project. Follow the steps below:

  1. Import the Samsung IAP Unity plugin package into the project. In Unity, click Assets -> Import Package -> Custom Package and select the downloaded plugin package.
  2. You can now see the Plugins folder under your Assets folder and the “SamsungIAP.cs” script at Assets/Plugins/Script.
  3. Copy or move the “SamsungIAP.cs” script into the default scripts folder of your project (where all the scripts are kept together) so that other scripts can access it easily. If you don’t already have a scripts folder, create a new one and keep all your project scripts together along with “SamsungIAP.cs.”
  4. Create an empty game object in the Hierarchy tab and drag-and-drop the “SamsungIAP.cs” script onto it. In our sample project, we have renamed the game object as “SamsungIAP.”
  5. Click on the “SamsungIAP” game object and check if the IAP functionality is enabled in the Inspector, as shown below:

2021-05-11-01-02.jpgFigure 2: Samsung IAP is enabled for the project.


Set the IAP operation mode

IAP supports three operational modes. The production mode is for enabling billing for item purchases and the other two are for testing IAP functions without billing the game users for item purchases. The default operation mode is set to OPERATION_MODE_TEST with the return value as Success, but you can set the return value to Failure instead, or switch to OPERATION_MODE_PRODUCTION by checking (√) the Production Build checkbox in the Inspector as shown in figure 2. You can learn more about the IAP operation modes and how they work from here.

Register the game and IAP items in Seller Portal

To process/test the Samsung IAP operations, both your game and any IAP items need to be registered in Seller Portal. Follow the steps below:

  1. Ensure you have switched the platform of your game to Android and the package name is different from the apps registered in other app stores. You can rename the package name of your project from Player Settings -> Other Settings.
  2. Save your Unity project and build the APK file. In Unity, go to File -> Build Settings and then click the Build button.
  3. Follow the steps listed in Register an app and in-app items in Seller Portal and complete the registration of your game and IAP items accordingly. For our sample game, we have registered a consumable and a non-consumable item with the IDs “BuySuperJump” and “BuyUpgradedPlayer” respectively. Keep the item IDs in mind as they will be required when initiating the purchases.
  4. You can add testers (non-licensed and licensed) in the Binary tab of Seller Portal while registering your game in the manner covered in the previous step. Licensed testers are not charged for purchasing any IAP items. You can register the licensed testers in your Seller Portal profile. See IAP Testing for more information.

Get previously purchased items

Make sure to retrieve any previously purchased non-consumable and unconsumed items every time the user starts the game. Use the GetOwnedList() method of the IAP plugin to get information about the items the user has already purchased. However, please note there is a script called “player.cs” in our project which is added to the main player game object as a component. From now on we will be editing the code in “player.cs” to enable all the Samsung IAP functions for this project. Follow the steps below:

  1. Add the following line at the beginning to access the Samsung IAP libraries in this script.

    using Samsung; 
    
  2. Call the GetOwnedList() method whenever the game launches by adding the following line at the beginning of the Start() method. Learn more about the GetOwnedList() method here.

    SamsungIAP.Instance.GetOwnedList(ItemType.all, OnGetOwnedList);
    
  3. After the processing of the GetOwnedList() method is completed, the OnGetOwnedList callback is triggered, which receives information about the specified purchased items and API call processing. We need to implement this callback method under the same class as in the following;

    void OnGetOwnedList(OwnedProductList _ownedProductList){
         if(_ownedProductList.errorInfo != null){
             if(_ownedProductList.errorInfo.errorCode == 0){// 0 means no error
                 if(_ownedProductList.results != null){
                     foreach(OwnedProductVo item in _ownedProductList.results){
                             if(item.mConsumableYN == "Y"){
                             //consume the consumable items and OnConsume callback is triggered afterwards                                                                      SamsungIAP.Instance.ConsumePurchasedItems(item.mPurchaseId, OnConsume);
                     }
                     if(item.mItemId == "BuySuperJump"){
                         superJump++;
                     }
                     else if(item.mItemId == "BuyUpgradedPlayer"){                         
                              playerMaterial = Resources.Load<Material>("playerMaterial");
                              MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
                              meshRenderer.material = playerMaterial;                        
                     }                    
                 }
             } 
         }
    }
    

As you can see, some actions have been taken inside the game depending on the respective item IDs. For example, the super jump counter has been increased and the material of the player gets changed. If there is any consumable item which has not been reported as consumed, then the ConsumePurchasedItems() method is invoked. We describe this method in the next section.

Consume purchased consumable items

Use the ConsumePurchasedItems() method to report the purchased consumable item as consumed, which enables the item to be purchased again. See Acknowledge a purchased consumable item to understand this process better. When the process of the ConsumePurchasedItems() method in the previous section is finished, the item data and processing results are returned to the OnConsume callback method. We need to implement this method in the same way under the same class as we implemented the OnGetOwnedList method earlier.

void OnConsume(ConsumedList _consumedList){
     if(_consumedList.errorInfo != null){
         if(_consumedList.errorInfo.errorCode == 0){
             if(_consumedList.results != null){
                 foreach(ConsumeVo item in _consumedList.results){
                        if(item.mStatusCode == 0){
                            //successfully consumed and ready to be purchased again.
                        }
                 }
             }
         }
     }
}

Get purchasable IAP items

The users may want to see details of the available IAP items in the store for the game. The GetProductsDetails() method helps to retrieve detailed information (for example, item name, price, or ID) about the IAP items registered in your game that are available for users to purchase. There is a UI button “Available Items” in our sample game for querying the purchasable items. After clicking this button, brief information for each item is presented in a simple dropdown list next to the button (see figure 3). To get the list of available items:

  1. Declare a button variable and a dropdown variable in the beginning of the “player.cs” script.

    public Button getProductsButton;
    public Dropdown itemList;
    
  2. Add a listener method for the “Available Items” button at the end of the Start() method.

    getProductsButton.onClick.AddListener(OnGetProductsButton);
    
  3. To initiate the GetProductsDetails() method, we need to implement the listener OnGetProductsButton() method.

    void OnGetProductsButton(){
         //get all the product details
         SamsungIAP.Instance.GetProductsDetails("", OnGetProductsDetails); 
    }  
    
  4. After the processing is completed on the server side, the OnGetProductsDetails callback is triggered, which contains information about the available IAP items. Implement this callback method and add information of each item to the dropdown method so that the users can see them easily. In the example, we show only the item name and price.

    void OnGetProductsDetails(ProductInfoList _productList){
         if (_productList.errorInfo != null){
              if (_productList.errorInfo.errorCode == 0){// 0 means no error
                   if (_productList.results != null){
                        itemList.ClearOptions();
                        List<string> optionItems = new List<string>();
                        int i = 1;
                        foreach (ProductVo item in _productList.results){
                                string temp = i+ ". " + item.mItemName + ": $ " + item.mItemPrice;
                                optionItems.Add(temp);
                                i++;
                        }
                        itemList.AddOptions(optionItems);
                   }
              }
         }
    }
    

2021-05-11-01-03.jpgFigure 3: Showing the available IAP items in the game.


The information about all IAP items is shown in the dropdown menu as a list. You can show only one specific item or more items by specifying their IDs in the GetProductsDetails() method if you want. Learn more about the method here.

Purchase IAP items

There are two UI buttons (see figures 1 and 3) in our sample game, namely “Buy Super Jump” and “Upgrade Player,” for purchasing consumable and non-consumable items, respectively. The variables for these two buttons are declared in the beginning of the Start() method and two listener methods: OnBuySuperJumpButton() and OnUpgradePlayerButton() are added at the end of the Start() method of “player.cs” script. Consequently, tapping on these buttons invokes the corresponding methods in the script. Follow the steps below to complete in-app purchasing:

  1. To enable the “Buy Super Jump” and the “Upgrade Player” buttons purchasing a super jump and a player upgrade, we need to instantiate the StartPayment() method inside the button listeners with the corresponding item IDs.
    void OnBuySuperJumpButton(){
         //purchase a consumable item
         SamsungIAP.Instance.StartPayment("BuySuperJump", "", OnPayment);        
    }
    
    void OnUpgradePlayerButton(){
         //purchase a non-consumable item
         SamsungIAP.Instance.StartPayment("BuyUpgradedPlayer", "", OnPayment);
    }
    
  2. After the payment processing is completed, the OnPayment callback is triggered, which contains information about the purchased item, the transaction, and API call processing. We need to implement this callback method and act according to the item IDs as in the following:
    void OnPayment(PurchasedInfo _purchaseInfo){
         if(_purchaseInfo.errorInfo != null){
             if(_purchaseInfo.errorInfo.errorCode == 0){
                 if(_purchaseInfo.results != null){
                     //your purchase is successful
                     if(_purchaseInfo.results.mConsumableYN == "Y"){
                         //consume the consumable items                                                                                                                                                                SamsungIAP.Instance.ConsumePurchasedItems(_purchaseInfo.results.mPurchaseId, OnConsume);
                     }
                     if(_purchaseInfo.results.mItemId == "BuySuperJump"){
                         superJump++;
                     }
                     else if(_purchaseInfo.results.mItemId == "BuyUpgradedPlayer"){
                             playerMaterial = Resources.Load<Material>("playerMaterial");
                             MeshRenderer meshRenderer = GetComponent<MeshRenderer>();
                             meshRenderer.material = playerMaterial;
                     }
                 }
             }
         }
    }
    
  3. For the ConsumePurchasedItems() method, we have already implemented the OnConsume listener method.

In this way, in-app purchasing is fully implemented for both consumable and non-consumable items. Next, build the project, run it on your Galaxy device, and check that the IAP works flawlessly. In addition, you may update the APK of your game in Seller Portal and submit a beta version for more IAP testing. See the Test Guide to learn more about testing. Do not forget to switch the IAP operation mode to OPERATION_MODE_PRODUCTION before submitting the game to be published.

Conclusion

This tutorial explains the entire procedure of integrating the Samsung IAP Unity plugin and using the IAP functionalities for a sample game. Therefore, we hope that you can make use of this tutorial and develop an in-app purchase enabled game for Galaxy Store using Unity and sell your game items successfully to generate revenue.

Follow Up

This site has many resources for developers looking to build for and integrate with Samsung devices and services. Stay in touch with the latest news by creating a free account or by subscribing to our monthly newsletter. Visit the Marketing Resources page for information on promoting and distributing your apps. Finally, our developer forum is an excellent way to stay up-to-date on all things related to the Galaxy ecosystem.

View the full blog at its source



  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Similar Topics

    • By Samsung Newsroom
      Samsung Electronics today announced the installation of its Outdoor LED Signage XHB Series (P8) at the flagship location of Shinsegae Department Store in Seoul, South Korea. Unveiled during the “2024 Lights Up SEOUL, KOREA” event today, the installation is set to establish Myeongdong Square in Seoul as Korea’s new premier landmark, featuring a stunning media lighting display that illuminates the heart of Seoul’s iconic shopping district.
       
      “Our LED displays present unlimited possibilities for places like Myeongdong to bear new elements of cultural significance,” said Hoon Chung, Executive Vice President of the Visual Display Business at Samsung Electronics. “This installation gives us an opportunity to showcase in the biggest way possible that our outdoor digital displays are built to engage, built to deliver impactful content, and built to last.”
       
      Located within the Myeongdong Special Tourist Zone Area, Shinsegae Department Store is uniquely positioned as a free outdoor advertising zone that enables creative and expansive installations. Samsung’s massive outdoor LED signage featuring an anamorphic 8K display, wraps around the entire outer wall of the building, measuring 71.8 meters in width and 17.9 meters in height — equivalent in size to three basketball courts.
       

       
      Spanning a total area of 1,285 square meters, the display is designed for resilience in harsh weather, featuring an IP66 rating for dust and water resistance, and UL 48 and UL 746C certifications1 for year-round durability. The installation is engineered for high visibility and vibrant color accuracy, with support for HDR10+ technology to deliver sharp contrast and rich visuals. With a max brightness of 8,000 nits,2 the display ensures exceptional clarity even in direct sunlight. Its high refresh rate of 7,680Hz minimizes flicker and the moiré effect,3 ensuring a stable display that remains visually crisp, even through camera lenses.
       
      Samsung’s track record of success with digital signage spans prominent venues worldwide. In South Korea, Samsung provided the country’s largest ever high-definition LED signage to Coex SM Town, while transformative installations at New York’s Citi Field and Houston’s Minute Maid Park set new standards for in-stadium displays. At Citi Field, Samsung installed the largest scoreboard in professional baseball, featuring over 29,800 square feet of LED screens that immerse fans in the action from every angle. Similarly, at Minute Maid Park, Samsung’s high-definition LED technology redefined the fan experience with massive outdoor displays and a dynamic new main scoreboard, all designed to enhance the excitement of the game.
       

       
      In Myeongdong, the new installation will not only host engaging advertisements and dynamic video content, but also transform into a breathtaking annual Christmas media façade, creating a festive atmosphere for visitors.
       
      “Shinsegae’s media façade, beloved by global customers for the past 10 years, has now been recreated as Shinsegae Square. This transformation paves the way for it to become an iconic landmark of Seoul, making it not only a must-visit attraction but also a central hub for K-culture. We are excited to partner with Samsung to bring our customers unique experiences that blend heritage and digital technology,” Shinsegae spokesperson said.
       
      Samsung’s Outdoor LED Signage is renowned for exceptional performance in demanding environments, evidenced by award-winning deployments at iconic venues such as Inglewood, California’s SoFi Stadium, which boasts the world’s largest LED videoboard ever built for sports, and the Formula 1 Las Vegas Grand Prix, where Samsung installed a 481-foot-long rooftop LED display in the shape of the F1 logo. As Myeongdong evolves into a global tourism destination, Samsung continues to lead with solutions that inspire and engage.
       
       
       
      1 UL 48 and UL 746C certifications, issued by Underwriters Laboratories (UL), verify compliance with safety standards for electric signs and durability of materials in outdoor environments, including UV and weather resistance.
      2 Maximum brightness measured post-calibration; actual values may vary with conditions.
      3 The moiré effect is an undesirable visual phenomenon that occurs when repetitive patterns, such as lines, are captured in photographs.
      View the full article
    • By Samsung Newsroom
      Play Asset Delivery (PAD) enhances the gaming experience by offering the advantages of application bundles, which are packages that group all necessary resources for efficient delivery, making downloads faster and installations smoother for players. Android App Bundles (AAB) are a type of PAD, the modern way of building and publishing Android applications and games in Google Play Store. The Samsung Galaxy Store recently introduced the option to upload AAB files to Galaxy Store Seller Portal. However, AABs have some Google Play Store proprietary features that might make a game non-functional when it is uploaded to Galaxy Store. This article explores ways in which you can utilize PAD while ensuring your game remains compatible with Galaxy Store.
      Purpose
      PAD is a very useful feature that helps reduce the game's initial download size, as it downloads various game assets at runtime. There are multiple ways of using this feature in Unity games. However, certain PAD configurations may cause the game's assets to fail to load when the game is published to Galaxy Store. In this tutorial, you learn how to properly configure PAD and adjust Unity configurations accordingly, so your game can be successfully published to Galaxy Store.
      In the following sections, PAD functionalities are implemented in an existing coin collector game (referenced in the article Integrating Samsung IAP in Your Unity Game), demonstrating how to download and apply a new set of materials for the floor tile at runtime. Here, you also learn about the adjustments that are necessary for successfully publishing a game using PAD to Galaxy Store.
      Prerequisites
      To follow this tutorial, ensure that your setup has the following:
      Unity Game Engine version 2023.2 or above The "Addressables for Android" package for Unity A Google Play developer account A Galaxy Store Seller Portal commercial seller account A game created using Unity where you want to add the PAD features To implement PAD in your Unity game, you can use the "Addressables for Android" package. This is the easiest and most convenient way to implement PAD in a game. This package is only supported on Unity version 2023.2 or above. If your game is built using a previous version of Unity, please migrate your game to the Unity 2023.2 version first.
      PAD implementation considerations
      There are multitude of ways to implement PAD in games built with the Unity engine. However, the most common method for implementing PAD restricts the game to being publishable exclusively on the Google Play Store and does not provide any easy method of disabling PAD for uploading these games into other storefronts. For the best experience with your game, it is recommended to use PAD to bundle all game assets together. This approach ensures that all necessary resources are downloaded right away, preventing any missing assets which could affect the user experience.
      There are three types of asset packs that can be configured while using PAD: "Install Time," "Fast Follow," and "On Demand." Games that use the "Install Time" asset packs can be uploaded to Galaxy Store without any issues as these assets are installed together with the game and do not require any separate downloads. When Galaxy Store generates a universal APK from AAB files, the "Install Time" assets are directly included in the APK.
      Games that are designed to only use "On Demand" or "Fast Follow" asset packs do not allow downloading their assets when they are uploaded to a storefront that is not the Google Play Store. Thus, for any game that uses either the "On Demand" or "Fast Follow" asset pack delivery method, PAD must be disabled in order to upload the game to Galaxy Store.
      To ensure that your game's PAD functionality can be easily switched off and your game is successfully uploaded to Galaxy Store, the "Addressables for Android" package must be used to implement PAD.
      This article assumes that you have implemented PAD in your game using the "Addressables for Android" package and that you have also configured these two assets with the following configurations:
      A "Grass" asset pack set to be downloaded as a "Fast Follow" asset A "Ground" asset pack set to be downloaded as an "On Demand" asset In the next sections, you learn how to integrate PAD into your existing Unity game using the "Addressables for Android" package so that you can easily publish your game to Galaxy Store with minimal changes.
      Basic steps to implement PAD in your Unity game
      In this section, you learn how to configure your assets using PAD functionality that keeps your game compatible with both Google Play and Galaxy Store.
      In Unity, configure "Build Settings" to run the game on Android and generate the AAB: Click File > Build Settings and then select the Android tab. On the "Android" tab, select the Build App Bundle (Google Play) checkbox.



      Figure 1: Enabling the "Build App Bundle" option

      Install the "Addressables for Android" package from the Unity Package Manager. This additionally installs the "Addressables" package as a dependency. Initialize PAD. Go to Window > Asset Management > Addressables and click Init Play Asset Delivery.



      Figure 2: "Init Play Asset Delivery" option

      Configure the "Addressables Groups" for assets: Select Window > Asset Management > Addressables > Groups. Click New > Play Asset Delivery Assets. This creates a new group. Enter a descriptive name. For the purposes of this walkthrough, name one group "Grass" and then create another group and name it "Ground."



      Figure 3: Creating asset groups

      Assign the assets to the Addressables Group: Select the assets you want to assign to an Addressables Group and in the "Inspector" dialog box, tick the Addressable checkbox. The asset is converted into an "Addressable" and assigned to the default Addressables Group.



      Figure 4: Converting assets into Addressables

      Click the folder name in the "Group" field. In the example, the folder name is "Grass."
      Drag and drop the asset from the default group to the group of your choosing. For the purposes of this exercise, assign the grass material related assets to the "Grass" Addressables Group and ground material related assets to the "Ground" Addressables Group.




      Figure 5: Assigning assets to groups

      Configure the "Play Asset Delivery" schema for these addressable groups to add the PAD functionality to your game: Select any of the top-level Asset Group names in the "Addressables Groups" window to open the inspector window for that group. Scroll down in the "Inspector" window until you find the "Play Asset Delivery" schema. From the "Delivery Type" dropdown list, select Install Time, Fast Follow, or On Demand, based on your requirements. There is a demonstration below on how the game might behave on Galaxy Store when you choose the option "On Demand." For more information, see the Testing your PAD Enabled Game on the Play Store and Galaxy Store section.



      Figure 6: Selecting the delivery type for asset groups

      In the "Addressables Groups" dialog box, select Build > New Build > Play Asset Delivery. Now, the game's addressable-asset configuration is complete. Each asset assigned to an addressable group is packed into an asset pack for that group and the asset pack can be downloaded separately using PAD. Note that asset packs can only be downloaded separately from the Play Store if their delivery type is "On Demand" or "Fast Follow."
      Loading and using the addressable assets with AssetReference
      This section provides a script which details how to load the addressable assets that were implemented with PAD in the earlier sections. Your game is set up to load the addressable assets efficiently. If an asset has not been downloaded yet, the game automatically attempts to download it as an "On Demand" asset using PAD before it loads into the game.
      To complete this setup, use the AssetReference type in your game. This feature enables you to manage and edit addressable assets dynamically at runtime, which gives you more flexibility and control over the assets that your game uses.
      To use two game addressable assets in your script, follow these steps:
      Create two AssetReference instances for the floor types (grass and ground) that you added in the previous section. Add the SerializeField attribute to these AssetReference instances. This enables setting up the assets directly from the Unity editor: [SerializeField] AssetReference Grass_mat; [SerializeField] AssetReference Ground_mat; In the Unity editor, drag and drop the grass and ground assets into the fields in the GameObject script section. Now the AssetReferences specifically reference these two assets during runtime.
      Downloading assets during runtime is necessary for PAD. Use AsyncOperations to load these assets:
      Grass_mat.LoadAssetAsync<Material>().Completed += OnGrassAssetLoaded; Ground_mat.LoadAssetAsync<Material>().Completed += OnGroundAssetLoaded; The OnGrassAssetLoaded and OnGroundAssetLoaded handler functions are defined to use the loaded assets. The LoadAssetAsync method passes the asset using an AsyncOperationHandle, and from there you can access the asset itself using the AsyncOperationHandle.Result parameter.
      In this game, we are using PAD to load the grass and ground assets. Once they are successfully loaded, you can change the floor tile material using the following handler functions.
      In this example, after loading the grass and ground assets, you apply the material change to all the floor tiles in the level:
      void OnGroundAssetLoaded(AsyncOperationHandle<Material> handle) { groundMaterial = handle.Result; foreach (GameObject prefab in floorPrefabs) { prefab.GetComponent<MeshRenderer>().material = groundMaterial; } } Save the script and go back to the Unity editor. The new materials are loaded and applied to the floor tiles in the level.

      Testing your PAD-enabled game on the Play Store and Galaxy Store
      The game configuration for using addressable assets and PAD is complete. Before publishing your game, consider whether to use the "Split Application Binary" option.
      On the Android Player settings, expand "Publishing Settings," and scroll down to the "Split Application Binary" checkbox. This checkbox decides how Unity handles packaging when building the game. If this checkbox is checked, Unity splits the base game files from the asset files when building the AAB and enables you to configure each PAD feature in your game. In the images below, you can see what happens when you choose this option. If this option is unchecked, Unity always generates a singular archive file and disables PAD. This is the safest option for uploading your game to Galaxy Store, if your PAD configuration is using options that are not supported by Galaxy Store.



      Figure 7: "Split Application Binary" option

      To enable PAD, check the "Split Application Binary" option Build the game and upload the generated AAB file to both the Play Store and Galaxy Store to check how the game behaves in both stores. If the game assets load correctly in both stores, the PAD configuration was done correctly. Below is an example of what might happen if "On Demand" configuration is used instead.
      When the game is downloaded from the Play Store, Unity automatically downloads the "On Demand" assets. A notification for an "Additional file download" appears during the download process:




      Figure 8: Additional file download notification

      Once the download is complete, the downloaded asset is loaded in your game, replacing the previous assets. In this example game case, the old ground and grass materials are changed to the new textures configured in the previous section.




      Figure 9: Assets updated in the game

      However, when the same game AAB file is uploaded to Galaxy Store and a user downloads it from this store, the PAD assets are not downloaded. Thus, when the game tries to use these assets, they cannot be loaded into the game's memory and glitches might appear.
      While additional error checking can be done to avoid these glitches, the functionalities which require PAD assets still cannot be used. Internally, the game checks the installation source before trying to download the PAD assets and throws an error if the game is not installed from the Play Store.




      Figure 10: Issues might occur if a PAD-enabled game is uploaded to Galaxy Store

      Making the game compatible with Galaxy Store
      To upload your game to Galaxy Store, you can adjust the asset handling to be compatible with Galaxy Store. The best way to do this is by bundling the assets together with the base game, as explained in the previous sections.
      This method is highly recommended. This ensures that the required assets are always available with the game, as well as allowing you to change the assets during runtime, if necessary. Though this can increase the game download size and require you to upload a separate AAB file to Galaxy Store, the process ensures that the assets are always available with the game for full feature parity across all storefronts.
      To make your game build compatible with all storefronts, choose one of the following approaches.
      Option 1: Uncheck the "Split Application Binary" checkbox
      Go to Build Settings > Player Settings > Publishing Settings and uncheck the Split Application Binary checkbox. When you then compile the game, the new AAB file is compatible with Galaxy Store and all the game's functionalities remain intact.




      Figure 11: "Split Application Binary" unchecked option.

      With this option, the assets are packaged together with the game and no separate download is required.
      Option 2: Change delivery type to "Install Time"
      If you want to keep using PAD, you can achieve compatibility by changing all addressable asset groups' delivery type to "Install Time." Keep in mind that when choosing this option, all assets need to be changed to "Install Time" one by one, while the previous one is a one-click process. Unlike "On Demand" and "Fast Follow" asset packs, "Install Time" asset packs are included in the universal APK. Thus, the assets are downloaded together with the game and work as intended without causing errors.
      From the user's perspective, the main difference between "Install Time" and other PAD options is whether the assets are downloaded when the game is installed or later during gameplay. The initial download size is larger when the assets are packaged together with the game, but on the other hand, the user will not need to wait for the assets to download later during gameplay. This enables offline gameplay as well.
      Conclusion
      In this tutorial, you have learned how to configure a Unity game with PAD so that it can easily be published to Galaxy Store without requiring massive changes or breaking any compatibility. For more information, check out the "Addressables for Android" package documentation page Build content for Play Asset Delivery. If you have any feedback or questions, reach out to us in the Samsung Developers Forum.
      View the full blog at its source
    • By Samsung Newsroom
      ▲ Vincent van Gogh’s “The Starry Night” (detail) (1889) shown on The Frame by Samsung. Photo: Samsung
       
      Twenty-seven well-known artworks from MoMA’s collection, including those by artists Frida Kahlo, Henri Matisse and Georgia O’Keeffe, are available on the Samsung Art Store today, exclusively to The Frame by Samsung, a best-selling Lifestyle TV that doubles as a piece of art. When it’s on, use The Frame to watch your favorite movies and shows in brilliant 4K resolution. When it’s off, explore the Samsung Art Store to transform any space in your home with a vast catalog of artworks that are handpicked and curated from hundreds of institutions, artists and collectors around the world.
       
      MoMA was founded in 1929 by three progressive women who championed modern and contemporary art and wanted to establish a museum that could be a catalyst for experimentation, learning and creativity. In collaboration with MoMA, the Samsung Art Store includes highlights from MoMA’s collection that were selected by Daria Greene, Global Curator of the Samsung Art Store, to honor the institution’s history and vision, and includes Frida Kahlo’s “Fulang Chang and I” (1937), which is the first artwork by the legendary Mexican artist to arrive on the platform.
       
      ▲ Piet Mondrian’s “Trafalgar Square” (1939-43) shown on The Frame by Samsung. Photo: Samsung
       
      “MoMA is a place that fuels creativity, ignites minds and provides inspiration. Through our relationship with Samsung, we are broadening access to MoMA’s collection in a truly innovative way to millions of people,” said Robin Sayetta, Head of Business Development at The Museum of Modern Art. “We were purposeful in building this new digital collection and hope to enrich the lives of art enthusiasts with culture and history at an extraordinary scale.”
       
      ▲ A view of the fifth-floor collection galleries. Shown: Claude Monet. “Water Lilies.” 1914–26. Oil on canvas, three panels. Mrs. Simon Guggenheim Fund. © 2024 The Museum of Modern Art, New York. Photo: Noah Kalina
       
       
      Expanding Access to Art Through Innovation
      Included in the more than two dozen artworks from MoMA are celebrated works such as Vincent van Gogh’s “The Starry Night” (1889), Henri Rousseau’s “The Dream” (1910) and Georgia O’Keeffe’s “Evening Star III” (1917). This selection represents a diverse range of styles and points in time, offering something for every art lover and Samsung Art Store subscriber.
       
      ▲ A view of the fifth-floor collection galleries. Shown: Vincent van Gogh. “The Starry Night.” 1889. Oil on canvas. Acquired through the Lillie P. Bliss Bequest. © 2024 The Museum of Modern Art, New York. Photo: Noah Kalina
       
      “At Samsung, we strive to redefine the home entertainment experience through continual innovation. Our collaboration with MoMA allows us to bring culturally significant works into millions of homes, allowing people to engage with renowned art in a truly remarkable way,” said Sang Yoon Kim, EVP and General Manager of the North America Service Business at Samsung Electronics. “This endeavor exemplifies Samsung’s mission to use technology to deliver exceptional experiences into the everyday lives of consumers.”
       
      “For nearly 100 years, MoMA has been instrumental in expanding the reach and impact of Modern and Contemporary art, cementing its position as one of the most dynamic and diverse institutions globally. Through this collaboration, we are able to share works by incredible artists, including 20th century female trailblazers, on the Samsung Art Store,” adds Daria Greene, Global Curator of Samsung Art Store.
       
      ▲ Hannah Höch’s “Untitled (Dada)” (detail) (1922) shown on The Frame by Samsung. Photo: Samsung
       
      The Samsung Art Store is available only on The Frame, which has been refreshed in 2024 to deliver an even more complete artistic and aesthetic experience. That includes ArtfulColor validation from Pantone,1 the industry leading color experts. As the world’s first and only art TV to achieve this validation, The Frame delivers natural and realistic visuals that wouldn’t look out of place in a gallery. It hangs just like a picture flush against the wall and is available in class sizes ranging from 32 to 85 inches. The bezels2 can also be swapped out with various colors and designs, giving you more ways than ever to customize The Frame for your unique style and décor.
       
      The Frame also delivers value-add features that you can only find from Samsung — the #1 global TV brand for 18 years and counting.3 Samsung AI technology makes everything you watch look clearer and crisper, while you enjoy access to 2,700+ free channels, including 400+ Samsung TV Plus4 premium channels. You can also use your TV as your smart home hub and ensure your personal data is protected by Samsung Knox security.
       
      The Frame is available for purchase at MoMA Design Store at store.moma.org, Samsung.com and other select retailers.
       
      The Introduction of Highlights from MoMA’s Collection follows the Samsung Art Store’s relationships with world-class museums including The Metropolitan Museum of Art and Musée d’Orsay, and the release of several collections this year featuring René Magritte, Jean-Michel Basquiat and over 40 Marimekko artworks. Samsung remains committed to being the premier destination for experiencing a wide breadth of high-quality digital art.
       
       
      1 Pantone company provides a universal language of color, called Pantone Matching System, that enables color-critical decisions through every stage of the workflow for brands and manufacturers.
      2 Bezels sold separately.
      3 Source: Omdia, Jan 2024. Results are not an endorsement of Samsung. Any reliance on these results is at the third party’s own risk.
      4 Available for free on Samsung Smart TVs released after 2016, Galaxy devices, Smart Monitors, Family Hub refrigerators and the web.
      View the full article





×
×
  • Create New...