Filter
-
Content Type
-
Category
Mobile/Wearable
Visual Display
Digital Appliance
Platform
Recommendations
Filter
announcement galaxy watch, mobile
blogthe latest edition of galaxy unpacked was held on wednesday, august 5th, and for the first time it was virtual. we unveiled five new devices that empower work and play. galaxy unpacked featured lots of exciting updates for our designer and developer community, and what was mystery became mystic (bronze). you can watch the full livestream on youtube, or fast forward to these time codes for key moments 8:50 galaxy note20 and note20 ultra 53:45 galaxy watch3 1:08:01 galaxy z fold2 be sure to check out our galaxy watch3 artboards, now available on the galaxy store asset creator. and now, here are the key takeaways on each of the new devices unveiled at galaxy unpacked. galaxy note20 and note20 ultra the galaxy note20 series is a productivity powerhouse that works like a computer and lets users game like a pro. the series comes in two versions: galaxy note20 ultra, designed for note fans who demand the ultimate in power and productivity, and galaxy note20, for those note users looking to maximize their time for work and play. the galaxy note20 series includes the ever-popular s pen. developers, you can leverage the s pen remote sdk, s pen framework, and air actions to enhance the experience of your apps and games. as part of our continued partnership with microsoft, xbox game pass is coming to galaxy store. with an xbox game pass ultimate subscription, users will be able to play their favorite xbox games in the cloud (beta) right from their galaxy device. galaxy users are always looking for new games to play, so be sure to submit your own game to galaxy store. if your game has in-app items for sale, be sure to check out the samsung in-app purchase sdk which lets users transact with any of the payment methods associated with their samsung account, including samsung pay and samsung rewards. we also have numerous technical resources and best practices on optimizing your game and getting the most out of the device gpu in galaxy gamedev. we also unveiled the new wireless version of samsung dex. as samsung dex becomes even easier to use, you'll want to ensure your apps are optimized for samsung dex. our resources detail how to add multi-window support, handle runtime configuration changes, and support different input modes. galaxy watch3 the galaxy watch3 is a next-generation companion for managing routines, smashing fitness goals, and taking ownership over health. built with premium materials and a slimmed-down version of the popular rotating bezel, galaxy watch3 features the craftsmanship of a luxury timepiece, while still being comfortable enough to wear all day and all night. developers can build tizen-based apps while designers can build watch faces with galaxy watch studio to enhance and customize the user's experience. we will begin reviewing new watch face designs starting next week, but you can get a head start on the requirements now. as we mentioned, a new version of the galaxy store asset creator, which includes the galaxy watch3, is now available. new lifestyle photo assets featuring the galaxy watch3 are available as well. the new galaxy watch3 runs tizen 5.5. developers can check out this video tutorial to learn what is new in tizen 5.5. galaxy z fold2 last, but certainly not least, was the galaxy z fold2. this device builds on the experience of both the galaxy fold and the galaxy z flip to deliver unique foldable experiences. more details about the galaxy z fold2 will be released on september 1st. in the meantime, check out our resources on designing and optimizing for foldable devices. wrap up we also showcased the galaxy tab s7 and s7+, devices where your apps and games will be featured in galaxy store. the galaxy buds live introduced a new shape for wireless earbuds, an ergonomic design that’s being described as the perfect fit. can't get your hands on a physical device? stay tuned to our news feed - we'll announce when the new devices are available in our remote test lab. we can't wait to see what you create for these new devices. make sure to join us on the developer forums to share what you're working on and get your questions answered. catch up on all of yesterday's announcements on the samsung newsroom or watch the replay on youtube.
Lori Fraleigh
events mobile, ai, iot
blogtoday we wrapped up #sdc18 on a high note! day two started off with a spotlight session featuring a panel with the creators from two of the world’s most popular games, fortnite and pokémon go. if you didn’t get a chance to tune in live, you can catch the replay. the action continued on the floor with lots of activity at the samsung pen, smartthings and bixby booths, just to name a few. there was no shortage of learning and collaboration, as developers made the most of their time at #sdc18. here are the highlights from today: positioning samsung to be a game changer with more than 2 billion gamers in the world, samsung is committed to creating a future where the hundreds of millions holding a samsung device are also holding a game controller. today they showed their support towards helping developers bring the mobile gaming experience to the next level. samsung announced that in the next year galaxy gamedev will expand to include even more cutting-edge tools to help developers create more immersive and unique experiences for gamers. to help bring a high-fidelity, console-like game experience to mobile phones, the vulkan api was enhanced to offer 10 percent improved performance compared to the opengl es. another improvement is the gpuwatch that will allow developers to measure graphics performance and view on-screen information while gaming in real-time. this insight into game performance will help developers optimize their games more efficiently and easily. it was also announced that the all-new galaxy store, set to launch in 2019, will become the single destination for all digital items related to galaxy devices. this will make it easier for gaming partners to deliver their latest creations to fans, as well as more convenient for consumers to discover and download everything from new games to apps. along with its key partnerships with some of the world’s biggest game companies such as epic games, square enix and niantic inc., samsung has built an unparalleled mobile gaming platform that makes having fun on the go easier than ever. samsung talking about #gaming @tkomobile says our engineers might not be fluent in english but they speak your language! #sdc18 pic.twitter.com/u7adfrwkwc— carolina milanesi (@caro_milanesi) november 8, 2018 creating a more intelligent pen stylus today it was announced that the s pen remote sdk is now available for integration with apps. developers can use the s pen’s remote-control feature to provide a unique experience in apps. and the best part is that it’s very easy to code. with the help of developers, samsung is planning to take the stylus pen from writing tool to a multi-purpose tool. from cameras to games, the possibilities are endless! additionally, wacom joined the stage and announced their wacom ink layer language, will 3.0, to help take digital ink to the next level. will 3.0 brings augmented reality, 3d creation and digital data to the drawings of users. combined with the power of ar technology on note9, users can turn their sketches into 3d renderings. will 3.0 is also ai ready, capturing all relevant data needed for deep learning. the technology captures the semantics and biometric information from the ink, creating a more personal digital experience. together with will 3.0, samsung is able to add a more personal touch to its devices. with the help of bixby users will be able to search through their notes with voice commands. and combined with the samsung pass, will 3.0 is adding a layer of intelligence to digital authentication. it’s biometric signature id can even track the history of signatures! it’s safe to say that samsung and wacom are bringing the pen into the 21st century! sdc bixby capsule showcase finale in addition to all these big developments, the bixby challenge came to a close. the five finalists took the stage to show off the capsules they developed using the bixby platform. it wasn’t an easy choice for the judges, and after much deliberation they came to a decision. congratulations to the winner! best of show: roger kibbe for his one bin app thanks to all the developers, designers, creators, partners, sponsors and everyone else who joined us at #sdc18. it truly was a great event and we’re excited to see how you bring all our announcements to life. follow us on @samsung_dev to keep the conversation going and keep an eye on our blog for technical content that will bring your dev game to the next level. see you next year!
Samsung Developer Program
tutorials game, mobile
blogintro foldable technology for mobile is a ground-breaking experience not only for users, but also for developers. the presence of many form factors, like immersive display, app continuity, flex mode, and ux optimization, challenge developers to think outside of the box to adapt to this technology. there are already a large number of blogs talking about general application considerations, but what about gaming on a foldable device? in this blog, we look at the challenges and new opportunities foldable devices present for mobile game development. this blog focuses on unity and unreal engine as they are the most common game engines for mobile development. however, a lot of the information applies to other engines as well. app continuity and multi-window mode firstly, let's establish that the large internal display is called the main display whilst the smaller external display is called the cover display. app continuity and multi-window mode are two key features of foldable smartphones. with app continuity, you can seamlessly transition between the cover display to the main display without needing to reopen the app. with multi-window, you can run multiple apps at once and multitask like never before. app continuity moving an app between the two displays affects the size, density, and aspect ratio of the display it can use. app continuity is enabled and disabled from the android manifest of the app: the <activity> element has a new attribute called resizeableactivity. if not set, this attribute defaults to true, thus enabling app continuity and assuming the app fully supports both app continuity and multi-window mode. if set to true then the application automatically attempts to resize when moving between displays, as shown in the video below. if set to false then the system still allows you to transition from the cover display to the main display but does not attempt to resize the application. instead, a new button appears, allowing the user to restart the application at a time of their choosing, as shown below. when the app transitions between the two displays, the activity is destroyed and recreated. as such, the app data needs to be stored and then used to restore the previous state. from testing, both unity and unreal engine appear to handle this process already. however, if you are developing on a custom engine, it is worth confirming that your engine/app can handle this. continue on cover screen by default, foldable devices simply lock the device when closing the main display. however, it is possible for users to disable this functionality for certain apps. in the device's display settings, there is an option called "continue on cover screen" that has to be enabled by the user. entering this menu displays a list of all applications on the device and enables users to set specific applications to not lock the device when closing the main display. if an application has resizeableactivity set to false then the option to enable this functionality is greyed out and is not available. if your application supports resizing and app continuity then you should make sure to test that this works as users may wish to enable this functionality on their device. multi-window mode multi-window mode can allow up to three apps to run at the same time in a split-screen arrangement (see left image) or for two apps to run in pop-up mode which keeps one app full-screen but creates another app in a smaller pop-up window (see right image). just like app continuity, this is enabled using the attribute resizeableactivity in the android manifest. if resizeableactivity is not set then it defaults to true. so again, it is recommended that you set this yourself to ensure that your app works as intended. app continuity without multi-window mode if you would like your app to support app continuity but don't want it to be used by the multi-window mode, then this is possible. first, you should set the resizableactivity attribute to false to disable both app continuity and multi-window mode. next use the following <meta-data> element in your <activity> element: <meta-data android:name="android.supports_size_changes" android:value="true" /> this re-enables the app continuity feature without enabling multi-window mode. game engine features to use if using existing game engines then there are several existing features that are useful if developing for foldable devices. this section provides a high-level look at these features. for more in-depth information, i recommend visiting the engine's documentation. unity unity is a very good engine for developing on foldable devices, requiring little to no setup to enable features for foldable devices. the engine automatically handles resizing of the application without any modifications required. the resizeableactivity attribute is controlled by an option in the player settings: resizable window. when enabled, resizeableactivity appears to be set to true; when disabled, resizeableactivity appears to be set to false. note this option is not available in older versions of unity. if this option is not present then you have to set the resizeableactivity manually. the engine also provides a very robust ui scaling system that helps to reduce the amount of work required to create a ui that works across both the cover display and main display. the canvas scaler and anchor system work very well with foldable devices and work to resize and position elements consistently across the two displays, thus preventing developers from having to create two ui designs (one for cover display and one for main display). unreal engine 4 unreal engine 4 is another good engine for developing on foldable devices, although it requires a little more work to get it set up for foldable devices. first of all, unreal engine 4 by default disables the resize event on android devices, however, it is possible to re-enable it in device profiles using the console variable: r.enablenativeresizeevent = 1 unreal engine 4 by default also has a max aspect ratio of 2.1. this is, however, too small for the cover display of some foldable devices which can result in black bars on either side of the image. fortunately, unreal engine makes this value easily changeable in the project settings: platform -> android -> max aspect ratio from my testing, 2.8 is a good value. however, i recommend users experiment to find the best value. unreal engine's umg (unreal motion graphics ui designer) has a comprehensive set of tools for creating responsive ui designs. this system automatically scales ui elements to fit the screen size, and the anchor system is also very useful for ensuring the ui elements are positioned correctly between the two displays. samsung remote test lab no matter what engine you use, the best way to ensure your app works well on a foldable device is to test it on a foldable device. samsung remote test lab has a range of foldable devices available for developers to test their applications on if getting hold of a physical device is too difficult or expensive. all you need to do is create a samsung account and you can start using these devices for testing. android jetpack windowmanager despite being very good engines for foldable game development, neither unity nor unreal currently provide information about the current state of the foldable device (that is, is it open/closed/halfway?, where is the fold positioned?, what is the fold's orientation? and so forth). however, android has recently created a new library as a part of their android jetpack libraries that enables developers to access this information and make use of it in their apps. android jetpack in their own words is "a suite of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across android versions and devices so that developers can focus on the code they care about." windowmanager is a new library from the android jetpack suite, intended to help application developers support new device form factors and multi-window environments. the library had its 1.0.0 release in january 2022, and targeted foldable devices but—according to the documentation—future versions will extend to more display types and window features. more technical resources this blogpost has an accompanying technical blogpost and code lab tutorial, demonstrating how to use the android jetpack windowmanager with both unity and unreal to take advantage of the flex mode feature of samsung's foldable devices. i recommend starting with the jetpack windowmanager blogpost to learn how to set up the windowmanager in java: https://developer.samsung.com/galaxy-gamedev/blog/en-us/2022/07/20/how-to-use-jetpack-window-manager-in-android-game-dev then, follow it up with the code labs to learn how to make use of the windowmanager to implement a simple flex mode setup in either unreal or unity: https://developer.samsung.com/codelab/gamedev/flex-mode-unreal.html https://developer.samsung.com/codelab/gamedev/flex-mode-unity.html also, visit our game developer community to join the discussion around mobile gaming and foldable devices. click here to find out more about other design considerations when designing apps for foldable devices and large screens. final thoughts foldable devices provide a richer experience than regular phones. hopefully, this blogpost and accompanying tutorial have provided you with the necessary information to begin taking advantage of these new form factors and start providing users a richer foldable experience. additional resources on the samsung developers site the samsung developers 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 and subscribing to our monthly newsletter. visit the galaxy store games page for information on bringing your game to galaxy store and visit the marketing resources page for information on promoting and distributing your android apps. finally, our developer forum is an excellent way to stay up-to-date on all things related to the galaxy ecosystem.
Lochlann Henry Ramsay-Edwards
featured
bloganother year will soon be past and, like many of you, we’re looking forward to next year. we’ll be taking some time the next few weeks to be with our families, and will be back in 2022 with more blogs, podcasts, product announcements, and ways for you to succeed with galaxy store and samsung platforms. with the end-of-year holidays upon us, we’re stopping to reflect on what we did in 2021. even with covid making a disruption in everyone’s lives, we’re still here to help developers find answers and hopefully, also find success. here are some of our most memorable moments. 10. developer portal refresh brought a modern look and support for mobile we’ve been working for several years to bring samsung’s developer portal into a single web infrastructure. we moved content from multiple servers and cloud services into a cms that uses open standards and a responsive design for mobile devices. we pored through a decade of content to make sure it was still timely and accurate for your needs today. we integrated the developer forums to use the same samsung account login for both the developer portal and seller portal to give you a more seamless experience. in october of this year, we made a ux refresh to the site and the most amazing thing is how easy that process went. there were no late nights in the weeks prior to launch. we were able to test the new ux in a sandbox rigorously. then the deployment to production happened almost instantaneously. we spent less time worrying about our website and more time creating the content you need to do your work. we understand how important the samsung developer portal is to you and your work. that’s why we took the time to ensure a smooth transition as we made major infrastructure changes. 9. monthly updates keep developers up-to-date on new galaxy store features the galaxy store product management team began publishing monthly newsletters to enlighten developers of the latest features and improvements to seller portal. these updates also usually appear as blog posts in the first week or two of the month. some of the major announcements include: staged app rollouts (october) local currencies in settlement and financial reports (september) private beta testing (july) galaxy store developer api (april) look for more exciting improvements in 2022 as galaxy store continues to innovate. 8. unpacked events bring exciting new product announcements galaxy unpacked in january 2021 brought announcements of the galaxy buds pro, galaxy s21, and the new galaxy smarttag. the event highlighted samsung’s design concepts with one ui 3 and integrated experiences from partners like microsoft and google. the august galaxy unpacked event brought announcements of galaxy z fold3 and galaxy z flip3 phones. these devices have many new hardware and software features for developers to build upon. this blog post highlighted many of the ways that developers can implement features supporting flex mode and s pen remote, while ensuring that users have a seamless experience with app continuity. the most anticipated announcement of the august galaxy unpacked event was the unveiling of galaxy watch4, featuring wear os, powered by samsung. as with the tizen-powered galaxy watch devices, samsung released a new tool, galaxy watch studio converter, to help existing designers bring their watch faces to wear os. designers could also start a new watch face project from scratch with the newly-released watch face studio tool. 7. remote test lab updates allow developers to experience the latest hardware as new devices are announced, developers can use the remote test lab (rtl) to ensure that their apps work properly on the new version of one ui as well as different screen resolutions and pixel densities. in 2021, the rtl development team added support for foldables and galaxy s21 devices, allowing developers to ensure their apps work correctly before the devices are available to consumers. the rtl team also added support for android studio. in september, thousands of devices were added in data centers around the world to ensure that a compatible device is always available. as part of this release, rtl was re-engineered to work exclusively in the chrome browser, so that no external software is needed to test apps on all the latest devices. 6. samsung developer forums activity the samsung developer forums, based on the popular open-source discourse project, were introduced in january 2020, replacing an aging forum infrastructure that didn’t work well on mobile devices. by using the same samsung account authentication method as the samsung developers site, we’re able to provide a nearly-seamless experience across different hosts and platforms. since their introduction, we’ve seen large numbers of visitors stop by the forums with questions. community manager ron liechty has more than 25 years of experience in managing healthy communities—his knowledge and guidance keeps the forums a useful resource for developers. some of these visitors have become our best community members, providing valuable feedback to their peers as well as helping to moderate spam and malicious content. 5. supporting game developers in 2021 games are a noticeable part of the galaxy store experience and we work with many partners and internal teams to ensure that gamers have a great experience on galaxy devices. the galaxy gamedev team works closely with some of the top publishers and developers to improve performance of top titles on mobile. this team creates tools that provide great detail on the performance of the cpu and gpu during intense moments of gameplay. the gamedev team then documents their efforts in a series of best practices and blog posts to help developers everywhere. in addition to our internal team work, we frequently work with our partners at arm to deliver relevant content for game developers. this summer, we published and promoted a number of educational articles, webinars, and training series in cooperation with the arm developer team. best practices for mobile game developers and artists new vulkan extensions for mobile: maintenance extensions new vulkan extensions for mobile: legacy support extensions new game changing vulkan extensions for mobile: descriptor indexing new game changing vulkan extensions for mobile: buffer device address new game changing vulkan extensions for mobile: timeline semaphores mike barnes from the gamedev team, together with eric cloninger from the samsung developers team, presented at the virtual gdc2021 event in july. gdc is an important event for all of us at samsung and we hope to see you all there at the live event in march 2022. 4. new voices appeared on samsung developers podcast, season 2 shortly before the covid-19 pandemic changed our lives, tony morelan from samsung developers attended a podcasting event and came back to the office inspired to start a podcast. he lined up guests from internal teams and important partners. everyone had a great time participating and it gave us a way to continue delivering quality content to developers. as 2020 turned to 2021, we continued bringing interesting guests from across the mobile design and development ecosystem. we used the podcast to talk about the upcoming virtual samsung developer conference and chat with the people that made the event a success. here are some of the highlights from season 2 of the samsung developers podcast: drazen stojcic, urarity – watch faces, design tan nguyen, butterfly-effected gmbh – galaxy themes, marketing, licensing the samsung internet advocacy team – web standards, privacy, foldable devices we’re still hoping for a return to days where we can travel and meet in person, but until that time comes, please join us in listening to these industry veterans and top developers on the samsung developers podcast. season 3 begins in early 2022. 3. blog series instructs readers on design and successful marketing without live events the past two years, we have searched for new ways to continue delivering timely and helpful advice to mobile app designers and developers. as mentioned previously, we worked with arm this year to bring great technical content front and center. we also worked with our network of top designers, developers, and thought leaders on concepts that will help you succeed on galaxy store and in creating better experiences for your users: better for all – in this blog series, we talked with leading designers and experts to help understand the increasingly important concepts behind the diversity, equality, and inclusion movement. this series discussed aspects of language used in apps, themes, and watch designs. it also highlights important guidelines to ensure apps and web sites are accessible to users with sight, mobility, and hearing impairments. better for all: mobile accessibility better for all: inclusive policies with daniel appelquist better for all: equal accessibility better for all: bringing diversity to design with eglantina hasaj and manpreet kaur better for all: diversity in design better for all: developing and designing for diversity refresh for success – it’s not enough to simply submit a title to a digital marketplace and assume success will follow and continue without extra effort. in this series, top galaxy store designers and developers talk about how they maintain their product lines to ensure a steady flow of revenue and new customers. refresh for success: maintain quality themes design with olga gabay from zeru studio refresh for success: improve your process to keep designs fresh with tan nguyen from butterfly-effected, gmbh refresh for success: improve your process and de-clutter your galaxy store with drazen stojcic from urarity prime time design – finding success in designing new products is an intensely unique and personal process. the prime time design series includes interviews with some of the most unique people creating for galaxy store. read how these talented people inspire themselves and how they convert that inspiration into action. prime time design: unpacking the creative process with ramon campos from friss in motion prime time design: unpacking the creative process with pedro machado from health face prime time design: unpacking the creative process with john shih from x9 studio strategies for success – tony morelan was a successful watch face designer before coming to work with the samsung developers team. we’re grateful for his knowledge of design as well as how to turn designs into revenue. in this four-part series, tony points out steps to creating successful galaxy store product submissions. strategies for success: selling your apps strategies for success: understanding consumer trends strategies for success: building your fan base strategies for success: making your brand successful 2. best of galaxy store awards highlight successful developers the galaxy store app on your mobile device is more than just an app. behind the scenes, there is a team of developers, product managers, business leaders, and security experts devoted to ensuring the best possible online experience for consumers in 180 countries. because of their dedication, developers and designers have a great platform for monetizing their work. each year, the samsung developers team works with the galaxy store operations and business development teams to determine the best games, apps, and themes based on revenue, downloads, and impact to consumers. the result is the best of galaxy store awards. in 2018 and 2019, the best of galaxy store awards were presented live, on stage, at the samsung developer conference (sdc). without a live event in 2020 or 2021, the samsung developers team decided to continue the tradition of highlighting and awarding our top galaxy store products. even without an in-person event, we used a live premiere on youtube to have a single moment in time to celebrate with the winners. tony morelan emceed the event, but he had a lot of help from ron liechty, jeanne hsu, susie perez, and shelly wu. we thank them for their hard work. we hope you’ll enjoy watching! look for the “best of galaxy store” sash on apps, games, themes, and watch faces in galaxy store to know that you’re getting a truly unique experience. 1. discovering new opportunities at sdc21 each year, the samsung developer conference is the culmination of an incredible amount of planning and work by hundreds of people. even though the event was virtual in 2021, there was still a huge volume of work. instead of preparing for a live audience, our teams practiced in front of a galaxy phone on a tripod (really). instead of building booths and planning meals, we built a website and social media campaigns to reach a larger audience. eric cloninger and tony morelan kicked off the promotion for sdc21 with a podcast featuring a previous sdc speaker, chris shomo. before the conference, visitors were invited to create whimsical caricatures of themselves using the mysdcstack mini-site and submit their designs to social media. by participating in the event website, watching sessions, and trying the code labs, visitors would earn points toward a prize drawing after sdc. relive the experience of sdc21 by watching the keynote or any of the highlight sessions and technical talks by viewing this playlist wrapping up when sdc is finished, our team takes a collective deep breath, happy to be done. it is a satisfying experience to pull off a big industry event. we don’t know yet how we’ll handle live events, but we remain optimistic that some will occur. we are making plans and we hope we’ll be able to see you, somewhere, in 2022. 🤞 take care. stay warm (or cool). best wishes to you all and happy new year!
events game, mobile
blogbeing the host of the samsung developers podcast, i have had the opportunity to interview many great game developers over the years, but had yet to immerse myself in the gaming community. that was until i attended gdc 2022, the game developers conference held at moscone center in san francisco. gdc is the premiere conference related to the gaming industry. the annual conference brings together game designers, audio producers, programmers, artists, writers, and many more industry professionals from all around the world. networking at the expo as with most conferences, networking was one of the key benefits of being at an in-person conference. walking the expo floor allowed me to chat with so many amazing tech companies to learn about the latest game development tools and services. dolby. connecting with the reps at dolby, we talked about the different ways our team at samsung can help promote dolby atmos, their simulated surround sound technology available on samsung devices, to mobile game developers. wigi. the amazing people at wigi (women in games international) are doing great things. i learned how they are impacting the global games industry to advance economic equality and diversity for women and their allies. sequence. as i explored the expo, i was on the lookout for anything related to web3 and nfts. the team at sequence told me how they are helping game developers build for web3 and the world of nfts in the marketplace/metaverse, and simplifying crypto-transactions for gamers. sessions & sessions, and more sessions the expo floor was a great quick overload of everything game-tech-related, but the sessions allowed for a more comprehensive learning environment on many diverse game development topics. during the five-day conference, i attended over 25 sessions, learning in great detail from many inspirational speakers. sessions covered everything from designing and programming, to business and marketing, and so much more. below are highlights from several of my favorite sessions. free-to-play summit: the f2p game design challenge steve meretzky, abigail rindo, fawzi mesmar, shelby moledina, amanda schuckman free-to-play has dominated the gaming market and has intrigued me because it is a big part of mobile gaming. this session was very insightful as each of the different teams pitched their game ideas, explaining how they would generate revenue within a free-to-play game. the winners of this challenge quickly became audience favorites with their animal sanctuary game concept and real-world connection, giving players the opportunity to donate to their favorite animal foundation. session description: for many years, the game design challenge was one of the most popular sessions at the gdc. now, the advisory board of the free-to-play summit is proud to revive this gdc tradition, with a free-to-play focused version of the challenge. four free-to-play designers will have been given marching orders, and tasked with designing a game around that given problem. all four will present their idea to the summit audience, followed by an audience vote. innovative thinking and lively presentations are in store for all attendees! the theme of this year's challenge is designing for minnows. free-to-play games are almost always tuned to extract most of their revenue from "whales" -- those super-fans of the game who spend the big bucks, while the other 99.9% of the game's players spend little or nothing on it. we've challenged three free-to-play designers to come up with a design for a game that will extract the vast majority of its revenue not from "whales" but from "minnows" ... players who, over their entire lifetime, spend $10 or less. lost words: beyond the page dan gabriel of all the sessions that i attended, this one touched me the most. i wanted to learn more about the importance of narrative within the gameplay but received so much more from this session. dan gabriel’s approach to public speaking felt more like a storyteller than a conference speaker. lost words: beyond the page is not just a game, but a way for people to learn about themselves as they experience the challenges of life. session description: lost words: beyond the page leads the player into a rabbit hole of emotions to emerge, weary but fulfilled, on the other side of grief. attend to see how narrative and gameplay work together to create a deep, emotional bond. how metaphors pull the player deeper into the experience and how psychology shaped a story of a girl, a gran and a fantasy world. 'unpacking': the fun behind the foley jeff van dyck i love sound and everything that comes with the production of capturing sound effects (foley). seeing how this small team (husband, wife, and daughter) took on the challenge of not only creating 14,000 unique sounds, but also integrating all 14,000 sound files into the game and how that created its own set of challenges. session description: "unpacking has 14,000 foley audio files!" was a tweet that went viral in nov 2021. audio director and composer jeff van dyck (alien isolation, total war, ea sports) takes us through the unexpected complexity he and his wife angela encountered while they produced the foley for unpacking. understanding nfts: a sea-change for f2p games jordan blackman this session was exactly what i was hoping for: more insight into the new world of nfts (non-fungible tokens), blockchain, and crypto, and how they can impact f2p (free-to-play) games. as web3 games are developed, we will see more disruption to the current f2p space because these games are powered by the player community and not a single entity. session description: nfts are a consumer-driven phenomenon growing at dizzying speeds. more than merely a new way to offer iap, nft technology is set to disrupt game fundraising, community development, social media marketing, and even the very nature of the consumer/creator relationship. in this session, game designer jordan blackman will show the surprising ways nfts are already changing the game, as well as some predictions of what is to come. 'wordle': doing the opposite of what you're meant to josh wardle i am one who has definitely been swept up in the wordle craze, and getting to hear from the creator of wordle, josh wardle ... yes that is his name, was fascinating. the story of how he created the game was simple. the stories he shared about the simple connections people were making through sharing their daily wordle were absolutely wonderful. session description: wordle went from a personal gift to a global phenomenon in 3 months. this talk explores the decisions that were made throughout its development that run contrary to conventional wisdom around building successful mobile games, from wordle's origins to its seven-figure sale to the new york times. the talk also explores the human elements and considerations of creating, growing, and selling a game, both from the perspective of the developer and the game's audience. gdc vault: stream on-demand even though the conference has concluded, many of the sessions will be available to stream on-demand through the gdc vault. sponsored sessions are available for free, while technical sessions and gdc show content will require a paid subscription. if you are looking for samsung content, be sure to check out the following samsung sessions that were presented at gdc. you can view two of the sessions on youtube and all are available on the gdc vault. game performance optimization with causal models youtube · gdc vault what if your phone's avatar is in the game or metaverse? youtube · gdc vault new gpu, the ultimate reality! gdc vault unfolding your gaming potential with galaxy gamedev gdc vault awards show celebration the high point of the conference definitely was the awards show, presented by both the independent games festival and the game developers choice awards. the evening was full of recognizing not only the amazing winners, but all those nominated and truly how creative, innovative, and engaging the past year in game development has been. you can check out the full awards show below. inscryption the big winner of the evening was inscryption, taking home not only game of the year from game developers choice awards, but also the grand prize award from igf, along with awards for excellence in audio, excellence in design, and excellence in narrative. game description: from the creator of pony island and the hex comes the latest mind melting, self-destructing love letter to video games. inscryption is an inky black card-based odyssey that blends the deckbuilding roguelike, escape-room style puzzles, and psychological horror into a blood-laced smoothie. darker still are the secrets inscrybed upon the cards... unpacking the viral game with over 14,000 sounds somehow turned the painstaking task of unpacking boxes into an experience of peace and tranquility. unpacking won both the game developers choice award for best innovation and for best audio. game description: unpacking is a zen game about the familiar experience of pulling possessions out of boxes and fitting them into a new home. part block-fitting puzzle, part home decoration, you are invited to create a satisfying living space while learning clues about the life you're unpacking. over the course of eight house moves, you are given a chance to experience a sense of intimacy with a character you never see and a story you're never told. papetura the game i am most excited about is papetura, winners of igf’s excellence in visual art award. the mysterious and artistically quirky world is an absolute pleasure for the eyes, playing out in a real-life, stop-motion world. game description: papetura is an atmospheric point & click adventure game, handcrafted entirely out of paper. little creatures pape and tura will face monsters that will try to burn down their beloved paper world. closing these are just a few of the many highlights i experienced during gdc this past year. explore the gdc vault for yourself to experience gdc 2022 and impact the game developer community with whatever your expertise may be. see you at gdc 2023, march 20-24 in san francisco! official conference photos were made available via the gdc flickr account: www.flickr.com/photos/officialgdc. learn more about gaming trends and samsung’s participation at this year’s game developers conference here. be sure to also follow us on @samsung_dev to keep up-to-date on the latest developer news, and keep an eye on our blogs for other helpful resources. you can also sign up for the samsung developer program to take advantage of exclusive benefits and access helpful developer resources.
Tony Morelan
events iot, health, game, design, mobile, galaxy watch, foldable
blogthe samsung developer conference 2023 (sdc23) happened on october 5, 2023, at moscone north in san francisco and online. among the many exciting activities at the conference for developers and tech enthusiasts, code lab offered a unique opportunity to learn about the latest samsung sdks and tools. code lab is a hands-on learning experience, providing participants with a platform to explore the diverse world of samsung development. code lab activities are accessible for developers of all skill levels and interests, ensuring that everyone, from beginners to experts, can find something exciting to explore. covering a wide array of topics within the code lab, the conference catered to the diverse interests of the participants. here's a quick look at some of the sdc23 topics: 1. smartthings participants had the chance to build a matter iot app using the smartthings home api and create virtual devices that they could control using the smartthings app or their own iot apps. they also learned how to develop a smartthings find-compatible device. these topics are all about connecting and enhancing the smart home experience. 2. galaxy z participants, who are interested in foldable technology, were able to develop a widget for the flex window. this topic opens new possibilities in app design and user interaction. 3. samsung wallet participants learned to integrate the "add to samsung wallet" button into sample partner services. they also learned to implement in-app payment into a sample merchant app using the samsung pay sdk. these topics focus on enhancing the mobile wallet experience for samsung users. 4. gamedev game developers and enthusiasts had the opportunity to optimize game performance with adaptive performance in unity. they also learned to implement flex mode into unity games for foldable phones. these topics offer insights into the gaming industry's latest trends and technologies. 5. watch face studio code lab also provided an activity for participants to create a watch face design with customized styles using watch face studio. participants also learned how to convert the watch face design for galaxy z flip5's flex window display using the good lock plugin. 6. samsung health the health-focused code lab topics covered measuring skin temperature on galaxy watch and transferring heart rate data from galaxy watch to a mobile device with the samsung privileged health sdk. participants also learned how to create health research apps using the samsung health stack. these topics provide valuable insights into the health and fitness tech landscape. from creating virtual devices to building health-related apps, participants left the conference with new knowledge they could apply to their development projects. the samsung developer conference is a celebration of innovation and collaboration in the tech world. with a diverse range of topics in code lab, participants were equipped with the tools and knowledge to push the boundaries of what is possible in samsung's ecosystem. though sdc23 has ended, the innovation lives on! whether you missed the event or just want to try other activities, you can visit the code lab page anytime, anywhere. we can't wait to see you and the innovations that will emerge from this conference in the coming years. see you at sdc24!
Christopher Marquez
tutorials game
bloggame performance can vary between different android devices, because they use different chipsets, and gpus based on different mali architectures. your game may render at 60fps on a galaxy s20+, but how will it perform on the galaxy a51 5g? the a51 5g has good specs, but you may want to consider runtime changes based on the underlying hardware if your game is pushing the limits on flagship hardware. similarly, you may need to optimize your game to run at lower frame rates on the galaxy j and galaxy m models, which are often found in emerging markets. players quickly lose interest in a game if they experience drops in frame rate, or slow load times. they won’t play your game on long journeys if it drains battery or overheats the device. to reliably deploy a game globally, and ensure a great user experience, you need to performance test on a wide range of android devices. the arm mobile studio family of performance analysis tools provide games studios with a comprehensive game analysis workflow for android, giving information and advice at appropriate levels of detail, for technical artists, graphics developers, performance analysts and project leaders. monitor cpu and gpu activity arm streamline captures a comprehensive profile of your game running on an unrooted android device, and visualizes the cpu and gpu performance counter activity as you run your test scenario. you can see exactly how the cpu and gpu workloads are handled by the device, which helps you locate problem areas that might explain frame rate drops or thermal problems. however, spotting performance issues using streamline can be time-consuming, unless you know exactly what you’re looking for. your team may have varying levels of experience or expertise, so interpreting this data can be difficult. introducing performance advisor arm performance advisor is a lightweight reporting tool that transforms a streamline capture into a simple report that describes how your game performed on the device, and alerts you to problem areas that you should consider optimizing. it can be used by your whole team on a regular basis, to spot trends and diagnose problems early in the development cycle, when you’re best placed to do something about it. performance advisor reports the application frame rate, cpu load and gpu load, as well as content metrics about the workload running on the mali gpu. if it detects problematic areas, performance advisor tells you whether it’s the cpu or gpu that is struggling to process your application, and links to optimization advice to help you rectify it. a frame rate analysis chart shows how the application performed over time. the background color of the chart indicates how the game performed. when you’re hitting your target frame rate, the chart background is green. in this example, most of the chart is blue, telling us the gpu in the device is struggling to process fragment workloads. performance advisor can capture screenshots of your game, at the point that fps drops below a given threshold. this helps you to identify which content might be causing the problem. this provides valuable context when debugging and can allow some common elements to be spotted if repeated slowdowns occur. you can then investigate these frames more closely with graphics analyzer, to see exactly which graphics api calls were executing at that point. if you want to separately evaluate how different parts of the game performed, for example, loading screens, menu selection, and different levels or gameplay scenarios, you can annotate these regions in your game so that performance advisor can report data for them independently. performance budgeting because they have different performance expectations, it’s a good idea to set your own performance budgets for each device. for example, if you know the top frequency for the gpu in the device, and you have a target frame rate, you can calculate the absolute limit of gpu cost per frame. gpu cost per frame = gpu top frequency / target frame rate when you generate a report with performance advisor, you can pass in your performance budgets, which are then shown in the charts, so you can easily see if you’ve broken one. in the example below, we can see correlation between high numbers of execution engine cycles and drops in fps. performance advisor tells us that the gpu is busy with arithmetic operations, and that the shaders could be too complex. the report provides a link to an advice page on the arm developer website, that explains how to reduce arithmetic load in shaders. more charts include key performance metrics such as cpu cycles per frame and gpu bandwidth per frame, reported for read and write access. there are also charts showing the content workload , draw calls, primitives and pixels per frame, and the level of overdraw per pixel. download an example performance advisor report automated performance analysis it’s far easier to fix problems as they arise than is it to patch problems later on. performance advisor’s key application performance metrics are useful to monitor over daily runs, to see how changes to your application affect performance during development. arm mobile studio professional includes headless ci support - so you can easily deploy large-scale automated performance testing across multiple devices. using a device farm with a ci workflow, you can generate performance data and optimization advice automatically, every night, for several android devices. as you check in code, you can easily monitor how your content performs against your performance budgets over time, and raise alerts when you start to approach or break those budgets. the professional edition also enables you to build bespoke data dashboards from the data that been collected. performance advisor's machine-readable json reports can be imported into any json-compatible database and visualization platform, such as the elk stack. compare metrics between test runs to quickly determine which changes impacted performance, and which type of workload is the likely cause for a regression. query the data and compare performance against specific targets to identify optimization next steps. read more about how to integrate arm mobile studio into a ci workflow on the arm developer website. resources arm publishes various resources on their developer website, to help you optimize performance: optimization advice – quick reference to help you avoid common problems. mali best practices guide – comprehensive guide describing in detail how to ensure your content runs well on mali gpus. developer guides such as those for technical artists, covering best practises for geometry, textures, materials and shaders. download the mali gpu datasheet to see the different features and capabilities of arm mali gpus from the midgard-based mali-t720, to the latest valhall-based mali-g78. for detailed descriptions of all the performance counters you can analyze in each mali gpu refer to the mali gpu counter reference. get arm mobile studio arm mobile studio is free to use for interactive performance analysis. to use it headlessly in your ci workflow, you need an arm mobile studio professional license. download arm mobile studio
Arm Developer
tutorials game, mobile
blogthe samsung developers team works with many companies in the mobile and gaming ecosystems. we're excited to support our partner, arm, as they bring timely and relevant content to developers looking to build games and high-performance experiences. this vulkan extensions series will help developers get the most out of the new and game-changing vulkan extensions on samsung mobile devices. as i mentioned previously, android is enabling a host of useful new vulkan extensions for mobile. these new extensions are set to improve the state of graphics apis for modern applications, enabling new use cases and changing how developers can design graphics renderers going forward. these extensions will be available across various android smartphones, including the new samsung galaxy s21, which was recently launched on 14 january. existing samsung galaxy s models, such as the samsung galaxy s20, also allow upgrades to android r. i have already discussed two of these extensions in previous blogs - maintenance extensions and legacy support extensions. however, there are three further vulkan extensions for android that i believe are ‘game changers’. in the first of three blogs, i will explore these individual game changer extensions – what they do, why they can be useful and how to use them. the goal here is to not provide complete samples, but there should be enough to get you started. the first vulkan extension is ‘descriptor indexing.’ descriptor indexing can be available in handsets prior to android r release. to check what android devices are available with 'descriptor indexing' check here. you can also directly view the khronos group/ vulkan samples that are relevant to this blog here. vk_ext_descriptor_indexing introduction in recent years, we have seen graphics apis greatly evolve in their resource binding flexibility. all modern graphics apis now have some answer to how we can access a large swathes of resources in a shader. bindless a common buzzword that is thrown around in modern rendering tech is “bindless”. the core philosophy is that resources like textures and buffers are accessed through simple indices or pointers, and not singular “resource bindings”. to pass down resources to our shaders, we do not really bind them like in the graphics apis of old. simply write a descriptor to some memory and a shader can come in and read it later. this means the api machinery to drive this is kept to a minimum. this is a fundamental shift away from the older style where our rendering loop looked something like: render_scene() { foreach(drawable) { command_buffer->update_descriptors(drawable); command_buffer->draw(); } } now it looks more like: render_scene() { command_buffer->bind_large_descriptor_heap(); large_descriptor_heap->write_global_descriptors(scene, lighting, shadowmaps); foreach(drawable) { offset = large_descriptor_heap->allocate_and_write_descriptors(drawable); command_buffer->push_descriptor_heap_offsets(offset); command_buffer->draw(); } } since we have free-form access to resources now, it is much simpler to take advantage of features like multi-draw or other gpu driven approaches. we no longer require the cpu to rebind descriptor sets between draw calls like we used to. going forward when we look at ray-tracing, this style of design is going to be mandatory since shooting a ray means we can hit anything, so all descriptors are potentially used. it is useful to start thinking about designing for this pattern going forward. the other side of the coin with this feature is that it is easier to shoot yourself in the foot. it is easy to access the wrong resource, but as i will get to later, there are tools available to help you along the way. vk_ext_descriptor_indexing features this extension is a large one and landed in vulkan 1.2 as a core feature. to enable bindless algorithms, there are two major features exposed by this extension. non-uniform indexing of resources how resources are accessed has evolved quite a lot over the years. hardware capabilities used to be quite limited, with a tiny bank of descriptors being visible to shaders at any one time. in more modern hardware however, shaders can access descriptors freely from memory and the limits are somewhat theoretical. constant indexing arrays of resources have been with us for a long time, but mostly as syntactic sugar, where we can only index into arrays with a constant index. this is equivalent to not using arrays at all from a compiler point of view. layout(set = 0, binding = 0) uniform sampler2d textures[4]; const int constant_value = 2; color = texture(textures[constant_value], uv); hlsl in d3d11 has this restriction as well, but it has been more relaxed about it, since it only requires that the index is constant after optimization passes are run. dynamic indexing as an optional feature, dynamic indexing allows applications to perform dynamic indexing into arrays of resources. this allows for a very restricted form of bindless. outside compute shaders however, using this feature correctly is quite awkward, due to the requirement of the resource index being dynamically uniform. dynamically uniform is a somewhat intricate subject, and the details are left to the accompanying sample in khronosgroup/vulkan-samples. non-uniform indexing most hardware assumes that the resource index is dynamically uniform, as this has been the restriction in apis for a long time. if you are not accessing resources with a dynamically uniform index, you must notify the compiler of your intent. the rationale here is that hardware is optimized for dynamically uniform (or subgroup uniform) indices, so there is often an internal loop emitted by either compiler or hardware to handle every unique index that is used. this means performance tends to depend a bit on how divergent resource indices are. #extension gl_ext_nonuniform_qualifier : require layout(set = 0, binding = 0) uniform texture2d tex[]; layout(set = 1, binding = 0) uniform sampler sampler; color = texture(nonuniformext(sampler2d(tex[index], sampler)), uv); in hlsl, there is a similar mechanism where you use nonuniformresourceindex, for example. texture2d<float4> textures[] : register(t0, space0); samplerstate samp : register(s0, space0); float4 color = textures[nonuniformresourceindex(index)].sample(samp, uv); all descriptor types can make use of this feature, not just textures, which is quite handy! the nonuniformext qualifier removes the requirement to use dynamically uniform indices. see the code sample for more detail. update-after-bind a key component to make the bindless style work is that we do not have to … bind descriptor sets all the time. with the update-after-bind feature, we effectively block the driver from consuming descriptors at command recording time, which gives a lot of flexibility back to the application. the shader consumes descriptors as they are used and the application can freely update descriptors, even from multiple threads. to enable, update-after-bind we modify the vkdescriptorsetlayout by adding new binding flags. the way to do this is somewhat verbose, but at least update-after-bind is something that is generally used for just one or two descriptor set layouts throughout most applications: vkdescriptorsetlayoutcreateinfo info = { … }; info.flags = vk_descriptor_set_layout_create_update_after_bind_pool_bit_ext; const vkdescriptorbindingflagsext flags = vk_descriptor_binding_variable_descriptor_count_bit_ext | vk_descriptor_binding_partially_bound_bit_ext | vk_descriptor_binding_update_after_bind_bit_ext | vk_descriptor_binding_update_unused_while_pending_bit_ext; vkdescriptorsetlayoutbindingflagscreateinfoext binding_flags = { … }; binding_flags.bindingcount = info.bindingcount; binding_flags.pbindingflags = &flags; info.pnext = &binding_flags; for each pbinding entry, we have a corresponding flags field where we can specify various flags. the descriptor_indexing extension has very fine-grained support, but update_after_bind_bit and variable_descriptor_count_bit are the most interesting ones to discuss. variable_descriptor_count deserves special attention as it makes descriptor management far more flexible. having to use a fixed array size can be somewhat awkward, since in a common usage pattern with a large descriptor heap, there is no natural upper limit to how many descriptors we want to use. we could settle for some arbitrarily high limit like 500k, but that means all descriptor sets we allocate have to be of that size and all pipelines have to be tied to that specific number. this is not necessarily what we want, and variable_descriptor_count allows us to allocate just the number of descriptors we need per descriptor set. this makes it far more practical to use multiple bindless descriptor sets. when allocating a descriptor set, we pass down the actual number of descriptors to allocate: vkdescriptorsetvariabledescriptorcountallocateinfoext variable_info = { … }; variable_info.stype = vk_structure_type_descriptor_set_variable_descriptor_count_allocate_info_ext; variable_info.descriptorsetcount = 1; allocate_info.pnext = &variable_info; variable_info.pdescriptorcounts = &numdescriptorsstreaming; vk_check(vkallocatedescriptorsets(get_device().get_handle(), &allocate_info, &descriptors.descriptor_set_update_after_bind)); gpu-assisted validation and debugging when we enter the world of descriptor indexing, there is a flipside where debugging and validation is much more difficult. the major benefit of the older binding models is that it is fairly easy for validation layers and debuggers to know what is going on. this is because the number of available resources to a shader is small and focused. with update_after_bind in particular, we do not know anything at draw time, which makes this awkward. it is possible to enable gpu assisted validation in the khronos validation layers. this lets you catch issues like: "unassigned-descriptor uninitialized: validation error: [ unassigned-descriptor uninitialized ] object 0: handle = 0x55625acf5600, type = vk_object_type_queue; | messageid = 0x893513c7 | descriptor index 67 is uninitialized__. command buffer (0x55625b184d60). draw index 0x4. pipeline (0x520000000052). shader module (0x510000000051). shader instruction index = 59. stage = fragment. fragment coord (x,y) = (944.5, 0.5). unable to find spir-v opline for source information. build shader with debug info to get source information." or: "unassigned-descriptor uninitialized: validation error: [ unassigned-descriptor uninitialized ] object 0: handle = 0x55625acf5600, type = vk_object_type_queue; | messageid = 0x893513c7 | descriptor index 131 is uninitialized__. command buffer (0x55625b1893c0). draw index 0x4. pipeline (0x520000000052). shader module (0x510000000051). shader instruction index = 59. stage = fragment. fragment coord (x,y) = (944.5, 0.5). unable to find spir-v opline for source information. build shader with debug info to get source information." renderdoc supports debugging descriptor indexing through shader instrumentation, and this allows you to inspect which resources were accessed. when you have several thousand resources bound to a pipeline, this feature is critical to make any sense of the inputs. if we are using the update-after-bind style, we can inspect the exact resources we used. in a non-uniform indexing style, we can inspect all unique resources we used. conclusion descriptor indexing unlocks many design possibilities in your engine and is a real game changer for modern rendering techniques. use with care, and make sure to take advantage of all debugging tools available to you. you need them. this blog has explored the first vulkan extension game changer, with two more parts in this game changer blog series still to come. the next part will focus on ‘buffer device address’ and how developers can use this new feature to enhance their games. follow up thanks to hans-kristian arntzen and the team at arm for bringing this great content to the samsung developers community. we hope you find this information about vulkan extensions useful for developing your upcoming mobile games. the original version of this article can be viewed at arm community. the samsung developers 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 and games. finally, our developer forum is an excellent way to stay up-to-date on all things related to the galaxy ecosystem.
Arm Developers
tutorials game, mobile
blogthe samsung developers team works with many companies in the mobile and gaming ecosystems. we're excited to support our friends, arm, as they bring timely and relevant content to developers looking to build games and high-performance experiences. this best practices series will help developers get the most out of the 3d hardware on samsung mobile devices. developing games is a true cross-disciplinary experience for developers, requiring both technical and creative skills to bring their gaming project to life. but all too often, the performance and visual needs of a project can be at odds. leading technology provider of processor ip, arm has developed artists’ best practices for mobile game development where game developers learn tips on creating performance-focused 3d assets, 2d assets, and scenes for mobile applications. before you cut those stunning visuals, get maximum benefit from arm's best practices by reviewing these four topics: geometry, texturing, materials and shaders, and lighting. geometry to get a project performing well on as many devices as possible, the geometry consideration of a game should be taken seriously and optimized as much as possible. this section identifies what you need to know about using geometry properly on mobile devices. on mobile, how you use vertices matters more then almost any other platform. tips around how to avoid micro triangles and long thin triangles are great first steps in gaining performance. the next big step is to use level of details (lod). an lod system uses a lower-poly version of the model as an object moves further away from the camera. this helps keep the vertex count down and gives control over how objects look far away to the artist. this otherwise would be left to the gpu, trying its best to render a high number of vertices in only a few pixels, costing the performance of the project. to learn more, check real-time 3d art best practices: geometry. texturing textures make up 2d ui and are also mapped to the surface of 3d objects. learning about texturing best practices can bring big benefits to your game! even a straightforward technique such as texture aliasing, where you build multiple smaller textures into one larger texture, can bring a major performance gain for a project. you should understand what happens to a texture when the application runs. when the texture is exported, the common texture format is a png, jpg, or tga file. however, when the application is running, each texture is converted to specific compression formats that are designed to be read faster on the gpu. using the astc texture compression option not only helps your project’s performance, but also lets your textures look better. to learn other texturing best practices, such as texture filtering and channel packing, check real-time 3d art best practices: texturing. materials and shaders materials and shaders determine how 3d objects and visual effects appear on the screen. become familiar with what they do and how to optimize them. pair materials with texture atlas’s, allowing multiple objects in the same scene to share textures and materials. the game engine batches this object when drawing them to screen, saving bandwidth and increasing performance. when choosing shaders, use the simplest shader possible (like unlit) and avoid using unnecessary features. if you are authoring shaders, avoid complicated match operations (like sin, pow, cos, and noise). if you are in doubt about your shaders’ performance, arm provides tools to perform profiling on your shaders with the mali offline shader compiler. there is a lot more to learn, so check out real-time 3d art best practices: materials and shaders for more information. lighting in most games, lighting can be one of the most critical parts of a visual style. lighting can set the mood, lead game play, and identify threats and objectives. this can make or break the visuals of a game. but lighting can quickly be at odds with the performance needs of the project. to help avoid this hard choice, learn about the difference between static and dynamic light, optimization of light, how to fake lighting, and the benefits of the different type and settings of lights. often on mobile, it is worth faking as much as possible when it comes to shadows. real time shadows are expensive! dynamic objects often try using a 3d mesh, plane, or quad with a dark shadow texture for a shadow rather than resorting to dynamic lights. for dynamic game objects, where you cannot fake lighting, use light probes. these have the same benefits of light maps and can be calculated offline. a light probe stores the light that passes through empty space in your scene. this data can then be used to light dynamic objects, which helps integrate them visually with lightmapped objects throughout your scene. lighting is a large topic with lots of possible optimizations. read more at real-time 3d art best practices in unity: lighting. arm and samsung devices arm’s cortex-a cpus and mali gpus power the world’s smartphones, with mali gpus powering mobile graphics. this means you can find arm gpus in an extensive list of popular samsung devices, including the samsung galaxy a51 and galaxy s21. arm provides practical tips and advice for teams developing real time 3d or 2d content for arm-based devices. mobile game performance analysis has never been more important every year mobile gaming grows! it is now worth 77.2 billion us dollars in revenue in 2020. growth in this sector is expected to continue in 2021 and beyond. with more mobile devices coming out each year, it is important for your content to be able to run on as many devices as possible, while providing players with the best possible experience. the artist best practices is just one part of the educational materials from arm. alongside these best practices, you can explore the unity learn course, arm & unity presents: 3d art optimization for mobile applications. this course includes a downloadable project that shows off the many benefits of using the best practices. for more advanced users, check out arm’s mali gpu best practices guide and learn about performance analysis with arm mobile studio. follow up thanks to joe rozek and the team at arm for bringing these great ideas to the samsung developers community. we hope you put these best practices into effect on your upcoming mobile games. the samsung developers 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 and games. finally, our developer forum is an excellent way to stay up-to-date on all things related to the galaxy ecosystem.
Arm Developers
tutorials game, mobile
blogthe samsung developers team works with many companies in the mobile and gaming ecosystems. we're excited to support our partner, arm, as they bring timely and relevant content to developers looking to build games and high-performance experiences. this vulkan extensions series will help developers get the most out of the new and game-changing vulkan extensions on samsung mobile devices. android is enabling a host of useful new vulkan extensions for mobile. these new extensions are set to improve the state of graphics apis for modern applications, enabling new use cases and changing how developers can design graphics renderers going forward. in particular, in android r, there has been a whole set of vulkan extensions added. these extensions will be available across various android smartphones, including the samsung galaxy s21, which was recently launched on 14 january. existing samsung galaxy s models, such as the samsung galaxy s20, also allow upgrades to android r. one of these new vulkan extensions for mobile are ‘maintenance extensions’. these plug up various holes in the vulkan specification. mostly, a lack of these extensions can be worked around, but it is annoying for application developers to do so. having these extensions means less friction overall, which is a very good thing. vk_khr_uniform_buffer_standard_layout this extension is a quiet one, but i still feel it has a lot of impact since it removes a fundamental restriction for applications. getting to data efficiently is the lifeblood of gpu programming. one thing i have seen trip up developers again and again are the antiquated rules for how uniform buffers (ubo) are laid out in memory. for whatever reason, ubos have been stuck with annoying alignment rules which go back to ancient times, yet ssbos have nice alignment rules. why? as an example, let us assume we want to send an array of floats to a shader: #version 450 layout(set = 0, binding = 0, std140) uniform ubo { float values[1024]; }; layout(location = 0) out vec4 fragcolor; layout(location = 0) flat in int vindex; void main() { fragcolor = vec4(values[vindex]); } if you are not used to graphics api idiosyncrasies, this looks fine, but danger lurks around the corner. any array in a ubo will be padded out to have 16 byte elements, meaning the only way to have a tightly packed ubo is to use vec4 arrays. somehow, legacy hardware was hardwired for this assumption. ssbos never had this problem. std140 vs std430 you might have run into these weird layout qualifiers in glsl. they reference some rather old glsl versions. std140 refers to glsl 1.40, which was introduced in opengl 3.1, and it was the version uniform buffers were introduced to opengl. the std140 packing rules define how variables are packed into buffers. the main quirks of std140 are: vectors are aligned to their size. notoriously, a vec3 is aligned to 16 bytes, which have tripped up countless programmers over the years, but this is just the nature of vectors in general. hardware tends to like aligned access to vectors. array element sizes are aligned to 16 bytes. this one makes it very wasteful to use arrays of float and vec2. the array quirk mirrors hlsl’s cbuffer. after all, both opengl and d3d mapped to the same hardware. essentially, the assumption i am making here is that hardware was only able to load 16 bytes at a time with 16 byte alignment. to extract scalars, you could always do that after the load. std430 was introduced in glsl 4.30 in opengl 4.3 and was designed to be used with ssbos. std430 removed the array element alignment rule, which means that with std430, we can express this efficiently: #version 450 layout(set = 0, binding = 0, std430) readonly buffer ssbo { float values[1024]; }; layout(location = 0) out vec4 fragcolor; layout(location = 0) flat in int vindex; void main() { fragcolor = vec4(values[vindex]); } basically, the new extension enables std430 layout for use with ubos as well. #version 450 #extension gl_ext_scalar_block_layout : require layout(set = 0, binding = 0, std430) uniform ubo { float values[1024]; }; layout(location = 0) out vec4 fragcolor; layout(location = 0) flat in int vindex; void main() { fragcolor = vec4(values[vindex]); } why not just use ssbos then? on some architectures, yes, that is a valid workaround. however, some architectures also have special caches which are designed specifically for ubos. improving memory layouts of ubos is still valuable. gl_ext_scalar_block_layout? the vulkan glsl extension which supports std430 ubos goes a little further and supports the scalar layout as well. this is a completely relaxed layout scheme where alignment requirements are essentially gone, however, that requires a different vulkan extension to work. vk_khr_separate_depth_stencil_layouts depth-stencil images are weird in general. it is natural to think of these two aspects as separate images. however, the reality is that some gpu architectures like to pack depth and stencil together into one image, especially with d24s8 formats. expressing image layouts with depth and stencil formats have therefore been somewhat awkward in vulkan, especially if you want to make one aspect read-only and keep another aspect as read/write, for example. in vulkan 1.0, both depth and stencil needed to be in the same image layout. this means that you are either doing read-only depth-stencil or read/write depth-stencil. this was quickly identified as not being good enough for certain use cases. there are valid use cases where depth is read-only while stencil is read/write in deferred rendering for example. eventually, vk_khr_maintenance2 added support for some mixed image layouts which lets us express read-only depth, read/write stencil, and vice versa: vk_image_layout_depth_attachment_stencil_read_only_optimal_khr vk_image_layout_depth_read_only_stencil_attachment_optimal_khr usually, this is good enough, but there is a significant caveat to this approach, which is that depth and stencil layouts must be specified and transitioned together. this means that it is not possible to render to a depth aspect, while transitioning the stencil aspect concurrently, since changing image layouts is a write operation. if the engine is not designed to couple depths and stencil together, it causes a lot of friction in implementation. what this extension does is completely decouple image layouts for depth and stencil aspects and makes it possible to modify the depth or stencil image layouts in complete isolation. for example: vkimagememorybarrier barrier = {…}; normally, we would have to specify both depth and stencil aspects for depth-stencil images. now, we can completely ignore what stencil is doing and only modify depth image layout. barrier.subresourcerange.aspectmask = vk_image_aspect_depth_bit; barrier.oldlayout = vk_image_layout_depth_attachment_optimal_khr; barrier.newlayout = vk_image_layout_depth_read_only_optimal; similarly, in vk_khr_create_renderpass2, there are extension structures where you can specify stencil layouts separately from the depth layout if you wish. typedef struct vkattachmentdescriptionstencillayout { vkstructuretype stype; void* pnext; vkimagelayout stencilinitiallayout; vkimagelayout stencilfinallayout; } vkattachmentdescriptionstencillayout; typedef struct vkattachmentreferencestencillayout { vkstructuretype stype; void* pnext; vkimagelayout stencillayout; } vkattachmentreferencestencillayout; like image memory barriers, it is possible to express layout transitions that only occur in either depth or stencil attachments. vk_khr_spirv_1_4 each core vulkan version has targeted a specific spir-v version. for vulkan 1.0, we have spir-v 1.0. for vulkan 1.1, we have spir-v 1.3, and for vulkan 1.2 we have spir-v 1.5. spir-v 1.4 was an interim version between vulkan 1.1 and 1.2 which added some nice features, but the usefulness of this extension is largely meant for developers who like to target spir-v themselves. developers using glsl or hlsl might not find much use for this extension. some highlights of spir-v 1.4 that i think are worth mentioning are listed here. opselect between composite objects opselect before spir-v 1.4 only supports selecting between scalars and vectors. spir-v 1.4 thus allows you to express this kind of code easily with a simple opselect: mystruct s = cond ? mystruct(1, 2, 3) : mystruct(4, 5, 6); opcopylogical there are scenarios in high-level languages where you load a struct from a buffer and then place it in a function variable. if you have ever looked at spir-v code for this kind of scenario, glslang would copy each element of the struct one by one, which generates bloated spir-v code. this is because the struct type that lives in a buffer and a struct type for a function variable are not necessarily the same. offset decorations are the major culprits here. copying objects in spir-v only works when the types are exactly the same, not “almost the same”. opcopylogical fixes this problem where you can copy objects of types which are the same except for decorations. advanced loop control hints spir-v 1.4 adds ways to express partial unrolling, how many iterations are expected, and such advanced hints, which can help a driver optimize better using knowledge it otherwise would not have. there is no way to express these in normal shading languages yet, but it does not seem difficult to add support for it. explicit look-up tables describing look-up tables was a bit awkward in spir-v. the natural way to do this in spir-v 1.3 is to declare an array with private storage scope with an initializer, access chain into it and load from it. however, there was never a way to express that a global variable is const, which relies on compilers to be a little smart. as a case study, let us see what glslang emits when using vulkan 1.1 target environment: #version 450 layout(location = 0) out float fragcolor; layout(location = 0) flat in int vindex; const float lut[4] = float[](1.0, 2.0, 3.0, 4.0); void main() { fragcolor = lut[vindex]; } %float_1 = opconstant %float 1 %float_2 = opconstant %float 2 %float_3 = opconstant %float 3 %float_4 = opconstant %float 4 %16 = opconstantcomposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4 this is super weird code, but it is easy for compilers to promote to a lut. if the compiler can prove there are no readers before the opstore, and only one opstore can statically happen, compiler can optimize it to const lut. %indexable = opvariable %_ptr_function__arr_float_uint_4 function opstore %indexable %16 %24 = opaccesschain %_ptr_function_float %indexable %index %25 = opload %float %24 in spir-v 1.4, the nonwritable decoration can also be used with private and function storage variables. add an initializer, and we get something that looks far more reasonable and obvious: opdecorate %indexable nonwritable %16 = opconstantcomposite %_arr_float_uint_4 %float_1 %float_2 %float_3 %float_4 // initialize an array with a constant expression and mark it as nonwritable. // this is trivially a lut. %indexable = opvariable %_ptr_function__arr_float_uint_4 function %16 %24 = opaccesschain %_ptr_function_float %indexable %index %25 = opload %float %24 vk_khr_shader_subgroup_extended_types this extension fixes a hole in vulkan subgroup support. when subgroups were introduced, it was only possible to use subgroup operations on 32-bit values. however, with 16-bit arithmetic getting more popular, especially float16, there are use cases where you would want to use subgroup operations on smaller arithmetic types, making this kind of shader possible: #version 450 // subgroupadd #extension gl_khr_shader_subgroup_arithmetic : require for fp16 arithmetic: #extension gl_ext_shader_explicit_arithmetic_types_float16 : require for subgroup operations on fp16: #extension gl_ext_shader_subgroup_extended_types_float16 : require layout(location = 0) out f16vec4 fragcolor; layout(location = 0) in f16vec4 vcolor; void main() { fragcolor = subgroupadd(vcolor); } vk_khr_imageless_framebuffer in most engines, using vkframebuffer objects can feel a bit awkward, since most engine abstractions are based around some idea of: myrenderapi::bindrendertargets(colorattachments, depthstencilattachment) in this model, vkframebuffer objects introduce a lot of friction, since engines would almost certainly end up with either one of two strategies: create a vkframebuffer for every render pass, free later. maintain a hashmap of all observed attachment and render-pass combinations. unfortunately, there are some … reasons why vkframebuffer exists in the first place, but vk_khr_imageless_framebuffer at least removes the largest pain point. this is needing to know the exact vkimageviews that we are going to use before we actually start rendering. with imageless frame buffers, we can defer the exact vkimageviews we are going to render into until vkcmdbeginrenderpass. however, the frame buffer itself still needs to know about certain metadata ahead of time. some drivers need to know this information unfortunately. first, we set the vk_framebuffer_create_imageless_bit flag in vkcreateframebuffer. this removes the need to set pattachments. instead, we specify some parameters for each attachment. we pass down this structure as a pnext: typedef struct vkframebufferattachmentscreateinfo { vkstructuretype stype; const void* pnext; uint32_t attachmentimageinfocount; const vkframebufferattachmentimageinfo* pattachmentimageinfos; } vkframebufferattachmentscreateinfo; typedef struct vkframebufferattachmentimageinfo { vkstructuretype stype; const void* pnext; vkimagecreateflags flags; vkimageusageflags usage; uint32_t width; uint32_t height; uint32_t layercount; uint32_t viewformatcount; const vkformat* pviewformats; } vkframebufferattachmentimageinfo; essentially, we need to specify almost everything that vkcreateimage would specify. the only thing we avoid is having to know the exact image views we need to use. to begin a render pass which uses imageless frame buffer, we pass down this struct in vkcmdbeginrenderpass instead: typedef struct vkrenderpassattachmentbegininfo { vkstructuretype stype; const void* pnext; uint32_t attachmentcount; const vkimageview* pattachments; } vkrenderpassattachmentbegininfo; conclusions overall, i feel like this extension does not really solve the problem of having to know images up front. knowing the resolution, usage flags of all attachments up front is basically like having to know the image views up front either way. if your engine knows all this information up-front, just not the exact image views, then this extension can be useful. the number of unique vkframebuffer objects will likely go down as well, but otherwise, there is in my personal view room to greatly improve things. in the next blog on the new vulkan extensions, i explore 'legacy support extensions.' follow up thanks to hans-kristian arntzen and the team at arm for bringing this great content to the samsung developers community. we hope you find this information about vulkan extensions useful for developing your upcoming mobile games. the samsung developers 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 and games. finally, our developer forum is an excellent way to stay up-to-date on all things related to the galaxy ecosystem.
Arm Developers
We use cookies to improve your experience on our website and to show you relevant advertising. Manage you settings for our cookies below.
These cookies are essential as they enable you to move around the website. This category cannot be disabled.
These cookies collect information about how you use our website. for example which pages you visit most often. All information these cookies collect is used to improve how the website works.
These cookies allow our website to remember choices you make (such as your user name, language or the region your are in) and tailor the website to provide enhanced features and content for you.
These cookies gather information about your browser habits. They remember that you've visited our website and share this information with other organizations such as advertisers.
You have successfully updated your cookie preferences.